Merge branches 'upstream-hidpi' and 'upstream-custom' into dev

This commit is contained in:
Yingjie Wang 2024-05-05 16:41:45 -04:00
commit 90c646a8fe
92 changed files with 1213 additions and 125 deletions

View File

@ -37,8 +37,15 @@ alias rw='~/dotfiles/waybar/reload.sh'
alias winclass="xprop | grep 'CLASS'"
alias dot="cd ~/dotfiles"
alias cleanup='~/dotfiles/scripts/cleanup.sh'
# -----------------------------------------------------
# ML4W Apps
# -----------------------------------------------------
alias ml4w='~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage'
alias ml4w-settings='~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage'
alias ml4w-sidebar='~/dotfiles/eww/ml4w-sidebar/launch.sh'
alias ml4w-hyprland='~/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage'
alias ml4w-diagnosis='~/dotfiles/scripts/diagnosis.sh'
# -----------------------------------------------------
# Window Managers

View File

@ -21,4 +21,12 @@ sed -i "s|HOME|${HOME}|g" $HOME/dotfiles/apps/ml4w-dotfiles-settings.desktop
cp $HOME/dotfiles/apps/ml4w-dotfiles-settings.desktop $HOME/.local/share/applications
echo ":: ML4W Dotfiles Settings App installed successfully"
echo
sed -i "s|HOME|${HOME}|g" $HOME/dotfiles/apps/ml4w-hyprland-settings.desktop
cp $HOME/dotfiles/apps/ml4w-hyprland-settings.desktop $HOME/.local/share/applications
echo ":: ML4W Hyprland Settings App installed successfully"
echo
if [ -f ~/.config/ml4w-hyprland-settings/hyprctl.sh ] ;then
echo ":: Starting restore from ML4W Hyprland Settings App"
~/.config/ml4w-hyprland-settings/hyprctl.sh
fi
echo

View File

