diff --git a/.bashrc b/.bashrc index d4cde4f..123d179 100644 --- a/.bashrc +++ b/.bashrc @@ -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 diff --git a/.install/apps.sh b/.install/apps.sh index 7c0ede1..9320358 100755 --- a/.install/apps.sh +++ b/.install/apps.sh @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/.install/backup.sh b/.install/backup.sh index 877270d..9628e5c 100755 --- a/.install/backup.sh +++ b/.install/backup.sh @@ -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/" diff --git a/.install/cleanup.sh b/.install/cleanup.sh index 2de7c8b..86542a6 100644 --- a/.install/cleanup.sh +++ b/.install/cleanup.sh @@ -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 diff --git a/.install/diagnosis.sh b/.install/diagnosis.sh new file mode 100644 index 0000000..ff2791c --- /dev/null +++ b/.install/diagnosis.sh @@ -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 "" \ No newline at end of file diff --git a/.install/displaymanager.sh b/.install/displaymanager.sh index 4ea9791..5948379 100755 --- a/.install/displaymanager.sh +++ b/.install/displaymanager.sh @@ -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 diff --git a/.install/hyprland-dotfiles.sh b/.install/hyprland-dotfiles.sh index c916962..3c4e761 100644 --- a/.install/hyprland-dotfiles.sh +++ b/.install/hyprland-dotfiles.sh @@ -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 \ No newline at end of file +echo diff --git a/.install/includes/library.sh b/.install/includes/library.sh index 2d0e938..660807a 100755 --- a/.install/includes/library.sh +++ b/.install/includes/library.sh @@ -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 } \ No newline at end of file diff --git a/.install/neovim.sh b/.install/neovim.sh old mode 100644 new mode 100755 index 9e78bd8..5c58e63 --- a/.install/neovim.sh +++ b/.install/neovim.sh @@ -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 diff --git a/.install/packages/general-packages.sh b/.install/packages/general-packages.sh index 6d264f6..3710f20 100644 --- a/.install/packages/general-packages.sh +++ b/.install/packages/general-packages.sh @@ -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" ); diff --git a/.install/packages/hyprland-packages.sh b/.install/packages/hyprland-packages.sh index acf57d0..35c57dc 100644 --- a/.install/packages/hyprland-packages.sh +++ b/.install/packages/hyprland-packages.sh @@ -16,4 +16,5 @@ packagesYay=( "wlogout" "nwg-look" "emote" + "eww" ); diff --git a/.install/remove.sh b/.install/remove.sh index 925dbf7..e71a3e9 100755 --- a/.install/remove.sh +++ b/.install/remove.sh @@ -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 diff --git a/.install/restore.sh b/.install/restore.sh index 5149141..178e000 100755 --- a/.install/restore.sh +++ b/.install/restore.sh @@ -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 diff --git a/.install/settings.sh b/.install/settings.sh index 3daf5ea..491a0cb 100644 --- a/.install/settings.sh +++ b/.install/settings.sh @@ -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 diff --git a/.settings/eww-monitor.sh b/.settings/eww-monitor.sh new file mode 100755 index 0000000..4d18c3e --- /dev/null +++ b/.settings/eww-monitor.sh @@ -0,0 +1 @@ +auto \ No newline at end of file diff --git a/.settings/wallpaper-engine.sh b/.settings/wallpaper-engine.sh index 16f3d37..b6923b6 100644 --- a/.settings/wallpaper-engine.sh +++ b/.settings/wallpaper-engine.sh @@ -1 +1 @@ -swww \ No newline at end of file +hyprpaper \ No newline at end of file diff --git a/.version/name b/.version/name index 0409c16..0a35d8c 100644 --- a/.version/name +++ b/.version/name @@ -1 +1 @@ -2.8.4 \ No newline at end of file +2.9 \ No newline at end of file diff --git a/.version/version b/.version/version index 7f9ce49..7b34ebb 100644 --- a/.version/version +++ b/.version/version @@ -1 +1 @@ -2840 \ No newline at end of file +2900 \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG index 3c15f35..bb361da 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 -------------------------------------------------------- diff --git a/README.md b/README.md index 024e181..f468a6c 100644 --- a/README.md +++ b/README.md @@ -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 - +[![Screenshot](screenshots/v29/screenshot-29-2.png "Screenshot")](screenshots/v29/screenshot-29-2.png) - - +[![Screenshot](screenshots/v29/screenshot-29-3.png "Screenshot")](screenshots/v29/screenshot-29-3.png) -You can find more screenshots here. -Watch on YouTube +Watch on YouTube + +## 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 +``` + + ## 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 +``` + 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 diff --git a/apps/ML4W_Dotfiles_Settings-x86_64.AppImage b/apps/ML4W_Dotfiles_Settings-x86_64.AppImage index 95d869f..fa0f251 100755 Binary files a/apps/ML4W_Dotfiles_Settings-x86_64.AppImage and b/apps/ML4W_Dotfiles_Settings-x86_64.AppImage differ diff --git a/apps/ML4W_Hyprland_Settings-x86_64.AppImage b/apps/ML4W_Hyprland_Settings-x86_64.AppImage new file mode 100755 index 0000000..f8e23e3 Binary files /dev/null and b/apps/ML4W_Hyprland_Settings-x86_64.AppImage differ diff --git a/apps/ML4W_Welcome-x86_64.AppImage b/apps/ML4W_Welcome-x86_64.AppImage index cd45671..dd4fc47 100755 Binary files a/apps/ML4W_Welcome-x86_64.AppImage and b/apps/ML4W_Welcome-x86_64.AppImage differ diff --git a/apps/ML4W_Dotfiles_Installer.AppImage b/apps/installer.AppImage similarity index 92% rename from apps/ML4W_Dotfiles_Installer.AppImage rename to apps/installer.AppImage index 1f705a2..40e33fc 100755 Binary files a/apps/ML4W_Dotfiles_Installer.AppImage and b/apps/installer.AppImage differ diff --git a/apps/ml4w-dotfiles-settings.desktop b/apps/ml4w-dotfiles-settings.desktop index 8aba4de..f031bea 100755 --- a/apps/ml4w-dotfiles-settings.desktop +++ b/apps/ml4w-dotfiles-settings.desktop @@ -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 \ No newline at end of file diff --git a/apps/ml4w-dotfiles-settings.png b/apps/ml4w-dotfiles-settings.png new file mode 100644 index 0000000..938b6f7 Binary files /dev/null and b/apps/ml4w-dotfiles-settings.png differ diff --git a/apps/ml4w-hyprland-settings.desktop b/apps/ml4w-hyprland-settings.desktop new file mode 100755 index 0000000..483c0d3 --- /dev/null +++ b/apps/ml4w-hyprland-settings.desktop @@ -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 \ No newline at end of file diff --git a/apps/ml4w-hyprland-settings.png b/apps/ml4w-hyprland-settings.png new file mode 100644 index 0000000..c7e8e29 Binary files /dev/null and b/apps/ml4w-hyprland-settings.png differ diff --git a/apps/ml4w-welcome.png b/apps/ml4w-welcome.png new file mode 100644 index 0000000..7d4efe7 Binary files /dev/null and b/apps/ml4w-welcome.png differ diff --git a/eww/assets/application-exit-symbolic-rtl.svg b/eww/assets/application-exit-symbolic-rtl.svg new file mode 100644 index 0000000..89f0825 --- /dev/null +++ b/eww/assets/application-exit-symbolic-rtl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eww/assets/media-playback-pause-symbolic.svg b/eww/assets/media-playback-pause-symbolic.svg new file mode 100644 index 0000000..39383da --- /dev/null +++ b/eww/assets/media-playback-pause-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eww/assets/system-lock-screen-symbolic.svg b/eww/assets/system-lock-screen-symbolic.svg new file mode 100644 index 0000000..78a410a --- /dev/null +++ b/eww/assets/system-lock-screen-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/eww/assets/system-reboot-symbolic.svg b/eww/assets/system-reboot-symbolic.svg new file mode 100644 index 0000000..15171f5 --- /dev/null +++ b/eww/assets/system-reboot-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/eww/assets/system-shutdown-symbolic.svg b/eww/assets/system-shutdown-symbolic.svg new file mode 100644 index 0000000..cfd4996 --- /dev/null +++ b/eww/assets/system-shutdown-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/eww/assets/window-close-symbolic.svg b/eww/assets/window-close-symbolic.svg new file mode 100644 index 0000000..4cd28cd --- /dev/null +++ b/eww/assets/window-close-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/eww/eww.yuck b/eww/eww.yuck new file mode 100644 index 0000000..e69de29 diff --git a/eww/ml4w-sidebar/eww.scss b/eww/ml4w-sidebar/eww.scss new file mode 100644 index 0000000..45c6c82 --- /dev/null +++ b/eww/ml4w-sidebar/eww.scss @@ -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; +} diff --git a/eww/ml4w-sidebar/eww.yuck b/eww/ml4w-sidebar/eww.yuck new file mode 100644 index 0000000..551c73b --- /dev/null +++ b/eww/ml4w-sidebar/eww.yuck @@ -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)) + diff --git a/eww/ml4w-sidebar/launch.sh b/eww/ml4w-sidebar/launch.sh new file mode 100755 index 0000000..d144e52 --- /dev/null +++ b/eww/ml4w-sidebar/launch.sh @@ -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 \ No newline at end of file diff --git a/eww/scripts/eww.sh b/eww/scripts/eww.sh new file mode 100755 index 0000000..a13b895 --- /dev/null +++ b/eww/scripts/eww.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sleep 0.3 +$HOME/dotfiles/eww/ml4w-sidebar/launch.sh \ No newline at end of file diff --git a/eww/scripts/launch_app.sh b/eww/scripts/launch_app.sh new file mode 100755 index 0000000..9285adc --- /dev/null +++ b/eww/scripts/launch_app.sh @@ -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 + diff --git a/eww/scripts/sys_info.sh b/eww/scripts/sys_info.sh new file mode 100755 index 0000000..27a589a --- /dev/null +++ b/eww/scripts/sys_info.sh @@ -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 diff --git a/eww/scripts/system.sh b/eww/scripts/system.sh new file mode 100755 index 0000000..d10441d --- /dev/null +++ b/eww/scripts/system.sh @@ -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 diff --git a/hypr/conf/animations/disabled.conf b/hypr/conf/animations/disabled.conf new file mode 100644 index 0000000..c9e31c4 --- /dev/null +++ b/hypr/conf/animations/disabled.conf @@ -0,0 +1,7 @@ +# ----------------------------------------------------- +# Animations +# name "Default" +# ----------------------------------------------------- +animations { + enabled = false +} diff --git a/hypr/conf/autostart.conf b/hypr/conf/autostart.conf index 5a28c57..5acb6f8 100644 --- a/hypr/conf/autostart.conf +++ b/hypr/conf/autostart.conf @@ -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 \ No newline at end of file diff --git a/hypr/conf/environments/default.conf b/hypr/conf/environments/default.conf index 6e76947..8f22e1b 100644 --- a/hypr/conf/environments/default.conf +++ b/hypr/conf/environments/default.conf @@ -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 diff --git a/hypr/conf/environments/kvm.conf b/hypr/conf/environments/kvm.conf index e4cc617..d63d5f7 100644 --- a/hypr/conf/environments/kvm.conf +++ b/hypr/conf/environments/kvm.conf @@ -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 diff --git a/hypr/conf/keybindings/default.conf b/hypr/conf/keybindings/default.conf index c54b8f8..02f8c7d 100644 --- a/hypr/conf/keybindings/default.conf +++ b/hypr/conf/keybindings/default.conf @@ -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 diff --git a/hypr/conf/ml4w.conf b/hypr/conf/ml4w.conf index 9219d27..5ed75dc 100644 --- a/hypr/conf/ml4w.conf +++ b/hypr/conf/ml4w.conf @@ -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 \ No newline at end of file +env = APPIMAGELAUNCHER_DISABLE,1 + diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 0b2cdbb..45ae6ff 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -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 diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index 36004f4..65a8b97 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -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 } \ No newline at end of file diff --git a/hypr/scripts/active-monitor.py b/hypr/scripts/active-monitor.py new file mode 100644 index 0000000..9aad2ae --- /dev/null +++ b/hypr/scripts/active-monitor.py @@ -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"]) diff --git a/hypr/scripts/eww.sh b/hypr/scripts/eww.sh new file mode 100755 index 0000000..ef4c3af --- /dev/null +++ b/hypr/scripts/eww.sh @@ -0,0 +1,6 @@ +#!/bin/bash +EWW=`which eww` +if [[ ! `pidof eww` ]]; then + ${EWW} daemon + sleep 0.5 +fi diff --git a/hypr/scripts/exit.sh b/hypr/scripts/exit.sh index 0b61635..c3e8a7a 100755 --- a/hypr/scripts/exit.sh +++ b/hypr/scripts/exit.sh @@ -1,3 +1,3 @@ #!/bin/bash -sleep 1 +sleep 0.5 killall -9 Hyprland sleep 2 \ No newline at end of file diff --git a/hypr/scripts/lock.sh b/hypr/scripts/lock.sh new file mode 100755 index 0000000..bc13b07 --- /dev/null +++ b/hypr/scripts/lock.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sleep 0.5 +hyprlock \ No newline at end of file diff --git a/hypr/scripts/ml4w-launcher.sh b/hypr/scripts/ml4w-launcher.sh new file mode 100755 index 0000000..4ae1a57 --- /dev/null +++ b/hypr/scripts/ml4w-launcher.sh @@ -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 \ No newline at end of file diff --git a/hypr/scripts/monitors.sh b/hypr/scripts/monitors.sh new file mode 100755 index 0000000..14ea2ea --- /dev/null +++ b/hypr/scripts/monitors.sh @@ -0,0 +1,2 @@ +#!/bin/bash +hyprctl -j monitors \ No newline at end of file diff --git a/hypr/scripts/reboot.sh b/hypr/scripts/reboot.sh new file mode 100755 index 0000000..2ddff75 --- /dev/null +++ b/hypr/scripts/reboot.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sleep 0.5 +systemctl reboot diff --git a/hypr/scripts/shutdown.sh b/hypr/scripts/shutdown.sh new file mode 100755 index 0000000..48c8296 --- /dev/null +++ b/hypr/scripts/shutdown.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sleep 0.5 +systemctl poweroff diff --git a/hypr/scripts/suspend.sh b/hypr/scripts/suspend.sh new file mode 100755 index 0000000..440d34b --- /dev/null +++ b/hypr/scripts/suspend.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sleep 0.5 +systemctl suspend \ No newline at end of file diff --git a/hypr/scripts/toggle-animations.sh b/hypr/scripts/toggle-animations.sh new file mode 100755 index 0000000..867ecf4 --- /dev/null +++ b/hypr/scripts/toggle-animations.sh @@ -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 \ No newline at end of file diff --git a/hypr/scripts/wallpaper.sh b/hypr/scripts/wallpaper.sh index f749345..3c20993 100755 --- a/hypr/scripts/wallpaper.sh +++ b/hypr/scripts/wallpaper.sh @@ -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 # ----------------------------------------------------- diff --git a/install.sh b/install.sh index 265bb03..3ba7100 100755 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/rofi/config-ml4w-launcher.rasi b/rofi/config-ml4w-launcher.rasi new file mode 100644 index 0000000..e5e82f0 --- /dev/null +++ b/rofi/config-ml4w-launcher.rasi @@ -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; +} diff --git a/screenshots/screenshot-hyprland-settings.png b/screenshots/screenshot-hyprland-settings.png new file mode 100644 index 0000000..50b7d63 Binary files /dev/null and b/screenshots/screenshot-hyprland-settings.png differ diff --git a/screenshots/screenshot-sidebar.png b/screenshots/screenshot-sidebar.png new file mode 100644 index 0000000..18173c4 Binary files /dev/null and b/screenshots/screenshot-sidebar.png differ diff --git a/screenshots/v271/screenshot-271-1.png b/screenshots/v271/screenshot-271-1.png deleted file mode 100644 index 919ad9a..0000000 Binary files a/screenshots/v271/screenshot-271-1.png and /dev/null differ diff --git a/screenshots/v28/screenshot-28-1.png b/screenshots/v28/screenshot-28-1.png deleted file mode 100644 index 2b9d44d..0000000 Binary files a/screenshots/v28/screenshot-28-1.png and /dev/null differ diff --git a/screenshots/v28/screenshot-28-2.png b/screenshots/v28/screenshot-28-2.png deleted file mode 100644 index dfa1e54..0000000 Binary files a/screenshots/v28/screenshot-28-2.png and /dev/null differ diff --git a/screenshots/v28/screenshot-28-3.png b/screenshots/v28/screenshot-28-3.png deleted file mode 100644 index c9c8b9e..0000000 Binary files a/screenshots/v28/screenshot-28-3.png and /dev/null differ diff --git a/screenshots/v281/screenshot-281-1.png b/screenshots/v281/screenshot-281-1.png deleted file mode 100644 index 5a03527..0000000 Binary files a/screenshots/v281/screenshot-281-1.png and /dev/null differ diff --git a/screenshots/v283/screenshot-283-1.png b/screenshots/v283/screenshot-283-1.png deleted file mode 100644 index 4b62b82..0000000 Binary files a/screenshots/v283/screenshot-283-1.png and /dev/null differ diff --git a/screenshots/v283/screenshot-283-2.png b/screenshots/v283/screenshot-283-2.png deleted file mode 100644 index 5c2efbe..0000000 Binary files a/screenshots/v283/screenshot-283-2.png and /dev/null differ diff --git a/screenshots/v284/screenshot-284-1.png b/screenshots/v284/screenshot-284-1.png deleted file mode 100644 index 35cec80..0000000 Binary files a/screenshots/v284/screenshot-284-1.png and /dev/null differ diff --git a/screenshots/v29/screenshot-29-1.png b/screenshots/v29/screenshot-29-1.png new file mode 100644 index 0000000..f37dc45 Binary files /dev/null and b/screenshots/v29/screenshot-29-1.png differ diff --git a/screenshots/v29/screenshot-29-2.png b/screenshots/v29/screenshot-29-2.png new file mode 100644 index 0000000..3464d23 Binary files /dev/null and b/screenshots/v29/screenshot-29-2.png differ diff --git a/screenshots/v29/screenshot-29-3.png b/screenshots/v29/screenshot-29-3.png new file mode 100644 index 0000000..67459a7 Binary files /dev/null and b/screenshots/v29/screenshot-29-3.png differ diff --git a/scripts/diagnosis.sh b/scripts/diagnosis.sh index ee766c9..d9b33c8 100755 --- a/scripts/diagnosis.sh +++ b/scripts/diagnosis.sh @@ -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 \ No newline at end of file diff --git a/scripts/nm-applet.sh b/scripts/nm-applet.sh new file mode 100755 index 0000000..37c01e2 --- /dev/null +++ b/scripts/nm-applet.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if [[ "$1" == "stop" ]]; then + killall nm-applet +else + nm-applet --indicator & +fi diff --git a/waybar/modules.json b/waybar/modules.json index d6b9355..88c31d0 100644 --- a/waybar/modules.json +++ b/waybar/modules.json @@ -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}% ", diff --git a/waybar/themes/assets/hyprland-icon-20.png b/waybar/themes/assets/hyprland-icon-20.png new file mode 100644 index 0000000..0d36ec2 Binary files /dev/null and b/waybar/themes/assets/hyprland-icon-20.png differ diff --git a/waybar/themes/assets/hyprland-icon.png b/waybar/themes/assets/hyprland-icon.png new file mode 100644 index 0000000..c87b767 Binary files /dev/null and b/waybar/themes/assets/hyprland-icon.png differ diff --git a/waybar/themes/ml4w-blur-bottom/config b/waybar/themes/ml4w-blur-bottom/config index e3afab2..00f8fd9 100644 --- a/waybar/themes/ml4w-blur-bottom/config +++ b/waybar/themes/ml4w-blur-bottom/config @@ -24,8 +24,9 @@ // Modules Left "modules-left": [ "custom/appmenu", + "group/links", "group/settings", - "wlr/taskbar", + //"wlr/taskbar", "group/quicklinks", "hyprland/window", "custom/empty" diff --git a/waybar/themes/ml4w-blur/config b/waybar/themes/ml4w-blur/config index 5bf26eb..fc5269e 100644 --- a/waybar/themes/ml4w-blur/config +++ b/waybar/themes/ml4w-blur/config @@ -24,8 +24,9 @@ // Modules Left "modules-left": [ "custom/appmenu", + "group/links", "group/settings", - "wlr/taskbar", + //"wlr/taskbar", "group/quicklinks", "hyprland/window", "custom/empty" diff --git a/waybar/themes/ml4w-blur/style.css b/waybar/themes/ml4w-blur/style.css index 8fa90c8..33f4f5a 100644 --- a/waybar/themes/ml4w-blur/style.css +++ b/waybar/themes/ml4w-blur/style.css @@ -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; } diff --git a/waybar/themes/ml4w-bottom/config b/waybar/themes/ml4w-bottom/config index aea3cc9..b6471b9 100644 --- a/waybar/themes/ml4w-bottom/config +++ b/waybar/themes/ml4w-bottom/config @@ -24,8 +24,9 @@ // Modules Left "modules-left": [ "custom/appmenu", + "group/links", "group/settings", - "wlr/taskbar", + //"wlr/taskbar", "group/quicklinks", "hyprland/window" ], diff --git a/waybar/themes/ml4w-minimal/config b/waybar/themes/ml4w-minimal/config index 1691e1d..5bdde98 100644 --- a/waybar/themes/ml4w-minimal/config +++ b/waybar/themes/ml4w-minimal/config @@ -24,6 +24,7 @@ "modules-left": [ "custom/appmenuicon", "hyprland/workspaces", + "group/links", "group/settings", "group/quicklinks" ], diff --git a/waybar/themes/ml4w-minimal/style.css b/waybar/themes/ml4w-minimal/style.css index 2c6a5f2..be802f2 100644 --- a/waybar/themes/ml4w-minimal/style.css +++ b/waybar/themes/ml4w-minimal/style.css @@ -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 * ----------------------------------------------------- */ diff --git a/waybar/themes/ml4w/config b/waybar/themes/ml4w/config index 4192b36..4e40db2 100644 --- a/waybar/themes/ml4w/config +++ b/waybar/themes/ml4w/config @@ -24,8 +24,9 @@ // Modules Left "modules-left": [ "custom/appmenu", + "group/links", "group/settings", - "wlr/taskbar", + //"wlr/taskbar", "group/quicklinks", "hyprland/window", "custom/empty" diff --git a/waybar/themes/ml4w/style.css b/waybar/themes/ml4w/style.css index 1a1c19a..035cad2 100644 --- a/waybar/themes/ml4w/style.css +++ b/waybar/themes/ml4w/style.css @@ -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 * ----------------------------------------------------- */ diff --git a/waybar/themes/starter/config b/waybar/themes/starter/config index b1c1062..0506cad 100644 --- a/waybar/themes/starter/config +++ b/waybar/themes/starter/config @@ -34,7 +34,7 @@ "custom/settings", "custom/waybarthemes", "custom/wallpaper", - // "wlr/taskbar", + //"wlr/taskbar", "group/quicklinks", "hyprland/window", "custom/starter" diff --git a/wlogout/layout b/wlogout/layout index 6a3a3c3..fc3c774 100644 --- a/wlogout/layout +++ b/wlogout/layout @@ -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" }