This commit is contained in:
2025-10-23 22:08:33 +02:00
parent e70ca40449
commit 9325e055da
9 changed files with 337 additions and 250 deletions

View File

@@ -23,7 +23,10 @@ https://github.com/user-attachments/assets/7e2db305-58bc-4b3d-9c65-7dc0461aead7
<img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/backdrop.jpg?raw=true"/> <img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/backdrop.jpg?raw=true"/>
</figure> </figure>
- Grub menu: </details>
<details>
<summary>Grub menu</summary>
<figure> <figure>
<img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/grub.jpg?raw=true"/> <img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/grub.jpg?raw=true"/>
@@ -41,7 +44,7 @@ https://github.com/user-attachments/assets/7e2db305-58bc-4b3d-9c65-7dc0461aead7
- Terminal: **Kitty** & Ghostty - Terminal: **Kitty** & Ghostty
- Power Menu: Wlogout - Power Menu: Wlogout
- Colorscheme: Catppuccin Mocha - Colorscheme: Catppuccin Mocha
- App Launcher: Rofi - App Launcher: **Rofi** | fuzzel
- Desktop Widgets: Eww | **Quickshell** - Desktop Widgets: Eww | **Quickshell**
- Wallpaper Daemon: Swww - Wallpaper Daemon: Swww
- Notification Daemon: Mako | **Quickshell** - Notification Daemon: Mako | **Quickshell**
@@ -103,3 +106,37 @@ including:
- Sour Gummy - Sour Gummy
- Noto Sans - Noto Sans
- ... - ...
## Some of the Scripts
> [!TIP]
>
> Most scripts are placed in the `scripts` folder.
- `config-sync`
creates symlinks in `~/.config/` referring to files and directories in `config` folder. If there is already a file or directorie or whatever with the same name in `~/config/`, it will be moved to `~/.config/config-backup/$(date +%Y%m%d-%H%M%S)/` before a new symlink is created.
- `config-switch`
updats configurations of several apps according to the current (or given as parameter) desktop environment. e.g. Niri currently doesn't support blurred windows, so terminal emulators such as Kitty and Ghostty could reduce transparency for better appearences.
- `change-colortheme`
changes the colortheme of a number of pre-configured apps. This is done by calling certain scripts that are usually called `apply-color`.
- `wallpaper-daemon` & `change-wallpaper`
provides wallpaper for both Hyprland and Niri (background and backdrop). It can also automatically set the wallpaper to a blurred version when there is a window in focus, however, this is currently only implemented in Niri.
- `ssh-init`
ensures that there is only one valid ssh-agent running at the same time. Useful when creating ssh-agent somewhere else than the login shell scripts or across sessions.
- `screenshot`
takes a screenshot, and sends a notification asking whether to edit it by clicking on it. Works on both Hyprland and Niri.
- `record-script`
records the screen based on wf-recorder and using av1_nvenc as the video encoder. The default codec parameters will generate a fairly large video file (80 Mbps), a later transcoding is definitly required in this case.

View File

@@ -1,9 +1,9 @@
# ssh with encrypted private keys # ssh with encrypted private keys
# $ssh_keys should be set in advance or left empty to use default keys # $ssh_keys should be set in advance or left empty to use the default keys
if type -q ssh if type -q ssh
bass $(ssh-init) > /dev/null 2>&1 bass $(ssh-init) > /dev/null 2>&1
# only need to input passphrase once per session # avoiding entering passphrase every time
function sshs function sshs
# test if keys are added to ssh-agent # test if keys are added to ssh-agent
if not ssh-add -l > /dev/null 2>&1 if not ssh-add -l > /dev/null 2>&1

View File

