made wallpaper settable with xdg config
This commit is contained in:
+16
@@ -103,5 +103,21 @@ download \
|
|||||||
"$SCRIPT_DIR/colors/icons/correct.svg" \
|
"$SCRIPT_DIR/colors/icons/correct.svg" \
|
||||||
"correct.svg"
|
"correct.svg"
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Example Wallpaper
|
||||||
|
# ----------------------------
|
||||||
|
echo
|
||||||
|
info "Preparing wallpaper..."
|
||||||
|
|
||||||
|
WALLPAPER_DIR=$(scripts/wallpaper_dir.sh)
|
||||||
|
|
||||||
|
# 5. Ensure it exists
|
||||||
|
mkdir -p "$WALLPAPER_DIR"
|
||||||
|
|
||||||
|
info "Copying example Wallpaper..."
|
||||||
|
|
||||||
|
# 6. Copy example wallpaper
|
||||||
|
cp $SCRIPT_DIR/colors/example_background.png "$WALLPAPER_DIR/japan_old_emperor_stream_with_bridge.png"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
ok "All assets prepared successfully."
|
ok "All assets prepared successfully."
|
||||||
@@ -5,6 +5,7 @@ import Quickshell.Io
|
|||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
|
||||||
import "../../colors"
|
import "../../colors"
|
||||||
|
import "../../states/wallpaperdir" as Global
|
||||||
|
|
||||||
Variants {
|
Variants {
|
||||||
id: root
|
id: root
|
||||||
@@ -32,6 +33,7 @@ Variants {
|
|||||||
Keys.onPressed: event => {
|
Keys.onPressed: event => {
|
||||||
if (event.key == Qt.Key_Escape) {
|
if (event.key == Qt.Key_Escape) {
|
||||||
console.log("Pressed Escape, closing Wallpaper Picker")
|
console.log("Pressed Escape, closing Wallpaper Picker")
|
||||||
|
console.log("Wallpaper Dir:", Global.WallpaperState.wallpaperDir)
|
||||||
wlogoutLoader.active = false
|
wlogoutLoader.active = false
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < buttons.length; i++) {
|
for (let i = 0; i < buttons.length; i++) {
|
||||||
@@ -51,16 +53,17 @@ Variants {
|
|||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
source: Quickshell.env("HOME") + "/Pictures/Wallpapers/Static/blurred.jpg"
|
source: Global.WallpaperState.wallpaperDir + "/Static/blurred.jpg"
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: {
|
onClicked: {
|
||||||
console.log("Pressed Escape, closing Wallpaper Picker")
|
console.log("clicked ???, closing Wallpaper Picker")
|
||||||
wlogoutLoader.active = false
|
wlogoutLoader.active = false
|
||||||
}
|
}
|
||||||
GridLayout {
|
GridLayout {
|
||||||
|
|||||||
@@ -3,14 +3,32 @@ import Quickshell
|
|||||||
import Quickshell.Hyprland
|
import Quickshell.Hyprland
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
|
|
||||||
|
import "../../states/wallpaper" as Global
|
||||||
|
|
||||||
|
|
||||||
Item { // container, invisible
|
Item { // container, invisible
|
||||||
id: wlLoader
|
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 {
|
Loader {
|
||||||
id: wlogoutLoader
|
id: wlogoutLoader
|
||||||
active: false
|
active: false
|
||||||
sourceComponent: Wlogout { id: wLogout }
|
sourceComponent: Wlogout {
|
||||||
|
id: wLogout
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalShortcut {
|
GlobalShortcut {
|
||||||
@@ -19,7 +37,8 @@ Item { // container, invisible
|
|||||||
|
|
||||||
onPressed: {
|
onPressed: {
|
||||||
console.log("Pressed Meta+Shift+W (Hyprland global shortcut)")
|
console.log("Pressed Meta+Shift+W (Hyprland global shortcut)")
|
||||||
wlogoutLoader.active = !wlogoutLoader.active
|
getWallpaper.running = true
|
||||||
|
// wlogoutLoader.active = !wlogoutLoader.active
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import Quickshell.Hyprland
|
|||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
import Qt.labs.folderlistmodel
|
import Qt.labs.folderlistmodel
|
||||||
import "../../colors"
|
import "../../colors"
|
||||||
|
import "../../states/wallpaperdir" as Global
|
||||||
|
|
||||||
PanelWindow {
|
PanelWindow {
|
||||||
id: picker
|
id: picker
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
|
|
||||||
# Folder with full-size wallpapers
|
# 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
|
# Folder to store thumbnails
|
||||||
THUMB_DIR="$HOME/.cache/wallpaper-thumbs"
|
THUMB_DIR="$HOME/.cache/wallpaper-thumbs"
|
||||||
|
echo "$THUMB_DIR"
|
||||||
|
|
||||||
if [ ! -d $THUMB_DIR ]; then
|
if [ ! -d $THUMB_DIR ]; then
|
||||||
mkdir -p $THUMB_DIR;
|
mkdir -p $THUMB_DIR;
|
||||||
@@ -66,12 +71,14 @@ for img in "$WALLPAPER_DIR"/*.{jpg,jpeg,png}; do
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
num+=1
|
((num++))
|
||||||
|
|
||||||
# Generate thumbnail using ImageMagick
|
# Generate thumbnail using ImageMagick
|
||||||
if [ -x "/usr/bin/magick" ]; then
|
if [ -x "/usr/bin/magick" ]; then
|
||||||
magick "$img" -resize "${MAX_DIM}x${MAX_DIM}" "$thumb"
|
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
|
else
|
||||||
if [ -f "$temp_image_name" ] && [ "$temp_image_name" -nt "$img" ]; then
|
if [ -f "$temp_image_name" ] && [ "$temp_image_name" -nt "$img" ]; then
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
#!/bin/bash
|
#!/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
|
# Path to the image is the first argument
|
||||||
IMAGE="$1"
|
IMAGE="$1"
|
||||||
image_name=$(basename "$IMAGE")
|
image_name=$(basename "$IMAGE")
|
||||||
image="$HOME/Pictures/Wallpapers/$image_name"
|
image="$WALLPAPER_DIR/$image_name"
|
||||||
|
|
||||||
echo "start"
|
echo "start"
|
||||||
|
|
||||||
@@ -45,6 +54,7 @@ elif [ -x "/usr/bin/hyprpaper" ]; then
|
|||||||
sed -i "3s|path = .*|path = ${image}|" ~/.config/hypr/hyprpaper.conf
|
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
|
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"
|
hyprctl hyprpaper wallpaper "$display, $image"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -74,9 +84,9 @@ if [ -x "/usr/bin/sddm" ]; then
|
|||||||
else
|
else
|
||||||
cp $image $blurred_wp
|
cp $image $blurred_wp
|
||||||
fi
|
fi
|
||||||
if [ -x "/usr/bin/sddm" ] && [ -d "/usr/share/backgrounds" ]; then
|
# if [ -x "/usr/bin/sddm" ] && [ -d "/usr/share/backgrounds" ]; then
|
||||||
sddm_background="/usr/share/backgrounds/background.jpg"
|
# sddm_background="/usr/share/backgrounds/background.jpg"
|
||||||
cp "$image" "$sddm_background"
|
# cp "$image" "$sddm_background"
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
echo "test"
|
echo "test"
|
||||||
|
|||||||
Executable
+21
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Setting wallpaper_dir
|
||||||
|
|
||||||
|
WALLPAPER_DIR="${XDG_PICTURES_DIR:-}"
|
||||||
|
|
||||||
|
# 2. If empty, use xdg-user-dir (most reliable)
|
||||||
|
if [ -z "$WALLPAPER_DIR" ]; then
|
||||||
|
if command -v xdg-user-dir >/dev/null 2>&1; then
|
||||||
|
WALLPAPER_DIR="$(xdg-user-dir PICTURES 2>/dev/null)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Final fallback (hardcoded default)
|
||||||
|
if [ -z "$WALLPAPER_DIR" ] || [ ! -d "$WALLPAPER_DIR" ]; then
|
||||||
|
WALLPAPER_DIR="$HOME/Pictures"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Your wallpaper subfolder
|
||||||
|
WALLPAPER_DIR="$WALLPAPER_DIR/Wallpapers"
|
||||||
|
|
||||||
|
echo $WALLPAPER_DIR
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
pragma Singleton
|
||||||
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
property string wallpaperDir: Quickshell.env("HOME") + "/Pictures/Wallpapers"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
singleton WallpaperState WallpaperState.qml
|
||||||
Reference in New Issue
Block a user