From 88a73b7039ad27d655725dbde831a48a2423ed87 Mon Sep 17 00:00:00 2001 From: Stephan Raabe Date: Thu, 21 Dec 2023 11:05:20 +0100 Subject: [PATCH] wallpaper image file support --- CHANGELOG | 1 + README.md | 2 +- hypr/scripts/wallpaper.sh | 27 ++++++++++++++++--- hypr/settings/modules/module.sh | 1 + .../modules/sddm/background/module.sh | 13 ++++++--- qtile/autostart.sh | 6 ++--- qtile/config.py | 3 +-- qtile/scripts/wallpaper.sh | 27 ++++++++++++++++--- rofi/config-cliphist.rasi | 3 ++- rofi/config-compact.rasi | 3 ++- rofi/config-power.rasi | 3 ++- rofi/config-screenshot.rasi | 3 ++- rofi/config-short.rasi | 3 ++- rofi/config-themes.rasi | 3 ++- rofi/config-wallpaper.rasi | 3 ++- rofi/config.rasi | 3 ++- sddm/theme.conf | 2 +- sddm/update.sh | 10 +++++-- 18 files changed, 88 insertions(+), 28 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 502d0a1..288fad6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,7 @@ Hyprland: - Settings script reworked completely. Implementation of custom modules are now possible. - Waybar settings module to edit some ML4W waybar themes settings on the fly - SDDM settings module to update the SDDM background with current wallpaper +- All image formats are now supported for setting a wallpaper (jpg,jpeg,png,...) Qtile: - Removed wayland support due to many limitations. Installation script will rename /usr/share/wayland-sessions/qtile-wayland.session to qtile-wayland.bak to hide in sddm diff --git a/README.md b/README.md index 74eeeb9..7975e21 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ML4W dotfiles 2.7 RC1 +# ML4W dotfiles 2.7 RC2 This is my configuration of Hyprland (Wayland) and Qtile (Xorg & Wayland) for Arch. This package includes an installation script to install and setup the required components. diff --git a/hypr/scripts/wallpaper.sh b/hypr/scripts/wallpaper.sh index 2a5942f..3baf485 100755 --- a/hypr/scripts/wallpaper.sh +++ b/hypr/scripts/wallpaper.sh @@ -9,12 +9,30 @@ # by Stephan Raabe (2023) # ----------------------------------------------------- +# Cache file for holding the current wallpaper +cache_file="$HOME/.cache/current_wallpaper" +rasi_file="$HOME/.cache/current_wallpaper.rasi" + +# Create cache file if not exists +if [ ! -f $cache_file ] ;then + touch $cache_file + echo "$HOME/wallpaper/default.jpg" > "$cache_file" +fi + +# Create rasi file if not exists +if [ ! -f $rasi_file ] ;then + touch $rasi_file + echo "* { current-image: url(\"$HOME/wallpaper/default.jpg\", height); }" > "$rasi_file" +fi + +current_wallpaper=$(cat "$cache_file") + case $1 in # Load wallpaper from .cache of last session "init") - if [ -f ~/.cache/current_wallpaper.jpg ]; then - wal -q -c -i ~/.cache/current_wallpaper.jpg + if [ -f $cache_file ]; then + wal -q -i $current_wallpaper else wal -q -i ~/wallpaper/ fi @@ -48,9 +66,10 @@ source "$HOME/.cache/wal/colors.sh" echo "Wallpaper: $wallpaper" # ----------------------------------------------------- -# Copy selected wallpaper into .cache folder +# Write selected wallpaper into .cache files # ----------------------------------------------------- -cp $wallpaper ~/.cache/current_wallpaper.jpg +echo "$wallpaper" > "$cache_file" +echo "* { current-image: url(\"$wallpaper\", height); }" > "$rasi_file" # ----------------------------------------------------- # get wallpaper image name diff --git a/hypr/settings/modules/module.sh b/hypr/settings/modules/module.sh index 87b093c..ac284eb 100755 --- a/hypr/settings/modules/module.sh +++ b/hypr/settings/modules/module.sh @@ -1,6 +1,7 @@ #!/bin/bash _getHeader "$name" "$author" echo "$homepage ($email)" +echo "ML4W dotfiles Version 2.7" echo "Settings Version" $(_getVersion) echo "" echo $description diff --git a/hypr/settings/modules/sddm/background/module.sh b/hypr/settings/modules/sddm/background/module.sh index c0f8dd0..dee0309 100755 --- a/hypr/settings/modules/sddm/background/module.sh +++ b/hypr/settings/modules/sddm/background/module.sh @@ -2,6 +2,9 @@ _getHeader "$name" "$author" if gum confirm "Do you want to update the SDDM background with the current wallpaper?" ;then + + cache_file="$HOME/.cache/current_wallpaper" + if [ ! -d /etc/sddm.conf.d/ ]; then sudo mkdir /etc/sddm.conf.d echo "Folder /etc/sddm.conf.d created." @@ -10,11 +13,15 @@ if gum confirm "Do you want to update the SDDM background with the current wallp sudo cp ~/dotfiles/sddm/sddm.conf /etc/sddm.conf.d/ echo "File /etc/sddm.conf.d/sddm.conf updated." - sudo cp ~/.cache/current_wallpaper.jpg /usr/share/sddm/themes/sugar-candy/Backgrounds/ - echo "Current wallpaper copied into /usr/share/sddm/themes/sugar-candy/Backgrounds/" + current_wallpaper=$(cat "$cache_file") + extension="${current_wallpaper##*.}" + sudo cp $current_wallpaper /usr/share/sddm/themes/sugar-candy/Backgrounds/current_wallpaper.$extension + echo "Current wallpaper copied into /usr/share/sddm/themes/sugar-candy/Backgrounds/" + new_wall=$(echo $current_wallpaper | sed "s|$HOME/wallpaper/||g") sudo cp ~/dotfiles/sddm/theme.conf /usr/share/sddm/themes/sugar-candy/ - echo "File theme.conf updated in /usr/share/sddm/themes/sugar-candy/" + + sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/sugar-candy/theme.conf echo "" echo "SDDM background successfully updated!" diff --git a/qtile/autostart.sh b/qtile/autostart.sh index 6ddcc2c..33812e3 100755 --- a/qtile/autostart.sh +++ b/qtile/autostart.sh @@ -16,7 +16,7 @@ # xrandr --output Virtual-1 --mode 1920x1080 # Keyboard layout -setxkbmap en +setxkbmap us # Load picom picom & @@ -28,9 +28,9 @@ xfce4-power-manager & dunst & # Launch polybar -~/dotfiles/qtile/scripts/x11/loadbar.sh +~/dotfiles/qtile/scripts/loadbar.sh sleep 1 # Setup Wallpaper and update colors -~/dotfiles/qtile/scripts/x11/wallpaper.sh init +~/dotfiles/qtile/scripts/wallpaper.sh init diff --git a/qtile/config.py b/qtile/config.py index 3438300..6345304 100644 --- a/qtile/config.py +++ b/qtile/config.py @@ -479,8 +479,7 @@ wmname = "QTILE" # HOOK startup @hook.subscribe.startup_once def autostart(): - autostartscript = "~/.config/qtile/autostart_x11.sh" - subprocess.Popen(['setxkbmap',keyboard_layout]) + autostartscript = "~/.config/qtile/autostart.sh" home = os.path.expanduser(autostartscript) subprocess.Popen([home]) diff --git a/qtile/scripts/wallpaper.sh b/qtile/scripts/wallpaper.sh index d6de54a..3a7b618 100755 --- a/qtile/scripts/wallpaper.sh +++ b/qtile/scripts/wallpaper.sh @@ -9,12 +9,30 @@ # by Stephan Raabe (2023) # ----------------------------------------------------- +# Cache file for holding the current wallpaper +cache_file="$HOME/.cache/current_wallpaper" +rasi_file="$HOME/.cache/current_wallpaper.rasi" + +# Create cache file if not exists +if [ ! -f $cache_file ] ;then + touch $cache_file + echo "$HOME/wallpaper/default.jpg" > "$cache_file" +fi + +# Create rasi file if not exists +if [ ! -f $rasi_file ] ;then + touch $rasi_file + echo "* { current-image: url(\"$HOME/wallpaper/default.jpg\", height); }" > "$rasi_file" +fi + +current_wallpaper=$(cat "$cache_file") + case $1 in # Load wallpaper from .cache of last session "init") - if [ -f ~/.cache/current_wallpaper.jpg ]; then - wal -q -i ~/.cache/current_wallpaper.jpg + if [ -f $cache_file ]; then + wal -q -i $current_wallpaper else wal -q -i ~/wallpaper/ fi @@ -53,9 +71,10 @@ echo "Wallpaper: $wallpaper" newwall=$(echo $wallpaper | sed "s|$HOME/wallpaper/||g") # ----------------------------------------------------- -# Copy selected wallpaper into .cache folder +# Write selected wallpaper into .cache files # ----------------------------------------------------- -cp $wallpaper ~/.cache/current_wallpaper.jpg +echo "$wallpaper" > "$cache_file" +echo "* { current-image: url(\"$wallpaper\", height); }" > "$rasi_file" sleep 1 diff --git a/rofi/config-cliphist.rasi b/rofi/config-cliphist.rasi index 8bd91b7..680d810 100644 --- a/rofi/config-cliphist.rasi +++ b/rofi/config-cliphist.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-compact.rasi b/rofi/config-compact.rasi index fc29627..9856256 100644 --- a/rofi/config-compact.rasi +++ b/rofi/config-compact.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-power.rasi b/rofi/config-power.rasi index 2ae7195..37ccdf9 100644 --- a/rofi/config-power.rasi +++ b/rofi/config-power.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-screenshot.rasi b/rofi/config-screenshot.rasi index beea262..7f6b9ed 100644 --- a/rofi/config-screenshot.rasi +++ b/rofi/config-screenshot.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-short.rasi b/rofi/config-short.rasi index 148168e..9f1126d 100644 --- a/rofi/config-short.rasi +++ b/rofi/config-short.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -59,7 +60,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-themes.rasi b/rofi/config-themes.rasi index 63b6c22..a407eb5 100644 --- a/rofi/config-themes.rasi +++ b/rofi/config-themes.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config-wallpaper.rasi b/rofi/config-wallpaper.rasi index a518238..465e9a0 100644 --- a/rofi/config-wallpaper.rasi +++ b/rofi/config-wallpaper.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["listbox"]; } diff --git a/rofi/config.rasi b/rofi/config.rasi index b9f7655..4dc21b4 100644 --- a/rofi/config.rasi +++ b/rofi/config.rasi @@ -29,6 +29,7 @@ configuration { /* ---- Load pywal colors (custom wal template) ---- */ @import "~/.cache/wal/colors-rofi-pywal" +@import "~/.cache/current_wallpaper.rasi" /* ---- Window ---- */ window { @@ -58,7 +59,7 @@ mainbox { spacing: 0px; margin: 0px; background-color: @background; - background-image: url("~/.cache/current_wallpaper.jpg", height); + background-image: @current-image; children: ["imagebox","listbox"]; } diff --git a/sddm/theme.conf b/sddm/theme.conf index c25d62f..46d7ca1 100644 --- a/sddm/theme.conf +++ b/sddm/theme.conf @@ -1,6 +1,6 @@ [General] -Background="Backgrounds/current_wallpaper.jpg" +Background="Backgrounds/CURRENTWALLPAPER" ## Path relative to the theme root directory. Most standard image file formats are allowed including support for transparency. (e.g. background.jpeg/illustration.GIF/Foto.png/undraw.svgz) diff --git a/sddm/update.sh b/sddm/update.sh index 46256aa..41cca0b 100755 --- a/sddm/update.sh +++ b/sddm/update.sh @@ -9,6 +9,7 @@ # by Stephan Raabe (2023) # ----------------------------------------------------- +cache_file="$HOME/.cache/current_wallpaper" clear echo "Update the background wallpaper of sddm to the current wallpaper." echo "" @@ -20,10 +21,15 @@ fi sudo cp sddm.conf /etc/sddm.conf.d/ echo "File /etc/sddm.conf.d/sddm.conf updated." -sudo cp ~/.cache/current_wallpaper.jpg /usr/share/sddm/themes/sugar-candy/Backgrounds/ -echo "Current wallpaper copied into /usr/share/sddm/themes/sugar-candy/Backgrounds/" +current_wallpaper=$(cat "$cache_file") +extension="${current_wallpaper##*.}" +sudo cp $current_wallpaper /usr/share/sddm/themes/sugar-candy/Backgrounds/current_wallpaper.$extension +echo "Current wallpaper copied into /usr/share/sddm/themes/sugar-candy/Backgrounds/" +new_wall=$(echo $current_wallpaper | sed "s|$HOME/wallpaper/||g") sudo cp theme.conf /usr/share/sddm/themes/sugar-candy/ +sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/sugar-candy/theme.conf + echo "File theme.conf updated in /usr/share/sddm/themes/sugar-candy/" echo ""