@@ -226,8 +226,8 @@ window-rule {
window-rule { window-rule {
match app-id="blueberry" match app-id="blueberry"
match app-id="blueman-manager" match app-id="blueman-manager"
match app-id="pavucontrol"
match app-id="org.pulseaudio.pavucontrol" match app-id="org.pulseaudio.pavucontrol"
match app-id="com.saivert.pwvucontrol"
match app-id="Waydroid" match app-id="Waydroid"
match app-id="org.kde.kcalc" match app-id="org.kde.kcalc"
match app-id="org.kde.kalk" match app-id="org.kde.kalk"
@@ -300,6 +300,7 @@ binds {
Mod+Shift+T { spawn "ghostty"; } Mod+Shift+T { spawn "ghostty"; }
Mod+Shift+Return { spawn "ghostty"; } Mod+Shift+Return { spawn "ghostty"; }
Mod+Shift+W { spawn "wallpaper-chooser"; } Mod+Shift+W { spawn "wallpaper-chooser"; }
Mod+P { spawn-sh "pkill -x -n pwvucontrol || pwvucontrol"; }
// Quickshell // Quickshell
Mod+Space { spawn-sh "qs ipc call panels toggleControlCenter"; } Mod+Space { spawn-sh "qs ipc call panels toggleControlCenter"; }

View File

@@ -21,6 +21,6 @@ MonitorItem {
AudioService.toggleMute(); AudioService.toggleMute();
} }
onRightClicked: { onRightClicked: {
Quickshell.execDetached(["sh", "-c", "pkill -x -n pavucontrol || pavucontrol"]); Quickshell.execDetached(["sh", "-c", "pkill -x -n pwvucontrol || pwvucontrol"]);
} }
} }

View File

@@ -1,247 +1,291 @@
{ {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Global configuration // Global configuration
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
"layer": "bottom", "layer": "bottom",
"position": "top", "position": "top",
"margin-left": 0, "margin-left": 0,
"margin-bottom": 0, "margin-bottom": 0,
"margin-right": 0, "margin-right": 0,
"spacing": 2, // Gaps between modules (px) "spacing": 2, // Gaps between modules (px)
"modules-left": [ "modules-left": [
"custom/rofi", "custom/rofi",
"custom/separator", "custom/separator",
"group/workspaceactions", "group/workspaceactions",
"custom/separator", "custom/separator",
"hyprland/window", "hyprland/window",
"custom/mediaplayer" "custom/mediaplayer"
], ],
"modules-center": ["clock"], "modules-center": [
"modules-right": ["group/monitors", "custom/separator", "group/tray-expander", "idle_inhibitor", "custom/power"], "clock"
// ------------------------------------------------------------------------- ],
// Modules "modules-right": [
// ------------------------------------------------------------------------- "group/monitors",
// Separators "custom/separator",
"custom/separator": { "group/tray-expander",
"format": "|" "idle_inhibitor",
}, "custom/power"
// Buttons ],
"custom/power": { // -------------------------------------------------------------------------
"format": "󰐥", // Modules
"tooltip": false, // -------------------------------------------------------------------------
"on-click": "wlogout", // Separators
"min-length": 2, "custom/separator": {
"max-length": 2 "format": "|"
},
"custom/rofi": {
"format": "󰣇",
"tooltip": false,
// "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
// "on-click": "fuzzel",
// "on-click-middle": "pkill -9 fuzzel",
"on-click": "eww open main --toggle",
"on-click-right": "pkill rofi || rofi -show drun",
"min-length": 2,
"max-length": 2
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}, },
"min-length": 2, // Buttons
"max-length": 2 "custom/power": {
}, "format": "󰐥",
// Time and Date "tooltip": false,
"clock": { "on-click": "wlogout",
"format": "{:%H:%M | %e %b}", "min-length": 2,
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>", "max-length": 2
"today-format": "<b>{}</b>"
},
// System monitors
"group/monitors": {
"modules": ["network#speed", "custom/publicip", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"],
"orientation": "inherit"
},
"network#speed": {
"interval": 1,
"format": "{ifname}",
"format-wifi": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-disconnected": "󰌙",
"tooltip-format": "{ipaddr}",
"format-linked": "󰈁 {ifname} (No IP)",
"tooltip-format-wifi": "{essid} {signalStrength}%",
"tooltip-format-ethernet": "{ifname} 󰌘",
"tooltip-format-disconnected": "󰌙 Disconnected",
"min-length": 20
},
"custom/publicip": {
"interval": 30,
"return-type": "json",
"format": " {text}",
"tooltip-format": "{alt}",
"max-length": 6,
"min-length": 6,
"exec": "$HOME/.config/waybar/modules/publicip.sh",
"on-click": "rm -f $HOME/.config/waybar/modules/publicip.cache && sleep 0.1"
},
"temperature": {
"interval": 5,
"thermal-zone": 6,
"hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input",
"critical-threshold": 80,
// "format-critical": " {temperatureC}°C",
"format-critical": " {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""],
"max-length": 6,
"min-length": 6
},
"memory": {
"interval": 11,
// "format": " {used:0.2f} / {total:0.0f} GB",
"format": "󰍛 {percentage}%",
"on-click": "killall btop || ghostty -e btop",
"max-length": 6,
"min-length": 6
},
"cpu": {
"interval": 3,
//"format": " {}%", // Icon: microchip
"format": "󰘚 {usage}%",
"max-length": 6,
"min-length": 6,
"on-click": "killall btop || ghostty -e btop"
},
"battery": {
"interval": 30,
"states": {
"good": 95,
"warning": 30,
"critical": 15
}, },
"format": "{icon} {capacity}%", "custom/rofi": {
"format-charging": " {capacity}%", "format": "󰣇",
"format-plugged": " {capacity}%", "tooltip": false,
"format-icons": ["", "", "", "", ""], // "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
"max-length": 6, // "on-click": "fuzzel",
"min-length": 6 // "on-click-middle": "pkill -9 fuzzel",
}, "on-click": "eww open main --toggle",
"backlight": { "on-click-right": "pkill rofi || rofi -show drun",
"device": "$DISPLAY_DEVICE", "min-length": 2,
"format": "{icon} {percent}%", "max-length": 2
"format-alt": "{percent}% {icon}",
"format-alt-click": "click-right",
//"format-icons": ["", ""],
"format-icons": [""],
"on-scroll-down": "brightnessctl -d $BRIGHTNESSCTL_DEVICE set -5%",
"on-scroll-up": "brightnessctl -d $BRIGHTNESSCTL_DEVICE set +5%",
"max-length": 6,
"min-length": 6
},
"wireplumber": {
"on-click": "pavucontrol",
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"on-scroll-down": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-",
"on-scroll-up": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+",
"format": "{icon} {volume}%",
"format-muted": "",
"format-source": "",
"format-source-muted": "",
//"format-muted": "<span foreground='#fab387'> </span>",
//"format-icons": [ "<span foreground='#fab387'></span>" ]
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", "", "", "", ""]
}, },
"max-length": 6, "idle_inhibitor": {
"min-length": 6 "format": "{icon}",
}, "format-icons": {
// Hyprland "activated": "",
"group/workspaceactions": { "deactivated": ""
"modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"], },
"orientation": "inherit" "min-length": 2,
}, "max-length": 2
"hyprland/workspaces": { },
"all-outputs": true, // Time and Date
"format": "{id}", "clock": {
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null", "format": "{:%H:%M | %e %b}",
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null", "tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"sort-by-number": true, "today-format": "<b>{}</b>"
"active-only": false //, },
// System monitors
"group/monitors": {
"modules": [
"network#speed",
"custom/publicip",
"temperature",
"memory",
"cpu",
"battery",
"backlight",
"wireplumber"
],
"orientation": "inherit"
},
"network#speed": {
"interval": 1,
"format": "{ifname}",
"format-wifi": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-disconnected": "󰌙",
"tooltip-format": "{ipaddr}",
"format-linked": "󰈁 {ifname} (No IP)",
"tooltip-format-wifi": "{essid} {signalStrength}%",
"tooltip-format-ethernet": "{ifname} 󰌘",
"tooltip-format-disconnected": "󰌙 Disconnected",
"min-length": 20
},
"custom/publicip": {
"interval": 30,
"return-type": "json",
"format": " {text}",
"tooltip-format": "{alt}",
"max-length": 6,
"min-length": 6,
"exec": "$HOME/.config/waybar/modules/publicip.sh",
"on-click": "rm -f $HOME/.config/waybar/modules/publicip.cache && sleep 0.1"
},
"temperature": {
"interval": 5,
"thermal-zone": 6,
"hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input",
"critical-threshold": 80,
// "format-critical": " {temperatureC}°C",
"format-critical": " {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
""
],
"max-length": 6,
"min-length": 6
},
"memory": {
"interval": 11,
// "format": " {used:0.2f} / {total:0.0f} GB",
"format": "󰍛 {percentage}%",
"on-click": "killall btop || ghostty -e btop",
"max-length": 6,
"min-length": 6
},
"cpu": {
"interval": 3,
//"format": " {}%", // Icon: microchip
"format": "󰘚 {usage}%",
"max-length": 6,
"min-length": 6,
"on-click": "killall btop || ghostty -e btop"
},
"battery": {
"interval": 30,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
],
"max-length": 6,
"min-length": 6
},
"backlight": {
"device": "$DISPLAY_DEVICE",
"format": "{icon} {percent}%",
"format-alt": "{percent}% {icon}",
"format-alt-click": "click-right",
//"format-icons": ["", ""],
"format-icons": [
""
],
"on-scroll-down": "brightnessctl -d $BRIGHTNESSCTL_DEVICE set -5%",
"on-scroll-up": "brightnessctl -d $BRIGHTNESSCTL_DEVICE set +5%",
"max-length": 6,
"min-length": 6
},
"wireplumber": {
"on-click": "pwvucontrol",
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"on-scroll-down": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-",
"on-scroll-up": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+",
"format": "{icon} {volume}%",
"format-muted": "",
"format-source": "",
"format-source-muted": "",
//"format-muted": "<span foreground='#fab387'> </span>",
//"format-icons": [ "<span foreground='#fab387'></span>" ]
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": [
"",
"",
"",
"",
"",
""
]
},
"max-length": 6,
"min-length": 6
},
// Hyprland
"group/workspaceactions": {
"modules": [
"hyprland/workspaces#special",
"hyprland/workspaces",
"custom/workspacenew"
],
"orientation": "inherit"
},
"hyprland/workspaces": {
"all-outputs": true,
"format": "{id}",
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null",
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null",
"sort-by-number": true,
"active-only": false //,
// "window-rewrite-default": "", // "window-rewrite-default": "",
// "window-rewrite": { // "window-rewrite": {
// "class<kitty>": "", // "class<kitty>": "",
// "class<code>": "󰨞", // "class<code>": "󰨞",
// "class<zen-browser>": "󰈹", // "class<zen-browser>": "󰈹",
// "class<firefox>": "󰈹", // "class<firefox>": "󰈹",
// "class<ghostty>": "", // "class<ghostty>": "",
// "class<spotify>": "󰓇" // "class<spotify>": "󰓇"
// } // }
},
"hyprland/workspaces#special": {
"persistent-workspaces": {
"special:s": []
}, },
"persistent-only": true, "hyprland/workspaces#special": {
"show-special": true, "persistent-workspaces": {
"special-visible-only": false, "special:s": []
"format": "S", },
"window-rewrite-default": "" //, "persistent-only": true,
// "window-rewrite": { "show-special": true,
// "class<kitty>": "", "special-visible-only": false,
// "class<code>": "󰨞", "format": "S",
// "class<zen-browser>": "󰈹", "window-rewrite-default": "" //,
// "class<firefox>": "󰈹", // "window-rewrite": {
// "class<ghostty>": "", // "class<kitty>": "",
// "class<spotify>": "󰓇" // "class<code>": "󰨞",
// } // "class<zen-browser>": "󰈹",
}, // "class<firefox>": "󰈹",
"custom/workspacenew": { // "class<ghostty>": "",
"format": "+", // "class<spotify>": "󰓇"
"tooltip": false, // }
"on-click": "workspace-new"
},
"hyprland/window": {
"format": "",
"max-length": 100,
"separate-outputs": true,
"icon": true,
"on-click-middle": "hyprctl dispatch killactive",
"icon-size": 14
},
"custom/mediaplayer": {
"format": "{text}",
"return-type": "json",
"max-length": 100,
"escape": true,
"exec": "$HOME/.config/waybar/modules/mediaplayer.py 2> /dev/null",
"on-click": "playerctl play-pause",
"on-click-right": "lyrics-widgets",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"group/tray-expander": {
"orientation": "inherit",
"drawer": {
"transition-duration": 600,
"children-class": "tray-group-item"
}, },
"modules": ["custom/expand-icon", "tray", "custom/separator"] "custom/workspacenew": {
}, "format": "+",
"custom/expand-icon": { "tooltip": false,
"format": "", "on-click": "workspace-new"
"tooltip": false, },
"min-length": 2, "hyprland/window": {
"max-length": 2 "format": "",
}, "max-length": 100,
"tray": { "separate-outputs": true,
"icon-size": 15, "icon": true,
"spacing": 5 "on-click-middle": "hyprctl dispatch killactive",
} "icon-size": 14
},
"custom/mediaplayer": {
"format": "{text}",
"return-type": "json",
"max-length": 100,
"escape": true,
"exec": "$HOME/.config/waybar/modules/mediaplayer.py 2> /dev/null",
"on-click": "playerctl play-pause",
"on-click-right": "lyrics-widgets",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"group/tray-expander": {
"orientation": "inherit",
"drawer": {
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": [
"custom/expand-icon",
"tray",
"custom/separator"
]
},
"custom/expand-icon": {
"format": "",
"tooltip": false,
"min-length": 2,
"max-length": 2
},
"tray": {
"icon-size": 15,
"spacing": 5
}
} }

