made wallpaper settable with xdg config

This commit is contained in:
Hannes
2026-06-08 23:53:18 +02:00
parent b2eadfe9a2
commit c37db71cac
9 changed files with 97 additions and 12 deletions
+5 -2
View File
@@ -5,6 +5,7 @@ import Quickshell.Io
import Quickshell.Wayland
import "../../colors"
import "../../states/wallpaperdir" as Global
Variants {
id: root
@@ -32,6 +33,7 @@ Variants {
Keys.onPressed: event => {
if (event.key == Qt.Key_Escape) {
console.log("Pressed Escape, closing Wallpaper Picker")
console.log("Wallpaper Dir:", Global.WallpaperState.wallpaperDir)
wlogoutLoader.active = false
} else {
for (let i = 0; i < buttons.length; i++) {
@@ -51,16 +53,17 @@ Variants {
Rectangle {
anchors.fill: parent
Image {
anchors.fill: parent
source: Quickshell.env("HOME") + "/Pictures/Wallpapers/Static/blurred.jpg"
source: Global.WallpaperState.wallpaperDir + "/Static/blurred.jpg"
fillMode: Image.PreserveAspectCrop
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log("Pressed Escape, closing Wallpaper Picker")
console.log("clicked ???, closing Wallpaper Picker")
wlogoutLoader.active = false
}
GridLayout {
+21 -2
View File
@@ -3,14 +3,32 @@ import Quickshell
import Quickshell.Hyprland
import Quickshell.Io
import "../../states/wallpaper" as Global
Item { // container, invisible
id: wlLoader
Process {
id: getWallpaper
command: ["sh", "-c", Quickshell.env("HOME") + "/.config/quickshell/scripts/wallpaper_dir.sh"]
stdout: StdioCollector {
onStreamFinished: function() {
console.log("getWallpaper: " + this.text)
Global.WallpaperState.wallpaperDir = this.text.trim()
wlogoutLoader.active = true
}
}
}
Loader {
id: wlogoutLoader
active: false
sourceComponent: Wlogout { id: wLogout }
sourceComponent: Wlogout {
id: wLogout
}
}
GlobalShortcut {
@@ -19,7 +37,8 @@ Item { // container, invisible
onPressed: {
console.log("Pressed Meta+Shift+W (Hyprland global shortcut)")
wlogoutLoader.active = !wlogoutLoader.active
getWallpaper.running = true
// wlogoutLoader.active = !wlogoutLoader.active
}
}
+1
View File
@@ -5,6 +5,7 @@ import Quickshell.Hyprland
import Quickshell.Io
import Qt.labs.folderlistmodel
import "../../colors"
import "../../states/wallpaperdir" as Global
PanelWindow {
id: picker
+10 -3
View File
@@ -1,10 +1,15 @@
#!/usr/bin/env bash
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
# Folder with full-size wallpapers
WALLPAPER_DIR="$HOME/Pictures/Wallpapers"
WALLPAPER_DIR=$("$SCRIPT_DIR/../../scripts/wallpaper_dir.sh")
echo "$WALLPAPER_DIR"
# Folder to store thumbnails
THUMB_DIR="$HOME/.cache/wallpaper-thumbs"
echo "$THUMB_DIR"
if [ ! -d $THUMB_DIR ]; then
mkdir -p $THUMB_DIR;
@@ -66,12 +71,14 @@ for img in "$WALLPAPER_DIR"/*.{jpg,jpeg,png}; do
continue
fi
num+=1
((num++))
# Generate thumbnail using ImageMagick
if [ -x "/usr/bin/magick" ]; then
magick "$img" -resize "${MAX_DIM}x${MAX_DIM}" "$thumb"
rm $temp_image_name
if [ -f "$temp_image_name" ]; then
rm "$temp_image_name"
fi
else
if [ -f "$temp_image_name" ] && [ "$temp_image_name" -nt "$img" ]; then
continue
+15 -5
View File
@@ -1,9 +1,18 @@
#!/bin/bash
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
# Folder with full-size wallpapers
WALLPAPER_DIR=$("$SCRIPT_DIR/../../scripts/wallpaper_dir.sh")
if [ -z "$WALLPAPER_DIR" ]; then
echo "Failed to determine wallpaper directory. Exiting."
exit 1
fi
# Path to the image is the first argument
IMAGE="$1"
image_name=$(basename "$IMAGE")
image="$HOME/Pictures/Wallpapers/$image_name"
image="$WALLPAPER_DIR/$image_name"
echo "start"
@@ -45,6 +54,7 @@ elif [ -x "/usr/bin/hyprpaper" ]; then
sed -i "3s|path = .*|path = ${image}|" ~/.config/hypr/hyprpaper.conf
hyprctl monitors -j | jq -r 'sort_by(.id) | .[].name' | while IFS= read -r display; do
echo "hyprctl hyprpaper wallpaper $display, $image"
hyprctl hyprpaper wallpaper "$display, $image"
done
fi
@@ -74,9 +84,9 @@ if [ -x "/usr/bin/sddm" ]; then
else
cp $image $blurred_wp
fi
if [ -x "/usr/bin/sddm" ] && [ -d "/usr/share/backgrounds" ]; then
sddm_background="/usr/share/backgrounds/background.jpg"
cp "$image" "$sddm_background"
fi
# if [ -x "/usr/bin/sddm" ] && [ -d "/usr/share/backgrounds" ]; then
# sddm_background="/usr/share/backgrounds/background.jpg"
# cp "$image" "$sddm_background"
# fi
echo "test"