@ -44,6 +44,9 @@ if [ -d ~/dotfiles ] || ! test -L ~/.bashrc || [ -d ~/.config/hypr ] || [ -d ~/.
if ! test -L ~/.config/hypr && [ -d ~/.config/hypr ] ;then
echo " - $HOME/.config/hypr/"
fi
if ! test -L ~/.config/ml4w-hyprland-settings && [ -d ~/.config/ml4w-hyprland-settings ] ;then
echo " - $HOME/.config/ml4w-hyprland-settings/"
fi
if ! test -L ~/.config/rofi && [ -d ~/.config/rofi ] ;then
echo " - $HOME/.config/rofi/"
fi
@ -107,6 +110,10 @@ if [ -d ~/dotfiles ] || ! test -L ~/.bashrc || [ -d ~/.config/hypr ] || [ -d ~/.
cp -r ~/.config/hypr ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/hypr created in ~/dotfiles-versions/backup/config/"
fi
if ! test -L ~/.config/ml4w-hyprland-settings && [ -d ~/.config/ml4w-hyprland-settings ] ;then
cp -r ~/.config/ml4w-hyprland-settings ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/ml4w-hyprland-settings created in ~/dotfiles-versions/backup/config/"
fi
if ! test -L ~/.config/qtile && [ -d ~/.config/rofi ] ;then
cp -r ~/.config/rofi ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/rofi created in ~/dotfiles-versions/backup/config/"

View File

@ -36,6 +36,13 @@ if [ -d ~/dotfiles/hypr/settings/ ] ;then
echo ":: ~/dotfiles/hypr/settings removed."
fi
if [ -f ~/dotfiles/.settings/eww-monitor.sh ] ;then
if grep -q "echo" $HOME/dotfiles/.settings/eww-monitor.sh ; then
rm ~/dotfiles/.settings/eww-monitor.sh
echo ":: ~/dotfiles/.settings/eww-monitor.sh removed."
fi
fi
# Create default folder structure
xdg-user-dirs-update
echo

28
.install/diagnosis.sh Normal file
View File

@ -0,0 +1,28 @@
echo -e "${GREEN}"
figlet "System check"
echo -e "${NONE}"
echo "The system check will test that essential packages and "
echo "execution commands are available now on your system."
if gum confirm "Do you want to run a short system check?" ;then
_folderExists "$HOME/dotfiles" "Please repeat the installation."
_commandExists "rofi" "rofi-wayland"
_commandExists "dunst" "dunst"
_commandExists "waybar" "waybar"
_commandExists "hyprpaper" "hyprpaper"
_commandExists "hyprlock" "hyprpaper"
_commandExists "hypridle" "hyprpaper"
_commandExists "wal" "python-pywal"
_commandExists "gum" "gum"
_commandExists "wlogout" "wlogout"
_commandExists "eww" "eww"
_commandExists "magick" "imagemagick"
elif [ $? -eq 130 ]; then
exit 130
else
echo ":: System check skipped"
fi
echo ""

View File

@ -30,25 +30,25 @@ if [ ! -d ~/dotfiles ];then
disman=0
echo "You have already installed a display manager on your system."
echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm")
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm and theme")
else
disman=1
echo "There is no display manager installed on your system."
echo "After the installation/update of the dotfiles, you can start Hyprland with command Hyprland and Qtile with commmand Qtile (or startx)."
echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Install sddm")
dmsel=$(gum choose "Keep current setup" "Install sddm and theme")
fi
else
if [ -f /etc/systemd/system/display-manager.service ]; then
disman=0
echo "You have already installed a display manager. If your display manager is working fine, you can keep the current setup."
echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm")
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm and theme")
else
disman=1
echo "There is no display manager installed on your system. You're starting Hyprland/Qtile with commands on tty."
echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Install sddm")
dmsel=$(gum choose "Keep current setup" "Install sddm and theme")
fi
fi
@ -56,7 +56,7 @@ if [ -z "${dmsel}" ] ;then
echo "Installation canceled."
exit
fi
if [ "$dmsel" == "Install sddm" ] ;then
if [ "$dmsel" == "Install sddm and theme" ] ;then
disman=0
# Try to force the installation of sddm

View File

@ -37,5 +37,8 @@ fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config
fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink eww ~/.config/eww ~/dotfiles/eww/ ~/.config
fi
echo ":: Symbolic links created."
echo
echo

View File

@ -272,4 +272,26 @@ _replaceLineInFile() {
echo "ERROR: Target file not found."
sleep 2
fi
}
# ------------------------------------------------------
# System check
# ------------------------------------------------------
_commandExists() {
package="$1";
if ! type $package > /dev/null 2>&1; then
echo ":: ERROR: $package doesn't exists. Please install it with yay -S $2"
else
echo ":: OK: $package command found."
fi
}
_folderExists() {
folder="$1";
if [ ! -d $folder ]; then
echo ":: ERROR: $folder doesn't exists. $2"
else
echo ":: OK: $folder found."
fi
}

3
.install/neovim.sh Normal file → Executable file
View File

@ -6,7 +6,8 @@ if [ -d ~/dotfiles/nvim ]; then
echo -e "${GREEN}"
figlet "Neovim"
echo -e "${NONE}"
if gum confirm "Do you want to install the ML4W Neovim configuration and overwrite your existing configuration?"; then
echo ":: The script has detected a nvim folder."
if gum confirm "Do you want to install the ML4W Neovim configuration?"; then
echo ":: ML4W Neovim configuration will be installed"
neovim=1
else

View File

@ -17,7 +17,6 @@ packagesPacman=(
"dunst"
"starship"
"mpv"
"freerdp"
"thunar"
"mousepad"
"noto-fonts"
@ -32,6 +31,8 @@ packagesPacman=(
"python-psutil"
"python-rich"
"python-click"
"python-pywal"
"python-gobject"
"pavucontrol"
"tumbler"
"blueman"
@ -52,11 +53,12 @@ packagesPacman=(
"fuse2"
"gtk4"
"libadwaita"
"python-pywal"
"xdg-desktop-portal"
"qalculate-gtk"
"imagemagick"
"guvcview"
"jq"
"rofi-wayland"
);
packagesYay=(
@ -64,5 +66,4 @@ packagesYay=(
"bibata-cursor-theme"
"trizen"
"pacseek"
"rofi-lbonn-wayland"
);

View File

@ -16,4 +16,5 @@ packagesYay=(
"wlogout"
"nwg-look"
"emote"
"eww"
);

View File

@ -28,6 +28,13 @@ if [[ $(_isInstalledYay "swaylock-effects-git") == 0 ]]; then
echo
fi
# Remove rofi-lbonn-wayland
if [[ $(_isInstalledYay "rofi-lbonn-wayland") == 0 ]]; then
yay --noconfirm -Rns rofi-lbonn-wayland
echo ":: rofi-lbonn-wayland removed"
echo
fi
# Remove hypridle-bin
if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then
yay --noconfirm -Rns hypridle-git
@ -40,7 +47,7 @@ if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then
echo
fi
# Remove hypridle-bin
# Remove hyprlock-bin
if [[ $(_isInstalledYay "hyprlock-git") == 0 ]]; then
yay --noconfirm -Rns hyprlock-git
if [ -f /usr/lib/debug/usr/bin/hyprlock.debug ] ;then

View File

@ -8,7 +8,7 @@ monitorrestored=0
_showRestoreOptions() {
echo "The following configurations can be transferred into the new installation."
echo "(SPACE = select/unselect a profile. RETURN = confirm. ESC/No selection = Skip Restore)"
echo "(SPACE = select/unselect a profile. RETURN = confirm. CTRL-C/No selection = Skip Restore)"
echo ""
restorelist=""
if [ -f ~/dotfiles/.bashrc ]; then

View File

@ -1,8 +1,10 @@
if [ "$restored" == "1" ]; then
echo -e "${GREEN}"
figlet "Restore Settings"
echo -e "${NONE}"
python .install/restore.py
if [ -f ~/dotfiles/.settings/settings.json ] ;then
echo -e "${GREEN}"
figlet "Restore Settings"
echo -e "${NONE}"
python .install/restore.py
fi
else
if [ -f ~/dotfiles/.settings/settings.json ] ;then
rm ~/dotfiles/.settings/settings.json

1
.settings/eww-monitor.sh Executable file
View File

@ -0,0 +1 @@
auto

View File

@ -1 +1 @@
swww
hyprpaper

View File

@ -1 +1 @@
2.8.4
2.9

View File

@ -1 +1 @@
2840
2900

View File

@ -1,3 +1,17 @@
Version 2.9
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.9
--------------------------------------------------------
- New Hyprland Settings App. Can be launched from the App Launcher, the ML4W Welcome App or the new ML4W logo context menu (right click)
- Added sidebar menu. Start with click on ML4W Logo in Waybar. Right click starts the welcome app
- Updated hyprlock screen showing the wallpaper in a circle. hyprlock 3 required
- Waybar Taskbar Module hidden by default. Can be enabled again in the ML4W Settings App
- Hyprpaper is now the default wallpaper engine. swww can be activiated
- Animations can be disabled in the Dotfiles Settings app
- Animations can be toggled (enabled/disabled) temporarily with SUPER + SHIFT + A
- Keyboard layout is part of the system information module of waybar
- nm-applet can be started from the ML4W Welcome App menu Settings/System
- New diagnosis features checks that essential command are available. Enter ml4w-diagnosis in a terminal or from the ML4W Welcome App
Version 2.8.4
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.4
--------------------------------------------------------

135
README.md
View File

@ -1,14 +1,16 @@
# ML4W Dotfiles 2.8.4
# ML4W Dotfiles 2.9
An advanced configuration of Hyprland and Qtile for Arch Linux based distributions. This package includes an installation script to install and setup the required components.
[![Screenshot](screenshots/v284/screenshot-284-1.png "Title Text")](screenshots/v283/screenshot-284-1.png)
[![Screenshot](screenshots/v29/screenshot-29-1.png "Screenshot")](screenshots/v29/screenshot-29-1.png)
The ML4W Dotfiles are available as
- main release (Official release): [https://gitlab.com/stephan-raabe/dotfiles](https://gitlab.com/stephan-raabe/dotfiles)
- rolling release (Development release): [https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev](https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev)
YouTube Video [https://youtu.be/HMxHUvN6VGo](https://youtu.be/HMxHUvN6VGo)
[TOC]
# Installation
@ -23,12 +25,12 @@ The dotfiles are tested with the following Arch based distributions:
- Arch Linux (recommended)
- EndeavourOS
- Garuda Linux
- Arco Linux
- Manjaro Linux
The installation should work on all Arch Linux based distributions as well.
> **For Manjaro users:** Hyprland and required components are under ongoing development. That's why it's possible that some packages are not immediatly available on Manjaro e.g., hyprlock or hypridle. But usually, the packages will be published later.
> **For Manjaro users:** Hyprland and required packages are under ongoing development. That's why it could be possible that some packages are not immediatly available on Manjaro. But usually, the packages will be published later. Maybe you can install required packages manually.
> **For Arco Linux users:** Please reinstall/force the installation of all packages during the installation/update process of the install script. The script will also offer to remove ttf-ms-fonts if installed to avoid issues with icons on waybar.
@ -44,25 +46,40 @@ If possible, please create a snapshot of your current system if snapper or Times
The easiest way to install the ML4W Dotfiles is to use the ML4W Dotfiles Installer App.
[You can download the app here.](https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/ML4W_Dotfiles_Installer.AppImage) (Right click + Save link as... into your Downloads Folder)
Or with wget if your starting point is a minimal Arch Linux installation without DE:
[You can download the app here.](https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/installer.AppImage) (Right click + Save link as... into your Downloads Folder)
```
mkdir ~/Downloads # If Downloads folder doesn't exists
wget -P ~/Downloads/ https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/ML4W_Dotfiles_Installer.AppImage
```
```
# Change to the Downloads folder
# 1.) Change to the Downloads folder
cd ~/Downloads
# Make the file executable
chmod +x ML4W_Dotfiles_Installer.AppImage
# 2.) Make the file executable
chmod +x installer.AppImage
# 3.) Start the App from your terminal with
./installer.AppImage
```
Or with download the Installer App with wget if your starting point is a minimal Arch Linux with without DE from tty:
```
# 0.) Install required packages
sudo pacman -S wget fuse2 # Only required for Minimal Arch installations. If wget or libfuse.so.2 is not installed.
# 1.) Create Downloads folder
mkdir ~/Downloads # If Downloads folder doesn't exists
# 2.) Download the installer
wget -P ~/Downloads/ https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/installer.AppImage
# 3.) Change to the Downloads folder
cd ~/Downloads
# 4.) Make the file executable
chmod +x installer.AppImage
# 5.) Start the App from your terminal with
./installer.AppImage
# Start the App from your terminal with
./ML4W_Dotfiles_Installer.AppImage
```
Alternatively you can install with GIT.
@ -182,20 +199,34 @@ All keybindings for Hyprland with right mouse click on Apps in waybar or here:
# Hyprland
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v284/screenshot-284-1.png?ref_type=heads" target="_blank"><img src="screenshots/v284/screenshot-284-1.png" /></a>
[![Screenshot](screenshots/v29/screenshot-29-2.png "Screenshot")](screenshots/v29/screenshot-29-2.png)
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v28/screenshot-28-2.png?ref_type=heads" target="_blank"><img src="screenshots/v28/screenshot-28-2.png" /></a>
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v28/screenshot-28-3.png?ref_type=heads" target="_blank"><img src="screenshots/v28/screenshot-28-3.png" /></a>
[![Screenshot](screenshots/v29/screenshot-29-3.png "Screenshot")](screenshots/v29/screenshot-29-3.png)
<b><a href="https://gitlab.com/stephan-raabe/dotfiles/-/tree/main/screenshots?ref_type=heads">You can find more screenshots here.</a></b>
<a href="https://youtu.be/e9ro_P9rbFk" target="_blank">Watch on YouTube</a>
<a href="https://youtu.be/HMxHUvN6VGo" target="_blank">Watch on YouTube</a>
## ML4W Sidebar
With the ML4W Sidebar you have access to all included ML4W Applications and some system information. In addition, you start the main power features for your system.
You can also start the sidebar from the terminal with
```
ml4w-sidebar
```
<img src="screenshots/screenshot-sidebar.png" />
## ML4W Welcome App
After starting the ML4W dotfiles for the first time, the ML4W Welcome App opens. This app is the starting point to discover the Hyprland setup.
You can also start the Welcome App from the terminal with
```
ml4w
```
<img src="screenshots/screenshot-welcome.app.png" />
The welcome screen includes the most important keybindings to open a terminal or a browser.
@ -233,6 +264,34 @@ You can also edit the file custom.conf which is included at the bottom of the hy
You can find the sourcecode of the ML4W Dotfiles Settings App in this repository:
https://gitlab.com/stephan-raabe/ml4w-dotfiles-settings
You can also start the Dotfiles App from the terminal with
```
ml4w-settings
```
## ML4W Hyprland Settings App
This applications supports you to customize your Hyprland installation. You can overwrite the existing configuration with custom values without adding complex configuration files.
[![Screenshot](screenshots/screenshot-hyprland-settings.png "ML4W Hyprland Settings")](screenshots/screenshot.png)
YOu can start the application from the application launcher, the ML4W Sidebar by clicking the ML4W Logo or from the welcome app.
The app shows variables and current values of your running Hyprland.
You can change the values and overwrite the existing values. The change will be axecuted immediatly.
In the Set Variables tab you can see which values you have overwritten and can restore the old values be removing the entry.
You can also start the Hyprland App from the terminal with
```
ml4w-hyprland
```
You can find the sourcecode of the ML4W Hyprland Settings App in this repository:
https://gitlab.com/stephan-raabe/ml4w-hyprland-settings
## Hyprland Configuration Variations
With configuration variations, you can customize settings and configurations for your Hyprland installation. You can manage, create and edit Hyprland Configuration Variations in the ML4W Dotfiles Settings App.
@ -275,11 +334,11 @@ https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580
- Terminal: alacritty
- Editor: nvim
- Prompt: starship
- Wallpaper: swww or hyprpaper
- Wallpaper: hyprpaper (swww optional)
- Icons: Font Awesome
- Launch Menus: Rofi (Wayland fork)
- Launch Menus: Rofi (Wayland)
- Colorscheme: pywal
- Browsers: chromium (brave optional)
- Browsers: Chromium
- Filemanager: Thunar
- Cursor: Bibata Modern Ice
- Icons: Papirus-Icon-Theme
@ -308,14 +367,14 @@ Included is a pywal configuration that changes the color scheme based on a rando
- Editor: nvim
- Prompt: starship
- Icons: Font Awesome
- Launch Menus: Rofi (Wayland fork)
- Launch Menus: Rofi
- Colorscheme: pywal
- Browsers: chromium (brave optional)
- Browsers: Chromium
- Filemanager: Thunar
- Cursor: Bibata Modern Ice
- Icons: Papirus-Icon-Theme
- Status Bar: Qtile status bar
- Compositor: picom
- Compositor: picom (optional)
- Screenshots: scrot
# Installation/Update with GIT
@ -389,19 +448,25 @@ If you want to install only the core packages of Hyprland as a starting point fo
# Troubleshooting
## Wallpaper issues (grey or distroyed image) with latest swww 0.9.1
The ML4W Welcome App includes a system diagnosis feature available in the menu with the three dots.
Please install the latest version of the ML4W Dotfiles > 2.8.4
Please run the diagnosis to see if all essential packages and related commands are available on your system.
Or replace the swww launch command in /dotfiles/hypr/conf/autostart.conf with
If not, you need to install the missing packages manually.
## rofi (application launcher) is not working
If the installation of rofi-wayland fails in the installation/update procedure please try to install it manually:
```
exec-once = swww init || swww-daemon --format xrgb
yay -S rofi-wayland
```
> swww is currently extremly under development. Upcoming updates could require different launch commands. I will monitor the development as well and update the dotfiles accordingly.
If rofi-wayland isn't available please try rofi:
You can use the ML4W Dotfiles Settings app to replace swww with hyprpaper.
```
yay -S rofi
```
## hypridle and hyprlock is not starting after an update of the dotfiles

Binary file not shown.

Binary file not shown.

View File

@ -2,6 +2,6 @@
Type=Application
Name=ML4W Dotfiles Settings App
Exec=HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
Icon=HOME/dotfiles/apps/ml4w-icon.png
Icon=HOME/dotfiles/apps/ml4w-dotfiles-settings.png
Terminal=false
Categories=Utility

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=ML4W Hyprland Settings App
Exec=HOME/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage
Icon=HOME/dotfiles/apps/ml4w-hyprland-settings.png
Terminal=false
Categories=Utility

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
apps/ml4w-welcome.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path style="fill:#dfdfdf" d="m 3 5 v 0.003906 c -0.265625 0 -0.519531 0.105469 -0.707031 0.289063 l -2 2 c -0.3906252 0.390625 -0.3906252 1.023437 0 1.414062 l 2 2 c 0.1875 0.183594 0.441406 0.289063 0.707031 0.285157 v 0.007812 h 1 v -2 h 5 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -5 v -2 z m 0 0"/>
<path style="fill:#dfdfdf" d="m 12 1 c 1.644531 0 3 1.355469 3 3 v 8 c 0 1.644531 -1.355469 3 -3 3 h -4 c -1.644531 0 -3 -1.355469 -3 -3 v -1 c 0 -0.550781 0.449219 -1 1 -1 s 1 0.449219 1 1 v 1 c 0 0.570312 0.429688 1 1 1 h 4 c 0.570312 0 1 -0.429688 1 -1 v -8 c 0 -0.570312 -0.429688 -1 -1 -1 h -4 c -0.570312 0 -1 0.429688 -1 1 v 1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 v -1 c 0 -1.644531 1.355469 -3 3 -3 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 929 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path style="fill:#dfdfdf" d="m 3 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
<path style="fill:#dfdfdf" d="m 10 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 561 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 1 c -2.199219 0 -4 1.800781 -4 4 v 2 c -1.109375 0 -2 0.890625 -2 2 v 5 c 0 0.554688 0.445312 1 1 1 h 10 c 0.554688 0 1 -0.445312 1 -1 v -5 c 0 -1.109375 -0.890625 -2 -2 -2 v -2 c 0 -2.199219 -1.800781 -4 -4 -4 z m 0 2 c 1.125 0 2 0.875 2 2 v 2 h -4 v -2 c 0 -1.125 0.875 -2 2 -2 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 478 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 z m -7 1 l 2.050781 2.050781 c -2.117187 2.117188 -2.652343 5.355469 -1.332031 8.039063 c 1.324219 2.683594 4.214844 4.238281 7.179688 3.851562 c 2.96875 -0.386718 5.367187 -2.625 5.960937 -5.554687 c 0.59375 -2.933594 -0.75 -5.929688 -3.335937 -7.433594 c -0.476563 -0.28125 -1.089844 -0.117187 -1.367188 0.359375 s -0.117188 1.089844 0.359375 1.367188 c 1.851563 1.078124 2.808594 3.207031 2.382813 5.3125 c -0.421876 2.101562 -2.128907 3.691406 -4.253907 3.96875 c -2.128906 0.273437 -4.183593 -0.828126 -5.128906 -2.753907 s -0.566406 -4.226562 0.949219 -5.742187 l 1.535156 1.535156 v -4.003906 c 0 -0.519532 -0.449219 -0.996094 -1 -0.996094 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 967 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 z m -3.136719 1.816406 c -0.128906 0.015625 -0.253906 0.058594 -0.367187 0.125 c -2.734375 1.582032 -4.074219 4.816406 -3.257813 7.871094 c 0.820313 3.050781 3.59375 5.183594 6.75 5.1875 c 3.160157 0.003906 5.941407 -2.121094 6.765625 -5.167969 c 0.828125 -3.050781 -0.5 -6.289062 -3.230468 -7.878906 c -0.476563 -0.28125 -1.089844 -0.121094 -1.367188 0.359375 c -0.132812 0.226562 -0.171875 0.5 -0.105469 0.757812 c 0.070313 0.257813 0.234375 0.476563 0.464844 0.609376 c 1.957031 1.140624 2.902344 3.441406 2.3125 5.628906 c -0.59375 2.183594 -2.570313 3.695312 -4.832031 3.691406 c -2.265625 -0.003906 -4.238282 -1.519531 -4.824219 -3.707031 s 0.363281 -4.488281 2.324219 -5.621094 c 0.476562 -0.277344 0.640625 -0.886719 0.363281 -1.363281 c -0.132813 -0.230469 -0.347656 -0.398438 -0.605469 -0.464844 c -0.125 -0.035156 -0.257812 -0.042969 -0.390625 -0.027344 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 4 4 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 2.28125 2.28125 l 2.3125 -2.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -2.28125 2.28125 l 2.25 2.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -2.28125 -2.28125 l -2.28125 2.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 2.28125 -2.25 l -2.28125 -2.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 788 B

0
eww/eww.yuck Normal file
View File

78
eww/ml4w-sidebar/eww.scss Normal file
View File

@ -0,0 +1,78 @@
*{
all: unset;
font-family: "Fira Sans";
color: #FFFFFF;
}
.winbox {
background-color: #242424;
opacity: 0.85;
border: 1px solid #444444;
border-radius: 12px;
box-shadow: 0 0 4px 2px #000000;
margin: 10px;
}
.res_box {
background-color: #242424;
border-radius: 12px;
padding: 14px 18px 14px 18px;
}
.res_circle {
background-color: #FFFFFF;
border: 0px solid #161616;
color:#FFFFFF;
border-radius: 100%;
padding: 0px;
}
.ml4w_icon {
background-repeat: no-repeat;
background-size: 48px;
min-height: 48px;
min-width: 48px;
}
.res_circle_small {
background-color: #242424;
border: 0px solid #161616;
border-radius: 100%;
padding: 40px;
color:#FFFFFF;
}
.res_text {
border-radius: 16px;
color: #FFFFFF;
font-size : 16px;
padding: 0px 8px 0px 8px;
margin: 0px 0px 0px 0px;
font-weight : bold;
}
.res_cpu {
color: #19cddb;
}
.res_mem {
color: #a5deb7;
}
.res_disk {
color: #cfb3ff;
}
.powericons {
background-repeat: no-repeat;
background-size: 30px;
min-height: 30px;
min-width: 30px;
}
.closeicon {
background-repeat: no-repeat;
background-size: 16px;
min-height: 16px;
min-width: 16px;
}

184
eww/ml4w-sidebar/eww.yuck Normal file
View File

@ -0,0 +1,184 @@
;; Icons: https://github.com/GNOME/adwaita-icon-theme/tree/master/Adwaita
;; Variables
;; System vars
(defpoll HOST :interval "5s" `hostname`)
(defpoll CPU_USAGE :interval "1s" `../scripts/sys_info.sh --cpu`)
(defpoll MEM_USAGE :interval "1s" `../scripts/sys_info.sh --mem`)
(defpoll DISK_USAGE :interval "1s" `../scripts/sys_info.sh --disk`)
;; Widgets
;; resources
(defwidget ml4wlauncher []
(box :class "winbox"
(centerbox :orientation "h"
(box :class "ml4w-welcome" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-welcome.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --welcome")
(label :class "res_text" :valign "end" :halign "center" :text "Welcome App")
)
(box :class "ml4w-dotfiles" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-dotfiles-settings.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --dotfiles")
(label :class "res_text" :valign "end" :halign "center" :text "Dotfiles App")
)
(box :class "ml4w-hyprland" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-hyprland-settings.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --hyprland")
(label :class "res_text" :valign "end" :halign "center" :text "Hyprland App")
)
)
)
)
(defwidget resources []
(box :class "winbox"
(centerbox :orientation "h"
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_cpu" :value CPU_USAGE :thickness 15
(label :class "res_circle_small" :text "CPU")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${CPU_USAGE}%")
)
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_mem" :value MEM_USAGE :thickness 15
(label :class "res_circle_small" :text "MEMORY")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${MEM_USAGE}%")
)
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_disk" :value DISK_USAGE :thickness 15
(label :class "res_circle_small" :text "DISK")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${DISK_USAGE}%")
)
)
)
)
(defwidget close []
(box :class "winbox"
(button :tooltip "Close" :style "background-image: url('../assets/window-close-symbolic.svg');" :class "closeicon" :valign "center" :halign "center" :onclick "../scripts/eww.sh &")
)
)
;; powermenus
(defwidget logout []
(box :class "winbox"
(button :tooltip "Logout" :style "background-image: url('../assets/application-exit-symbolic-rtl.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh logout &")
)
)
(defwidget suspend []
(box :class "winbox"
(button :tooltip "Suspend" :style "background-image: url('../assets/media-playback-pause-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh suspend &")
)
)
(defwidget lock []
(box :class "winbox"
(button :tooltip "Lock" :style "background-image: url('../assets/system-lock-screen-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh lock &")
)
)
(defwidget reboot []
(box :class "winbox"
(button :tooltip "Reboot" :style "background-image: url('../assets/system-reboot-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh reboot &")
)
)
(defwidget shutdown []
(box :class "winbox"
(button :tooltip "Shutdown" :style "background-image: url('../assets/system-shutdown-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh shutdown &")
)
)
;; ** Windows *************************************************************************
(defwindow close
:geometry (geometry :x "455px"
:y "-7px"
:width "44px"
:height "44px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(close))
(defwindow ml4wlauncher
:geometry (geometry :x "5px"
:y "5px"
:width "480px"
:height "140px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(ml4wlauncher))
;; resources
(defwindow resources
:geometry (geometry :x "5px"
:y "140px"
:width "480px"
:height "180px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(resources))
;; powermenu
(defwindow logout
:geometry (geometry :x "5px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(logout))
(defwindow suspend
:geometry (geometry :x "102px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(suspend))
(defwindow lock
:geometry (geometry :x "204px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(lock))
(defwindow reboot
:geometry (geometry :x "305px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(reboot))
(defwindow shutdown
:geometry (geometry :x "405px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(shutdown))

33
eww/ml4w-sidebar/launch.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
FILE="$HOME/.cache/ml4w_sidebar"
CFG="$HOME/dotfiles/eww/ml4w-sidebar"
EWW=`which eww`
if [[ ! `pidof eww` ]]; then
${EWW} daemon
sleep 0.5
fi
if [ -f $HOME/dotfiles/.settings/eww-monitor.sh ] && [ $(cat $HOME/dotfiles/.settings/eww-monitor.sh) != "auto" ] ;then
echo ":: Using monitor id from $HOME/dotfiles/.settings/eww-monitor.sh"
sc=$(cat $HOME/dotfiles/.settings/eww-monitor.sh)
else
echo ":: Autodetect current focused monitor."
sc=$(python $HOME/dotfiles/hypr/scripts/active-monitor.py)
fi
if [[ ! -f "$FILE" ]]; then
touch "$FILE"
echo ":: Opening on Monitor $sc"
${EWW} --config "$CFG" open ml4wlauncher --screen $sc
${EWW} --config "$CFG" open resources --screen $sc
${EWW} --config "$CFG" open logout --screen $sc
${EWW} --config "$CFG" open suspend --screen $sc
${EWW} --config "$CFG" open lock --screen $sc
${EWW} --config "$CFG" open reboot --screen $sc
${EWW} --config "$CFG" open shutdown --screen $sc
${EWW} --config "$CFG" open close --screen $sc
else
${EWW} --config "$CFG" close resources ml4wlauncher logout suspend lock reboot shutdown close
echo ":: Closing widgets"
rm "$FILE"
fi

3
eww/scripts/eww.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.3
$HOME/dotfiles/eww/ml4w-sidebar/launch.sh

11
eww/scripts/launch_app.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
if [[ "$1" == "--welcome" ]]; then
$HOME/dotfiles/apps/ML4W_Welcome-x86_64.AppImage
elif [[ "$1" == "--dotfiles" ]]; then
$HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
elif [[ "$1" == "--hyprland" ]]; then
$HOME/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage
else
echo "ERROR: $1 not found"
fi

85
eww/scripts/sys_info.sh Executable file
View File

@ -0,0 +1,85 @@
#!/bin/bash
## Files and Data
PREV_TOTAL=0
PREV_IDLE=0
cpuFile="/tmp/.cpu_usage"
## Get CPU usage
get_cpu() {
if [[ -f "${cpuFile}" ]]; then
fileCont=$(cat "${cpuFile}")
PREV_TOTAL=$(echo "${fileCont}" | head -n 1)
PREV_IDLE=$(echo "${fileCont}" | tail -n 1)
fi
CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0] # Discard the "cpu" prefix.
IDLE=${CPU[4]} # Get the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]:0:4}"; do
let "TOTAL=$TOTAL+$VALUE"
done
if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo "${DIFF_USAGE}"
else
echo "?"
fi
# Remember the total and idle CPU times for the next check.
echo "${TOTAL}" > "${cpuFile}"
echo "${IDLE}" >> "${cpuFile}"
}
## Get Used memory
get_mem() {
printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')
}
## Get Brightness
get_blight() {
CARD=`ls /sys/class/backlight | head -n 1`
if [[ "$CARD" == *"intel_"* ]]; then
BNESS=`xbacklight -get`
LIGHT=${BNESS%.*}
else
BNESS=`blight -d $CARD get brightness`
PERC="$(($BNESS*100/255))"
LIGHT=${PERC%.*}
fi
echo "$LIGHT"
}
## Get Battery
get_battery() {
BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
cat /sys/class/power_supply/${BAT}/capacity
}
## Get Disk Usage
get_disk() {
df -h / | awk '{print $5}' | tail -n1 | sed 's/%//g'
}
## Execute accordingly
if [[ "$1" == "--cpu" ]]; then
get_cpu
elif [[ "$1" == "--mem" ]]; then
get_mem
elif [[ "$1" == "--blight" ]]; then
get_blight
elif [[ "$1" == "--bat" ]]; then
get_battery
elif [[ "$1" == "--disk" ]]; then
get_disk
fi

16
eww/scripts/system.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
sleep 0.3
$HOME/dotfiles/eww/ml4w-sidebar/launch.sh
if [[ "$1" == "reboot" ]]; then
$HOME/dotfiles/hypr/scripts/reboot.sh
elif [[ "$1" == "shutdown" ]]; then
$HOME/dotfiles/hypr/scripts/shutdown.sh
elif [[ "$1" == "lock" ]]; then
$HOME/dotfiles/hypr/scripts/lock.sh
elif [[ "$1" == "suspend" ]]; then
$HOME/dotfiles/hypr/scripts/suspend.sh
elif [[ "$1" == "logout" ]]; then
$HOME/dotfiles/hypr/scripts/exit.sh
fi

View File

@ -0,0 +1,7 @@
# -----------------------------------------------------
# Animations
# name "Default"
# -----------------------------------------------------
animations {
enabled = false
}

View File

@ -18,16 +18,17 @@ exec-once = ~/dotfiles/hypr/scripts/gtk.sh
exec-once = hypridle
# exec-once = swayidle -w timeout 600 'swaylock -f' timeout 660 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f'
# Load network manager applet
# START NM APPLET
# exec-once = nm-applet --indicator
# END NM APPLET
# Load cliphist history
exec-once = wl-paste --watch cliphist store
# Initialize Wallpaper Engine
exec-once = ~/dotfiles/hypr/scripts/init-wallpaper-engine.sh
# Start ML4W Welcome App
# Autostart ML4W App
exec-once = ~/dotfiles/hypr/scripts/ml4w-welcome-autostart.sh
# Load configuration from ML4W Hyprland Settings App
exec-once = ~/.config/ml4w-hyprland-settings/hyprctl.sh
# Start ewww daemon
exec-once = ~/dotfiles/hypr/scripts/eww.sh

View File

@ -4,5 +4,11 @@
# -----------------------------------------------------
env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1

View File

@ -4,6 +4,13 @@
# -----------------------------------------------------
env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1
env = WLR_NO_HARDWARE_CURSORS, 1
env = WLR_RENDERER_ALLOW_SOFTWARE, 1

View File

@ -31,6 +31,7 @@ bind = $mainMod SHIFT, down, resizeactive, 0 100
bind = $mainMod, G, togglegroup
# Actions
bind = $mainMod SHIFT, A, exec, ~/dotfiles/hypr/scripts/toggle-animations.sh
bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh
bind = $mainMod CTRL, Q, exec, wlogout
bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh

View File

@ -18,8 +18,17 @@ windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
windowrulev2 = float,class:(com.ml4w.hyprlandsettings)
windowrulev2 = size 700 600,class:(com.ml4w.hyprlandsettings)
windowrulev2 = center,class:(com.ml4w.hyprlandsettings)
windowrulev2 = float,class:(ml4w-hyprland-settings.py)
windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
windowrulev2 = center,class:(ml4w-hyprland-settings.py)
windowrulev2 = float,class:(dotfiles-floating)
windowrulev2 = size 1000 800,class:(dotfiles-floating)
windowrulev2 = center,class:(dotfiles-floating)
env = APPIMAGELAUNCHER_DISABLE,1
env = APPIMAGELAUNCHER_DISABLE,1

View File

@ -6,6 +6,9 @@
# |___/|_|
#
# -----------------------------------------------------
# IMPORTANT: Don't overwrite ML4W configuration.
# Create your own custom configuration variation instead.
# https://gitlab.com/stephan-raabe/dotfiles#hyprland-configuration-variations
# -----------------------------------------------------
# Monitor
@ -58,7 +61,7 @@ source = ~/dotfiles/hypr/conf/animation.conf
source = ~/dotfiles/hypr/conf/custom.conf
# -----------------------------------------------------
# Custom
# ML4W Configuration
# -----------------------------------------------------
source = ~/dotfiles/hypr/conf/ml4w.conf

View File

@ -20,7 +20,7 @@ input-field {
dots_center = true
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
outer_color = rgb(151515)
inner_color = rgb(200, 200, 200)
inner_color = rgb(FFFFFF)
font_color = rgb(10, 10, 10)
fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
@ -47,7 +47,7 @@ label {
color = rgba(200, 200, 200, 1.0)
font_size = 55
font_family = Fira Semibold
position = -100, -200
position = -100, -40
halign = right
valign = bottom
shadow_passes = 5
@ -65,4 +65,19 @@ label {
valign = bottom
shadow_passes = 5
shadow_size = 10
}
image {
monitor =
path = $HOME/.cache/square_wallpaper.png
size = 280 # lesser side if not 1:1 ratio
rounding = -1 # negative values mean circle
border_size = 4
border_color = rgb(221, 221, 221)
rotate = 0 # degrees, counter-clockwise
reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
position = 0, 200
halign = center
valign = center
}

View File

@ -0,0 +1,18 @@
import sys
import subprocess
import os
import json
import pathlib
import shutil
# Get script path
pathname = os.path.dirname(sys.argv[0])
homeFolder = os.path.expanduser('~') # Path to home folder
dotfiles = homeFolder + "/dotfiles/"
result = subprocess.run(["bash", dotfiles + "hypr/scripts/monitors.sh"], capture_output=True, text=True)
monitors_json = result.stdout.strip()
monitors_arr = json.loads(monitors_json)
for row in monitors_arr:
if row["focused"]:
print(row["id"])

6
hypr/scripts/eww.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
EWW=`which eww`
if [[ ! `pidof eww` ]]; then
${EWW} daemon
sleep 0.5
fi

View File

@ -1,3 +1,3 @@
#!/bin/bash
sleep 1
sleep 0.5
killall -9 Hyprland sleep 2

3
hypr/scripts/lock.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
hyprlock

33
hypr/scripts/ml4w-launcher.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# __ __ _ _ ___ __ _ _
# | \/ | | | || \ \ / / | | __ _ _ _ _ __ ___| |__ ___ _ __
# | |\/| | | | || |\ \ /\ / / | | / _` | | | | '_ \ / __| '_ \ / _ \ '__|
# | | | | |__|__ _\ V V / | |__| (_| | |_| | | | | (__| | | | __/ |
# |_| |_|_____| |_| \_/\_/ |_____\__,_|\__,_|_| |_|\___|_| |_|\___|_|
#
option1="ML4W Dotfiles Settings"
option2="Hyprland Settings"
option3="Change Wallpaper"
option4="Change Waybar Theme"
option5="ML4W Welcome App"
options="$option1\n"
options="$options$option2\n"
options="$options$option3\n"
options="$options$option4\n$option5"
choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/dotfiles/rofi/config-ml4w-launcher.rasi -l 5)
case $choice in
$option1)
$HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage ;;
$option2)
$HOME/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage ;;
$option3)
$HOME/dotfiles/hypr/scripts/wallpaper.sh select ;;
$option4)
$HOME/dotfiles/waybar/themeswitcher.sh ;;
$option5)
$HOME/dotfiles/apps/ML4W_Welcome-x86_64.AppImage ;;
esac

2
hypr/scripts/monitors.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
hyprctl -j monitors

3
hypr/scripts/reboot.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl reboot

3
hypr/scripts/shutdown.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl poweroff

3
hypr/scripts/suspend.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl suspend

View File

@ -0,0 +1,13 @@
#!/bin/bash
cache_file="$HOME/.cache/toggle_animation"
if [[ $(cat $HOME/dotfiles/hypr/conf/animation.conf) == *"disabled"* ]]; then
echo ":: Toggle blocked by disabled.conf variation."
else
if [ -f $cache_file ] ;then
hyprctl keyword animations:enabled true
rm $cache_file
else
hyprctl keyword animations:enabled false
touch $cache_file
fi
fi

View File

@ -12,6 +12,7 @@
# Cache file for holding the current wallpaper
cache_file="$HOME/.cache/current_wallpaper"
blurred="$HOME/.cache/blurred_wallpaper.png"
square="$HOME/.cache/square_wallpaper.png"
rasi_file="$HOME/.cache/current_wallpaper.rasi"
blur_file="$HOME/dotfiles/.settings/blur.sh"
@ -114,8 +115,12 @@ if [ "$1" == "init" ] ;then
echo ":: Init"
else
sleep 1
dunstify "Changing wallpaper ..." "with image $newwall" -h int:value:33 -h string:x-dunst-stack-tag:wallpaper
sleep 2
dunstify "Changing wallpaper ..." "with image $newwall" -h int:value:25 -h string:x-dunst-stack-tag:wallpaper
# -----------------------------------------------------
# Reload Hyprctl.sh
# -----------------------------------------------------
$HOME/.config/ml4w-hyprland-settings/hyprctl.sh &
fi
# -----------------------------------------------------
@ -124,7 +129,7 @@ fi
if [ "$1" == "init" ] ;then
echo ":: Init"
else
dunstify "Creating blurred version ..." "with image $newwall" -h int:value:66 -h string:x-dunst-stack-tag:wallpaper
dunstify "Creating blurred version ..." "with image $newwall" -h int:value:50 -h string:x-dunst-stack-tag:wallpaper
fi
magick $wallpaper -resize 75% $blurred
@ -134,6 +139,17 @@ if [ ! "$blur" == "0x0" ] ;then
echo ":: Blurred"
fi
# -----------------------------------------------------
# Created quare wallpaper
# -----------------------------------------------------
if [ "$1" == "init" ] ;then
echo ":: Init"
else
dunstify "Creating square version ..." "with image $newwall" -h int:value:75 -h string:x-dunst-stack-tag:wallpaper
fi
magick $wallpaper -gravity Center -extent 1:1 $square
echo ":: Square version created"
# -----------------------------------------------------
# Write selected wallpaper into .cache files
# -----------------------------------------------------

View File

@ -65,10 +65,10 @@ source .install/hidpi.sh
source .install/displaymanager.sh
source .install/issue.sh
source .install/restore.sh
source .install/keyboard.sh
source .install/neovim.sh
source .install/vm.sh
source .install/keyboard.sh
source .install/hook.sh
source .install/vm.sh
source .install/copy.sh
source .install/init-pywal.sh
if [[ $profile == *"Hyprland"* ]]; then
@ -82,5 +82,6 @@ source .install/apps.sh
source .install/gtk.sh
source .install/bashrc.sh
source .install/cleanup.sh
source .install/diagnosis.sh
source .install/reboot.sh
sleep 3

View File

@ -0,0 +1,261 @@
/*
# ____ __ _
# | _ \ ___ / _(_)
# | |_) / _ \| |_| |
# | _ < (_) | _| |
# |_| \_\___/|_| |_|
#
# by Stephan Raabe (2023)
# -----------------------------------------------------
*/
/* ---- Configuration ---- */
configuration {
modi: "drun,run";
font: "Fira Sans 8";
show-icons: false;
display-drun: "APPS";
display-run: "RUN";
display-filebrowser: "FILES";
display-window: "WINDOW";
hover-select: true;
me-select-entry: "";
me-accept-entry: "MousePrimary";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/* ---- Load font ---- */
@import "~/dotfiles/.settings/rofi-font.rasi"
/* ---- Load pywal colors (custom wal template) ---- */
@import "~/.cache/wal/colors-rofi-pywal"
/* ---- Load wallpaper ---- */
@import "~/.cache/current_wallpaper.rasi"
/* ---- Load border width ---- */
@import "~/dotfiles/.settings/rofi-border.rasi"
/* ---- Window ---- */
window {
width: 260px;
x-offset: -14px;
y-offset: 15px;
spacing: 0px;
padding: 0px;
margin: 0px;
color: #FFFFFF;
border: @border-width;
border-color: #FFFFFF;
cursor: "default";
transparency: "real";
location: northeast;
anchor: northeast;
fullscreen: false;
enabled: true;
border-radius: 10px;
background-color: transparent;
}
/* ---- Mainbox ---- */
mainbox {
enabled: true;
orientation: horizontal;
spacing: 0px;
margin: 0px;
background-color: @background;
background-image: @current-image;
children: ["listbox"];
}
/* ---- Imagebox ---- */
imagebox {
padding: 18px;
background-color: transparent;
orientation: vertical;
children: [ "inputbar", "dummy", "mode-switcher" ];
}
/* ---- Listbox ---- */
listbox {
spacing: 20px;
background-color: transparent;
orientation: vertical;
children: [ "listview" ];
}
/* ---- Dummy ---- */
dummy {
background-color: transparent;
}
/* ---- Inputbar ---- */
inputbar {
enabled: true;
text-color: @foreground;
spacing: 10px;
padding: 15px;
border-radius: 0px;
border-color: @foreground;
background-color: @background;
children: [ "textbox-prompt-colon", "entry" ];
}
textbox-prompt-colon {
enabled: true;
expand: false;
padding: 0px 5px 0px 0px;
str: "";
background-color: transparent;
text-color: inherit;
}
entry {
enabled: true;
background-color: transparent;
text-color: inherit;
cursor: text;
placeholder: "Search";
placeholder-color: inherit;
}
/* ---- Mode Switcher ---- */
mode-switcher{
enabled: true;
spacing: 20px;
background-color: transparent;
text-color: @foreground;
}
button {
padding: 10px;
border-radius: 10px;
background-color: @background;
text-color: inherit;
cursor: pointer;
border: 0px;
}
button selected {
background-color: @color11;
text-color: @foreground;
}
/* ---- Listview ---- */
listview {
enabled: true;
columns: 1;
lines: 2;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 0px;
padding: 10px;
margin: 0px;
background-color: @background;
border:0px;
}
/* ---- Element ---- */
element {
enabled: true;
padding: 10px;
margin: 5px;
cursor: pointer;
background-color: @background;
border-radius: 10px;
border: @border-width;
}
element normal.normal {
background-color: inherit;
text-color: @foreground;
}
element normal.urgent {
background-color: inherit;
text-color: @foreground;
}
element normal.active {
background-color: inherit;
text-color: @foreground;
}
element selected.normal {
background-color: @color11;
text-color: @foreground;
}
element selected.urgent {
background-color: inherit;
text-color: @foreground;
}
element selected.active {
background-color: inherit;
text-color: @foreground;
}
element alternate.normal {
background-color: inherit;
text-color: @foreground;
}
element alternate.urgent {
background-color: inherit;
text-color: @foreground;
}
element alternate.active {
background-color: inherit;
text-color: @foreground;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 32px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Message -----*****/
message {
background-color: transparent;
border:0px;
margin:20px 0px 0px 0px;
padding:0px;
spacing:0px;
border-radius: 10px;
}
textbox {
padding: 15px;
margin: 0px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
}
error-message {
padding: 15px;
border-radius: 20px;
background-color: @background;
text-color: @foreground;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -3,13 +3,14 @@ clear
sleep 0.5
figlet "Diagnosis"
echo
echo "This script will check if some core packages are available on your system."
echo "This script will check that essential packages and "
echo "execution commands are available on your system."
echo
_commandExists() {
package="$1";
if ! type $package > /dev/null; then
echo ":: ERROR: $package doesn't exists. Please install it."
if ! type $package > /dev/null 2>&1; then
echo ":: ERROR: $package doesn't exists. Please install it with yay -S $2"
else
echo ":: OK: $package found."
fi
@ -24,14 +25,20 @@ _folderExists() {
fi
}
_commandExists "rofi"
_commandExists "dunst"
_commandExists "waybar"
_commandExists "swww"
_commandExists "wal"
_commandExists "gum"
_commandExists "wlogout"
_commandExists "rofi" "rofi-wayland"
_commandExists "dunst" "dunst"
_commandExists "waybar" "waybar"
_commandExists "hyprpaper" "hyprpaper"
_commandExists "hyprlock" "hyprpaper"
_commandExists "hypridle" "hyprpaper"
_commandExists "wal" "python-pywal"
_commandExists "gum" "gum"
_commandExists "wlogout" "wlogout"
_commandExists "swww" "swww"
_commandExists "eww" "eww"
_commandExists "magick2" "imagemagick"
_commandExists "figlet2" "figlet"
echo
echo "Press return to close the window"
echo "Press return to exit"
read

6
scripts/nm-applet.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
if [[ "$1" == "stop" ]]; then
killall nm-applet
else
nm-applet --indicator &
fi

View File

@ -58,11 +58,19 @@
// ML4W Welcome App
"custom/ml4w-welcome": {
"on-click": "~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage",
"on-click": "sleep 0.1 && ~/dotfiles/eww/ml4w-sidebar/launch.sh",
"on-click-right": "sleep 0.1 && ~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage",
"format": " ",
"tooltip": false
},
// ML4W Welcome App
"custom/ml4w-hyprland-settings": {
"on-click": "~/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage",
"format": " ",
"tooltip": false
},
// Empty
"custom/empty": {
"format": ""
@ -88,7 +96,7 @@
// Updates Count
"custom/updates": {
"format": " {}",
"format": " {}",
"tooltip-format": "{}",
"escape": true,
"return-type": "json",
@ -135,20 +143,6 @@
"tooltip": false
},
// Outlook Launcher
"custom/outlook": {
"format": "",
"on-click": "chromium --app=https://outlook.office.com/mail/",
"tooltip": false
},
// Teams Launcher
"custom/teams": {
"format": "",
"on-click": "chromium --app=https://teams.microsoft.com/go",
"tooltip": false
},
// Browser Launcher
"custom/browser": {
"format": "",
@ -277,15 +271,27 @@
},
// Group Settings
"group/settings": {
"group/links": {
"orientation": "horizontal",
"modules": [
// START CHATGPT TOOGLE
"custom/chatgpt",
// END CHATGPT TOOGLE
"custom/empty"
]
},
// Group Settings
"group/settings": {
"orientation": "inherit",
"drawer": {
"transition-duration": 300,
"children-class": "not-memory",
"transition-left-to-right": false
},
"modules": [
"custom/settings",
"custom/waybarthemes",
"custom/wallpaper"
"custom/wallpaper",
"custom/ml4w-hyprland-settings"
]
},
@ -331,8 +337,8 @@
// Pulseaudio
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -24,8 +24,9 @@
// Modules Left
"modules-left": [
"custom/appmenu",
"group/links",
"group/settings",
"wlr/taskbar",
//"wlr/taskbar",
"group/quicklinks",
"hyprland/window",
"custom/empty"

View File

@ -24,8 +24,9 @@
// Modules Left
"modules-left": [
"custom/appmenu",
"group/links",
"group/settings",
"wlr/taskbar",
//"wlr/taskbar",
"group/quicklinks",
"hyprland/window",
"custom/empty"

View File

@ -184,15 +184,23 @@ window#waybar.empty #window {
}
#custom-ml4w-welcome {
margin-right: 15px;
margin-right: 12px;
background-image: url("../assets/ml4w-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 24px;
}
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
#custom-chatgpt {
margin-right: 15px;
margin-right: 12px;
background-image: url("../assets/ai-icon-20.png");
background-repeat: no-repeat;
background-position: center;
@ -204,8 +212,8 @@ window#waybar.empty #window {
* ----------------------------------------------------- */
#idle_inhibitor {
margin-right: 15px;
font-size: 22px;
margin-right: 17px;
font-size: 20px;
font-weight: bold;
opacity: 0.8;
color: @iconcolor;
@ -229,7 +237,7 @@ window#waybar.empty #window {
color: @textcolor1;
border-radius: 15px;
padding: 0px 10px 0px 10px;
margin: 6px 15px 6px 14px;
margin: 8px 14px 8px 14px;
opacity:0.8;
border:3px solid @bordercolor;
}
@ -312,7 +320,7 @@ window#waybar.empty #window {
color: @textcolor1;
border-radius: 15px;
padding: 1px 10px 0px 10px;
margin: 6px 15px 6px 0px;
margin: 8px 15px 8px 0px;
opacity:0.8;
border:3px solid @bordercolor;
}

View File

@ -24,8 +24,9 @@
// Modules Left
"modules-left": [
"custom/appmenu",
"group/links",
"group/settings",
"wlr/taskbar",
//"wlr/taskbar",
"group/quicklinks",
"hyprland/window"
],

View File

@ -24,6 +24,7 @@
"modules-left": [
"custom/appmenuicon",
"hyprland/workspaces",
"group/links",
"group/settings",
"group/quicklinks"
],

View File

@ -142,12 +142,19 @@ window#waybar.empty #window {
}
#custom-settings {
margin-right: 15;
margin-right: 15px;
}
#custom-browser {
margin-right: 16px;
}
#custom-wallpaper {
margin-right: 14px;
}
#custom-chatgpt {
margin-right: 15px;
margin-right: 10px;
background-image: url("../assets/ai-icon-20.png");
background-repeat: no-repeat;
background-position: center;
@ -167,6 +174,15 @@ window#waybar.empty #window {
padding-right: 24px;
}
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon-20.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
/* -----------------------------------------------------
* Idle Inhibator
* ----------------------------------------------------- */

View File

@ -24,8 +24,9 @@
// Modules Left
"modules-left": [
"custom/appmenu",
"group/links",
"group/settings",
"wlr/taskbar",
//"wlr/taskbar",
"group/quicklinks",
"hyprland/window",
"custom/empty"

View File

@ -185,7 +185,7 @@ window#waybar.empty #window {
}
#custom-chatgpt {
margin-right: 15px;
margin-right: 12px;
background-image: url("../assets/ai-icon.png");
background-repeat: no-repeat;
background-position: center;
@ -193,13 +193,21 @@ window#waybar.empty #window {
}
#custom-ml4w-welcome {
margin-right: 15px;
margin-right: 12px;
background-image: url("../assets/ml4w-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 24px;
}
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
/* -----------------------------------------------------
* Idle Inhibator
* ----------------------------------------------------- */

View File

@ -34,7 +34,7 @@
"custom/settings",
"custom/waybarthemes",
"custom/wallpaper",
// "wlr/taskbar",
//"wlr/taskbar",
"group/quicklinks",
"hyprland/window",
"custom/starter"

View File

@ -1,6 +1,6 @@
{
"label" : "lock",
"action" : "sleep 1; hyprlock",
"action" : "$HOME/dotfiles/hypr/scripts/lock.sh",
"text" : "Lock",
"keybind" : "l"
}
@ -18,19 +18,19 @@
}
{
"label" : "shutdown",
"action" : "sleep 1; systemctl poweroff",
"action" : "$HOME/dotfiles/hypr/scripts/shutdown.sh",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "suspend",
"action" : "sleep 1; systemctl suspend",
"action" : "$HOME/dotfiles/hypr/scripts/suspend.sh",
"text" : "Suspend",
"keybind" : "u"
}
{
"label" : "reboot",
"action" : "sleep 1; systemctl reboot",
"action" : "$HOME/dotfiles/hypr/scripts/reboot.sh",
"text" : "Reboot",
"keybind" : "r"
}