View File

@@ -50,7 +50,7 @@ rofi(-wayland)
mpv mpv
network-manager-applet # nm-applet network-manager-applet # nm-applet
blueman # bluetooth GUI & applet blueman # bluetooth GUI & applet
pavucontrol pwvucontrol
gnome-text-editor # or kwrite, notepad replacement gnome-text-editor # or kwrite, notepad replacement
btop # system monitor btop # system monitor
activate-linux # :/ activate-linux # :/
@@ -72,4 +72,4 @@ kvantum
bc bc
jq jq
python-colorthief python-colorthief
python-watchdog python-watchdog

View File

@@ -13,14 +13,14 @@ for item in "kitty" "ghostty" "wlogout"; do
if [ -L "$HOME/.config/$target" ]; then if [ -L "$HOME/.config/$target" ]; then
rm -v "$HOME/.config/$target" rm -v "$HOME/.config/$target"
elif [ -e "$HOME/.config/$target" ]; then elif [ -e "$HOME/.config/$target" ]; then
echo "Error: $HOME/.config/$target is not a symlink." >&2 echo "Error: $HOME/.config/$target exists and is not a symlink." >&2
exit 1 exit 1
fi fi
done done
if [ "$desktop" = "niri" ]; then if [ "$desktop" = "niri" ]; then
ln -sv "$path/../config/$item-niri" "$HOME/.config/$item" ln -sv "$(realpath --relative-to="$HOME/.config" "$path/../config/$item-niri")" "$HOME/.config/$item"
else else
ln -sv "$path/../config/$item" "$HOME/.config/$item" ln -sv "$(realpath --relative-to="$HOME/.config" "$path/../config/$item")" "$HOME/.config/$item"
fi fi
done done

View File

View File

@@ -1,3 +1,8 @@
[ "$(basename "$0")" = "apply-color-helper" ] && {
echo "This script is meant to be sourced, not executed directly."
exit 1
}
[ -z "$1" ] && exit 1 [ -z "$1" ] && exit 1
palette="$1" palette="$1"
[ -z "$2" ] && exit 1 [ -z "$2" ] && exit 1