diff options
| author | Martin Guzman <55927935+brockar@users.noreply.github.com> | 2026-01-21 16:18:43 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-21 16:18:43 -0300 |
| commit | c6198c1bedeffd08ec3f60f7ba3a41e6c5870885 (patch) | |
| tree | 458c030873b4e70ff9eda0baed5df257434871f4 /config | |
| parent | 7dedbe3d4a4560ac15987fdf8164dbbb1f4701bf (diff) | |
| parent | 88a09344e8cc7cffe69a017eb752e8c6fa17ddcb (diff) | |
Merge pull request #927 from JaKooLit/development
Merge Development to main branch for release
Diffstat (limited to 'config')
122 files changed, 3415 insertions, 700 deletions
diff --git a/config/ghostty/ghostty.config b/config/ghostty/ghostty.config new file mode 100644 index 00000000..3795ec3f --- /dev/null +++ b/config/ghostty/ghostty.config @@ -0,0 +1,29 @@ +adjust-cell-height = 10% +background-blur-radius = 60 +background-opacity = 1.00 +bold-is-bright = false +confirm-close-surface = false +cursor-style = bar +font-family = FantasqueSansM Nerd Font Mono +font-size = 12 +gtk-single-instance = true +mouse-hide-while-typing = true +quick-terminal-position = center +selection-background = #2d3f76 +selection-foreground = #c8d3f5 +shell-integration = detect +shell-integration-features = cursor,sudo +term = xterm-256color +title = GhosTTY +unfocused-split-opacity = 0.5 +wait-after-command = false +window-height = 32 +window-save-state = always +window-theme = dark +window-width = 110 + +# Theme switching (optional): managed by your theme changer (symlink or generated file). +config-file = ?~/.config/ghostty/theme.conf + +# Wallust (optional): wallust template should write Ghostty colors here; it will override theme colors. +config-file = ?~/.config/ghostty/wallust.conf diff --git a/config/hypr/UserConfigs/UserDecorations.conf b/config/hypr/UserConfigs/UserDecorations.conf index 0b450904..f203fe5b 100644 --- a/config/hypr/UserConfigs/UserDecorations.conf +++ b/config/hypr/UserConfigs/UserDecorations.conf @@ -12,14 +12,14 @@ general { border_size = 2 gaps_in = 2 gaps_out = 4 - - col.active_border = $color12 + + col.active_border = $color12 col.inactive_border = $color10 } decoration { rounding = 10 - + active_opacity = 1.0 inactive_opacity = 0.9 fullscreen_opacity = 1.0 @@ -37,13 +37,13 @@ decoration { color_inactive = $color10 } - blur { - enabled = true + enabled = true size = 6 - passes = 2 - ignore_opacity = true + passes = 3 new_optimizations = true + xray = true + ignore_opacity = true special = true popups = true } diff --git a/config/hypr/UserScripts/RainbowBorders.bak.sh b/config/hypr/UserScripts/RainbowBorders.bak.sh new file mode 100755 index 00000000..67269b8a --- /dev/null +++ b/config/hypr/UserScripts/RainbowBorders.bak.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## +# Smooth border cycling effect using Wallust palette or full rainbow + +# Possible values: "wallust_random", "rainbow", "gradient_flow" +EFFECT_TYPE="gradient_flow" + +WALLUST_COLORS_SOURCE="$HOME/.config/hypr/wallust/wallust-hyprland.conf" + +WALLUST_COLORS=() + +# ---------- LOAD WALLUST COLORS ---------- +if [[ "$EFFECT_TYPE" == "wallust_random" || "$EFFECT_TYPE" == "gradient_flow" ]]; then + # Accept either hex (0xffRRGGBB) or rgb(r,g,b) and normalize to 0xffRRGGBB + mapfile -t WALLUST_COLORS < <( + grep -E '^\$color[0-9]+' "$WALLUST_COLORS_SOURCE" | awk ' + function hex2(s){ return (length(s)==6 ? "0xff"s : ""); } + function rgb2(r,g,b){ return sprintf("0xff%02x%02x%02x", r, g, b); } + { + if (match($0, /0x([0-9a-fA-F]{8})/, m)) { print "0x" m[1]; next } + if (match($0, /#([0-9a-fA-F]{6})/, m)) { print hex2(m[1]); next } + if (match($0, /rgb\(([0-9]+),[ ]*([0-9]+),[ ]*([0-9]+)\)/, m)) { + print rgb2(m[1], m[2], m[3]); next + } + }' + ) + + if (( ${#WALLUST_COLORS[@]} == 0 )); then + # If wallust colors can't be loaded, fall back to random_hex + EFFECT_TYPE="rainbow" + fi +fi + +# ---------- RANDOM WALLUST COLORS ---------- +function wallust_random() { + echo "${WALLUST_COLORS[RANDOM % ${#WALLUST_COLORS[@]}]}" +} + +# ---------- RAINBOW COLORS ---------- +function random_hex() { + echo "0xff$(openssl rand -hex 3)" +} + +# ---------- FLOW MODE ---------- +BASE_COLOR="${WALLUST_COLORS[10]}" +GRAD1_COLOR="${WALLUST_COLORS[14]}" +GRAD2_COLOR="${WALLUST_COLORS[13]}" +GLOW_COLOR="${WALLUST_COLORS[15]}" + +MAX_POS=10 +GLOW_POS=0 + +function gradient_flow_color() { + local pos=$1 + local d=$(( pos - GLOW_POS )) + + # wrap distance (-9..9) + if (( d > MAX_POS/2 )); then d=$((d - MAX_POS)); fi + if (( d < -MAX_POS/2 )); then d=$((d + MAX_POS)); fi + + case "${d#-}" in + 0) echo "$GLOW_COLOR" ;; + 1) echo "$GRAD1_COLOR" ;; + 2) echo "$GRAD2_COLOR" ;; + *) echo "$BASE_COLOR" ;; + esac + + if (( pos == MAX_POS - 1 )); then + GLOW_POS=$(( (GLOW_POS + 1) % MAX_POS )) + fi +} + +# ---------- Main function ---------- + +function get_color() { + if [[ "$EFFECT_TYPE" == "wallust_random" && ${#WALLUST_COLORS[@]} -gt 0 ]]; then + wallust_random + elif [[ "$EFFECT_TYPE" == "gradient_flow" && ${#WALLUST_COLORS[@]} -ge 16 ]]; then + gradient_flow_color "$1" + else + random_hex + fi +} + +# border effect for ACTIVE window +hyprctl keyword general:col.active_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg + +# border effect for INACTIVE windows +#hyprctl keyword general:col.inactive_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg
\ No newline at end of file diff --git a/config/hypr/UserScripts/RainbowBorders.sh b/config/hypr/UserScripts/RainbowBorders.sh deleted file mode 100755 index 0a7fd721..00000000 --- a/config/hypr/UserScripts/RainbowBorders.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash -# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## -# for rainbow borders animation - -function random_hex() { - random_hex=("0xff$(openssl rand -hex 3)") - echo $random_hex -} - -# rainbow colors only for active window -hyprctl keyword general:col.active_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg - -# rainbow colors for inactive window (uncomment to take effect) -#hyprctl keyword general:col.inactive_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg
\ No newline at end of file diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh index 89577efa..475969d6 100755 --- a/config/hypr/UserScripts/WallpaperEffects.sh +++ b/config/hypr/UserScripts/WallpaperEffects.sh @@ -106,43 +106,3 @@ fi main sleep 1 - -if [[ -n "$choice" ]]; then - # Resolve SDDM themes directory (standard and NixOS path) - sddm_themes_dir="" - if [ -d "/usr/share/sddm/themes" ]; then - sddm_themes_dir="/usr/share/sddm/themes" - elif [ -d "/run/current-system/sw/share/sddm/themes" ]; then - sddm_themes_dir="/run/current-system/sw/share/sddm/themes" - fi - - if [ -n "$sddm_themes_dir" ]; then - sddm_simple="$sddm_themes_dir/simple_sddm_2" - - # Only prompt if theme exists and its Backgrounds directory is writable - if [ -d "$sddm_simple" ] && [ -w "$sddm_simple/Backgrounds" ]; then - # Check if yad is running to avoid multiple yad notification - if pidof yad > /dev/null; then - killall yad - fi - - if yad --info --text="Set current wallpaper as SDDM background?\n\nNOTE: This only applies to SIMPLE SDDM v2 Theme" \ - --text-align=left \ - --title="SDDM Background" \ - --timeout=5 \ - --timeout-indicator=right \ - --button="yad-yes:0" \ - --button="yad-no:1" \ - ; then - - # Check if terminal exists - if ! command -v "$terminal" &>/dev/null; then - notify-send -i "$iDIR/ja.png" "Missing $terminal" "Install $terminal to enable setting of wallpaper background" - exit 1 - fi - - exec "$SCRIPTSDIR/sddm_wallpaper.sh" --effects - fi - fi - fi -fi diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/UserScripts/WallpaperRandom.sh index 654d4bd3..8dd680d5 100755 --- a/config/hypr/UserScripts/WallpaperRandom.sh +++ b/config/hypr/UserScripts/WallpaperRandom.sh @@ -2,12 +2,13 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## # Script for Random Wallpaper ( CTRL ALT W) -wallDIR="$HOME/Pictures/wallpapers" +PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" +wallDIR="$PICTURES_DIR/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') -PICS=($(find -L ${wallDIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.pnm" -o -name "*.tga" -o -name "*.tiff" -o -name "*.webp" -o -name "*.bmp" -o -name "*.farbfeld" -o -name "*.gif" \))) +PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.pnm" -o -name "*.tga" -o -name "*.tiff" -o -name "*.webp" -o -name "*.bmp" -o -name "*.farbfeld" -o -name "*.gif" \))) RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]} diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh index 0029d3e5..316a7cd4 100755 --- a/config/hypr/UserScripts/WallpaperSelect.sh +++ b/config/hypr/UserScripts/WallpaperSelect.sh @@ -4,7 +4,8 @@ # WALLPAPERS PATH terminal=kitty -wallDIR="$HOME/Pictures/wallpapers" +PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" +wallDIR="$PICTURES_DIR/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" @@ -98,49 +99,6 @@ menu() { done } -# Offer SDDM Simple Wallpaper Option (only for non-video wallpapers) -set_sddm_wallpaper() { - sleep 1 - - # Resolve SDDM themes directory (standard and NixOS path) - local sddm_themes_dir="" - if [ -d "/usr/share/sddm/themes" ]; then - sddm_themes_dir="/usr/share/sddm/themes" - elif [ -d "/run/current-system/sw/share/sddm/themes" ]; then - sddm_themes_dir="/run/current-system/sw/share/sddm/themes" - fi - - [ -z "$sddm_themes_dir" ] && return 0 - - local sddm_simple="$sddm_themes_dir/simple_sddm_2" - - # Only prompt if theme exists and its Backgrounds directory is writable - if [ -d "$sddm_simple" ] && [ -w "$sddm_simple/Backgrounds" ]; then - - # Check if yad is running to avoid multiple notifications - if pidof yad >/dev/null; then - killall yad - fi - - if yad --info --text="Set current wallpaper as SDDM background?\n\nNOTE: This only applies to SIMPLE SDDM v2 Theme" \ - --text-align=left \ - --title="SDDM Background" \ - --timeout=5 \ - --timeout-indicator=right \ - --button="yes:0" \ - --button="no:1"; then - - # Check if terminal exists - if ! command -v "$terminal" &>/dev/null; then - notify-send -i "$iDIR/error.png" "Missing $terminal" "Install $terminal to enable setting of wallpaper background" - exit 1 - fi - - exec "$SCRIPTSDIR/sddm_wallpaper.sh" --normal - - fi - fi -} modify_startup_config() { local selected_file="$1" @@ -186,7 +144,6 @@ apply_image_wallpaper() { "$SCRIPTSDIR/Refresh.sh" sleep 1 - set_sddm_wallpaper } apply_video_wallpaper() { diff --git a/config/hypr/UserScripts/Weather.sh b/config/hypr/UserScripts/Weather.sh index ac9abc13..4588ed1d 100755 --- a/config/hypr/UserScripts/Weather.sh +++ b/config/hypr/UserScripts/Weather.sh @@ -2,16 +2,50 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## # weather info from wttr. https://github.com/chubin/wttr.in # Remember to add city +# Function to get current city from IP address with fallback -city="" +# Get your current location with your IP adress +get_current_city() { + local city + + # First try: ipinfo.io + local location_data=$(curl -fsS "https://ipinfo.io/json" 2>/dev/null) + if [ $? -eq 0 ] && [ -n "$location_data" ]; then + city=$(echo "$location_data" | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4) + if [ -n "$city" ]; then + echo "$city" + return 0 + fi + fi + + # Fallback: ipapi.co + city=$(curl -fsS "https://ipapi.co/json" 2>/dev/null | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4) + if [ -n "$city" ]; then + echo "$city" + return 0 + fi + + # Last resort: ipwho.is + city=$(curl -fsS "https://ipwho.is/" 2>/dev/null | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4) + if [ -n "$city" ]; then + echo "$city" + return 0 + fi + + # If all fail + echo "Unknown" >&2 + return 1 +} +city=$(get_current_city) -# if city is blank, use https://ipapi.co/json to get location from IP -if [ -z "$city" ]; then - city=$(curl -fsS https://ipapi.co/json | grep city | cut -f4 -d'"') +# If city is empty, that means the IP check failed, which means, we should use manual setting +if [ -z "$city" ] || [ "$city" = "Unknown" ]; then + # SET YOUR MANUAL CITY HERE + city=" " # ← Change this to your preferred city + echo "Using manual city: $city" >&2 fi - # URL-encode city for safe use in URLs encoded_city="$city" if command -v python3 >/dev/null 2>&1; then @@ -206,4 +240,4 @@ tooltip_json=$(json_escape "${weather[0]}: $temperature $cond_disp") printf '{"text":"%s", "alt":"%s", "tooltip":"%s"}\n' "$text_json" "$alt_json" "$tooltip_json" # Write a two-line cache with an actual newline between lines -printf ' %s \n%s %s\n' "$temperature" "$condition" "${weather[1]}" > "$HOME/.cache/.weather_cache"
\ No newline at end of file +printf ' %s \n%s %s\n' "$temperature" "$condition" "${weather[1]}" > "$HOME/.cache/.weather_cache" diff --git a/config/hypr/UserScripts/WeatherWrap.sh b/config/hypr/UserScripts/WeatherWrap.sh index 10c125dc..5b266930 100755 --- a/config/hypr/UserScripts/WeatherWrap.sh +++ b/config/hypr/UserScripts/WeatherWrap.sh @@ -6,6 +6,30 @@ SCRIPT_DIR="$(dirname "$0")" PY_SCRIPT="$SCRIPT_DIR/Weather.py" BASH_FALLBACK="$SCRIPT_DIR/Weather.sh" +# Function to check network connectivity +check_network() { + # Try multiple methods to check network + if ping -c1 -W2 8.8.8.8 >/dev/null 2>&1; then + return 0 + fi + + if ping -c1 -W2 1.1.1.1 >/dev/null 2>&1; then + return 0 + fi + + if curl -s --connect-timeout 3 "https://ipinfo.io" >/dev/null 2>&1; then + return 0 + fi + + return 1 +} + +# If no network, return offline status immediately +if ! check_network; then + echo '{"text":"", "alt":"Offline", "tooltip":"No network connection"}' + exit 0 +fi + run_fallback() { if [ -f "$BASH_FALLBACK" ]; then # Invoke via bash to avoid requiring +x and ensure consistent shell @@ -30,4 +54,4 @@ else echo "python3 not found in PATH — falling back to Weather.sh" >&2 run_fallback "$@" exit $? -fi
\ No newline at end of file +fi diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf index 1ddbc81a..dea22719 100644 --- a/config/hypr/configs/Keybinds.conf +++ b/config/hypr/configs/Keybinds.conf @@ -23,6 +23,7 @@ bindd = $mainMod, Return, Open terminal, exec, $term bindd = $mainMod, E, file manager, exec, $files # FEATURES / EXTRAS +bindd = $mainMod, T, Global theme switcher using Wallust, exec, $scriptsDir/ThemeChanger.sh #Global theme switcher bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh @@ -43,7 +44,7 @@ bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Droptermina # Desktop zooming or magnifier bindd = $mainMod ALT, mouse_down, zoom in, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')" -bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')" +bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')" # Waybar / Bar related bindd = $mainMod CTRL ALT, B, toggle waybar on/off, exec, pkill -SIGUSR1 waybar @@ -58,11 +59,11 @@ bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh -bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle +bindd = $mainMod CTRL, O, toggle active window opacity, setprop, active opaque toggle bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh -bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/SwitchKeyboardLayout.sh +bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/KeyboardLayout.sh switch bindlnd = SHIFT_L, ALT_L, switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh bindd = $mainMod ALT, C, calculator, exec, $UserScripts/RofiCalc.sh @@ -97,6 +98,8 @@ bindd = $mainMod, P, toggle pseudo (dwindle), pseudo, # Works on either layout (Master or Dwindle) bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3 +# layout aware keybinds +exec-once = $scriptsDir/ChangeLayout.sh init # Cycle windows; if floating bring to top @@ -106,6 +109,8 @@ bindd = ALT, tab, bring active to top, bringactivetotop # Special Keys / Hot Keys bindeld = , xf86audioraisevolume, volume up, exec, $scriptsDir/Volume.sh --inc bindeld = , xf86audiolowervolume, volume down, exec, $scriptsDir/Volume.sh --dec +bindeld = ALT, xf86audioraisevolume, volume up precise, exec, $scriptsDir/Volume.sh --inc-precise +bindeld = ALT, xf86audiolowervolume, volume down precise, exec, $scriptsDir/Volume.sh --dec-precise bindld = , xf86AudioMicMute, toggle mic mute, exec, $scriptsDir/Volume.sh --toggle-mic bindld = , xf86audiomute, toggle mute, exec, $scriptsDir/Volume.sh --toggle bindld = , xf86Sleep, sleep, exec, systemctl suspend @@ -160,7 +165,7 @@ bindd = $mainMod CTRL, K, Move left into group, moveintogroup, l # Move active w bindd = $mainMod CTRL, L, Move Right into group, moveintogroup, r # Move active window right into a group bindd = $mainMod CTRL, H, Move active out of group, moveoutofgroup # Move active window out of group -# Try to dynamically move in grouped window and when ungrouped +# Try to dynamically move in grouped window and when ungrouped # Not working for me DW 11/26/25 PR: https://github.com/JaKooLit/Hyprland-Dots/pull/872 #bindd = $mainMod, right, focus right, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[-1] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus r; else hyprctl dispatch changegroupactive f; fi' #bindd = $mainMod, left, focus left, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[0] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus l; else hyprctl dispatch changegroupactive b; fi' @@ -181,7 +186,7 @@ bindd = $mainMod, U, toggle special workspace, togglespecialworkspace, # The following mappings use the key codes to better support various keyboard layouts # 1 is code:10, 2 is code 11, etc -# Switch workspaces with mainMod + [0-9] +# Switch workspaces with mainMod + [0-9] bindd = $mainMod, code:10, workspace 1, workspace, 1 # NOTE: code:10 = key 1 bindd = $mainMod, code:11, workspace 2, workspace, 2 # NOTE: code:11 = key 2 bindd = $mainMod, code:12, workspace 3, workspace, 3 # NOTE: code:12 = key 3 diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf index 0cfb6427..0cc5da11 100644 --- a/config/hypr/configs/Startup_Apps.conf +++ b/config/hypr/configs/Startup_Apps.conf @@ -1,35 +1,23 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # Commands and Apps to be executed at launch (vendor defaults) - $scriptsDir = $HOME/.config/hypr/scripts $UserScripts = $HOME/.config/hypr/UserScripts - -$wallDIR=$HOME/Pictures/wallpapers $lock = $scriptsDir/LockScreen.sh $SwwwRandom = $UserScripts/WallpaperAutoChange.sh $livewallpaper="" +$wallDIR = $HOME/Pictures/wallpapers # change path manually here if needed ### wallpaper stuff ### exec-once = swww-daemon --format xrgb #exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper - # wallpaper random #exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes ### Startup ### exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP -exec-once = $scriptsDir/KeybindsLayoutInit.sh - -# Drop Down terminal -# See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644 exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh kitty & - - -# Polkit (Polkit Gnome / KDE) exec-once = $scriptsDir/Polkit.sh - -# starup apps exec-once = nm-applet --indicator exec-once = nm-tray # For ubuntu exec-once = swaync @@ -38,23 +26,20 @@ exec-once = swaync #exec-once = rog-control-center exec-once = waybar exec-once = qs -c overview # Quickshell Overview +exec-once = hypridle +exec-once = $scriptsDir/Hyprsunset.sh init # Clipboard manager exec-once = wl-paste --type text --watch cliphist store exec-once = wl-paste --type image --watch cliphist store -# Rainbow borders -exec-once = $UserScripts/RainbowBorders.sh +# Rainbow borders (disabled by default; use quick settings menu) +#exec-once = $UserScripts/RainbowBorders.sh -# hypridle for hyprlock -exec-once = hypridle - -# Resume Hyprsunset if state is "on" from previous session -exec-once = $scriptsDir/Hyprsunset.sh init # Here are list of features available but disabled by default # Persistent wallpaper -# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/mecha-nostalgia.png +# exec-once = swww-daemon --format xrgb && swww img $wallDIR/mecha-nostalgia.png # Gnome polkit for NixOS #exec-once = $scriptsDir/Polkit-NixOS.sh diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf index 44521156..f49960cd 100644 --- a/config/hypr/configs/SystemSettings.conf +++ b/config/hypr/configs/SystemSettings.conf @@ -93,6 +93,11 @@ misc { enable_anr_dialog = true # Application not Responding (ANR) anr_missed_pings = 15 # ANR Threshold default 1 is too low allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend + # This only works with HL v0.53+ + on_focus_under_fullscreen = 1 + # 0 - Default, no change + # 1 - New focused window takes over fullscreen (Windows-like Alt-Tab) + # 2 - New focused window stays behind the fullscreen one } #opengl { diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf index ba179461..6aab2590 100644 --- a/config/hypr/configs/WindowRules-config-v3.conf +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -2,10 +2,24 @@ # Vendor defaults for window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# NOTES: This is only for Hyprland > 0.52.1 -# note for ja: This should NOT be implemented on Debian and Ubuntu +# NOTES: This is only for Hyprland >= 0.53 -# windowrule - tags - add apps under appropriate tag to use the same settings +# Some samples on hwo to start apps on specific workspaces +# windowrule = match:tag email*, workspace 1 +# windowrule = match:tag browser*, workspace 2 +# windowrule = match:tag projects*, workspace 3 +# windowrule = match:tag screenshare*, workspace 4 silent +# windowrule = match:tag gamestore*, workspace 5 +# windowrule = match:class ^(virt-manager)$, workspace 6 silent +# windowrule = match:class ^(.virt-manager-wrapped)$, workspace 6 silent +# windowrule = match:tag im*, workspace 7 +# windowrule = match:class obsidian, workspace 8 +# windowrule = match:tag games*, workspace 8 +# windowrule = match:tag multimedia*, workspace 9 silent + + + +# TAGS - add apps under appropriate tag to use the same settings # browser tags windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser @@ -14,7 +28,7 @@ windowrule = match:class ^([Cc]hromium)$, tag +browser windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser windowrule = match:class ^(Brave-browser(-beta|-dev|-unstable)?)$, tag +browser windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser -windowrule = match:class ^(zen-alpha|zen)$, tag +browser +windowrule = match:class ^(zen)$, tag +browser # notif tags windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif @@ -30,11 +44,13 @@ windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal # email tags windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email +windowrule = match:class ^(org.gnome.Evolution)$, tag +email # project tags windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects windowrule = match:class ^(jetbrains-.+)$, tag +projects +windowrule = match:class ^(dev.zed.Zed|antigravity)$, tag +projects # screenshare tags windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare @@ -43,7 +59,6 @@ windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im windowrule = match:class ^([Ff]erdium)$, tag +im windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im -windowrule = match:class ^(ZapZap|com.rtosta.zapzap)$, tag +im windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im windowrule = match:class ^(teams-for-linux)$, tag +im windowrule = match:class ^(im.riot.Riot|Element)$, tag +im @@ -79,10 +94,12 @@ windowrule = match:title (Kvantum Manager), tag +settings windowrule = match:class ^(file-roller|org.gnome.FileRoller)$, tag +settings windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings -windowrule = match:class ^(qt5ct|qt6ct|[Yy]ad)$, tag +settings +windowrule = match:class ^(qt5ct|qt6ct)$, tag +settings windowrule = match:class (xdg-desktop-portal-gtk), tag +settings windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings windowrule = match:class ^([Rr]ofi)$, tag +settings +windowrule = match:class ^(btrfs-assistant)$, tag +settings +windowrule = match:class ^(timeshift-gtk)$, tag +settings # viewer tags windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer @@ -153,23 +170,21 @@ windowrule = match:tag wallpaper, opacity 0.9 0.7 windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7 windowrule = match:class ^(deluge)$, opacity 0.9 0.8 windowrule = match:class ^(seahorse)$, opacity 0.9 0.8 -windowrule = match:title ^(Picture-in-Picture)$, opacity 0.95 0.75 # SIZE windowrule = match:tag KooL_Cheat, size (monitor_w*0.65) (monitor_h*0.9) windowrule = match:tag wallpaper, size (monitor_w*0.7) (monitor_h*0.7) windowrule = match:tag settings, size (monitor_w*0.7) (monitor_h*0.7) -windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, size (monitor_w*0.6) (monitor_h*0.7) windowrule = match:class ^([Ff]erdium)$, size (monitor_w*0.6) (monitor_h*0.7) +windowrule = match:class (org.gnome.Calculator|qalculate-gtk), center on, size (monitor_w*0.25) (monitor_h*0.3) -# PINNING -windowrule = match:title ^(Picture-in-Picture)$, pin on, keep_aspect_ratio on # BLUR & FULLSCREEN windowrule = match:tag games, no_blur on, fullscreen 0 windowrule = match:tag games, fullscreen 0 -# This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products +# This not gonna take the focus to the window that appears when +# hovering over some of the parts of the IntelliJ Products windowrule = match:class ^(jetbrains-*), no_initial_focus on windowrule = match:title ^(wind.*)$, no_initial_focus on @@ -178,3 +193,31 @@ layerrule = match:namespace rofi, blur on layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 + +# Named rules for special cases +windowrule { + name = Whatsapp-zapzap + match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ + size = (monitor_w*0.6) (monitor_h*0.7) + center = on +} +windowrule { + name = Picture-in-Picture + match:title = ^(Picture-in-Picture)$ + float = on + move = 72% 7% + opacity = 0.95 0.75 + pin = on + keep_aspect_ratio = on + size = (monitor_w*0.3) (monitor_h*0.3) +} +# Thunar copy progress dialog +windowrule { + name = Thunar-Progress-bar + match:class = ^(thunar)$ + match:title = ^(File Operation Progress)$ + float = on + center = on + size = (monitor_w*0.26) (monitor_h*0.18) +} + diff --git a/config/hypr/configs/WindowRules-pre-53.conf b/config/hypr/configs/WindowRules-pre-53.conf index d1fb9315..8a5f99c7 100644 --- a/config/hypr/configs/WindowRules-pre-53.conf +++ b/config/hypr/configs/WindowRules-pre-53.conf @@ -4,8 +4,6 @@ # NOTES: This is only for Hyprland > 0.48 -# note for ja: This should NOT be implemented on Debian and Ubuntu - # windowrule - tags - add apps under appropriate tag to use the same settings # browser tags windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ @@ -228,4 +226,4 @@ layerrule = ignorealpha 0.5, quickshell:overview #layerrule = ignorezero, <rofi> #layerrule = ignorezero, overview -#layerrule = blur, overview
\ No newline at end of file +#layerrule = blur, overview diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf index ba179461..d110cd4a 100644 --- a/config/hypr/configs/WindowRules.conf +++ b/config/hypr/configs/WindowRules.conf @@ -2,10 +2,24 @@ # Vendor defaults for window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# NOTES: This is only for Hyprland > 0.52.1 -# note for ja: This should NOT be implemented on Debian and Ubuntu +# NOTES: This is only for Hyprland >= 0.53 -# windowrule - tags - add apps under appropriate tag to use the same settings +# Some samples on hwo to start apps on specific workspaces +# windowrule = match:tag email*, workspace 1 +# windowrule = match:tag browser*, workspace 2 +# windowrule = match:tag projects*, workspace 3 +# windowrule = match:tag screenshare*, workspace 4 silent +# windowrule = match:tag gamestore*, workspace 5 +# windowrule = match:class ^(virt-manager)$, workspace 6 silent +# windowrule = match:class ^(.virt-manager-wrapped)$, workspace 6 silent +# windowrule = match:tag im*, workspace 7 +# windowrule = match:class obsidian, workspace 8 +# windowrule = match:tag games*, workspace 8 +# windowrule = match:tag multimedia*, workspace 9 silent + + + +# TAGS - add apps under appropriate tag to use the same settings # browser tags windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser @@ -28,13 +42,15 @@ windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal # email tags -windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email +windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email +windowrule = match:class ^(org.gnome.Evolution)$, tag +email # project tags windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects windowrule = match:class ^(jetbrains-.+)$, tag +projects +windowrule = match:class ^(dev.zed.Zed|antigravity)$, tag +projects # screenshare tags windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare @@ -43,7 +59,6 @@ windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im windowrule = match:class ^([Ff]erdium)$, tag +im windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im -windowrule = match:class ^(ZapZap|com.rtosta.zapzap)$, tag +im windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im windowrule = match:class ^(teams-for-linux)$, tag +im windowrule = match:class ^(im.riot.Riot|Element)$, tag +im @@ -79,10 +94,12 @@ windowrule = match:title (Kvantum Manager), tag +settings windowrule = match:class ^(file-roller|org.gnome.FileRoller)$, tag +settings windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings -windowrule = match:class ^(qt5ct|qt6ct|[Yy]ad)$, tag +settings +windowrule = match:class ^(qt5ct|qt6ct)$, tag +settings windowrule = match:class (xdg-desktop-portal-gtk), tag +settings windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings windowrule = match:class ^([Rr]ofi)$, tag +settings +windowrule = match:class ^(btrfs-assistant)$, tag +settings +windowrule = match:class ^(timeshift-gtk)$, tag +settings # viewer tags windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer @@ -92,53 +109,46 @@ windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer # Some special override rules windowrule = match:tag multimedia_video, no_blur on windowrule = match:tag multimedia_video, opacity 1.0 +windowrule = match:tag multimedia, no_blur on +windowrule = match:tag multimedia, opacity 1.0 # POSITION -# windowrule = match:floating true, center on windowrule = match:tag KooL_Cheat, center on -windowrule = match:class ([Tt]hunar) match:title negative:(.*[Tt]hunar.*), center on -windowrule = match:title ^(ROG Control)$, center on windowrule = match:tag KooL-Settings, center on +windowrule = match:title ^(ROG Control)$, center on windowrule = match:title ^(Keybindings)$, center on windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on -windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on windowrule = match:class ^([Ff]erdium)$, center on -windowrule = match:title ^(Picture-in-Picture)$, move 72% 7% # windowrule to avoid idle for fullscreen apps windowrule = match:fullscreen true, idle_inhibit fullscreen +windowrule = idle_inhibit fullscreen, match:fullscreen 1 +windowrule = idle_inhibit fullscreen, match:class ^(*)$ +windowrule = idle_inhibit fullscreen, match:title ^(*)$ # FLOAT windowrule = match:tag KooL_Cheat, float on -windowrule = match:tag wallpaper, float on -windowrule = match:tag settings, float on -windowrule = match:tag viewer, float on -windowrule = match:tag KooL-Settings, float on +windowrule = match:tag wallpaper, float on, center on +windowrule = match:tag settings, float on, center on +windowrule = match:tag viewer, float on, center on +windowrule = match:tag KooL-Settings, float on, center on windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on -windowrule = match:class (org.gnome.Calculator) match:title (Calculator), float on +windowrule = match:class (org.gnome.Calculator|qalculate-gtk), float on windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on windowrule = match:class ^([Qq]alculate-gtk)$, float on windowrule = match:class ^([Ff]erdium)$, float on -windowrule = match:title ^(Picture-in-Picture)$, float on -# windowrule - ######### float popups and dialogue ####### +# popups and dialogue windowrule = match:title ^(Authentication Required)$, float on, center on windowrule = match:class (codium|codium-url-handler|VSCodium) match:title negative:(.*codium.*|.*VSCodium.*), float on windowrule = match:class ^(com.heroicgameslauncher.hgl)$ match:title negative:(Heroic Games Launcher), float on windowrule = match:class ^([Ss]team)$ match:title negative:^([Ss]team)$, float on -windowrule = match:class ([Tt]hunar) match:title negative:(.*[Tt]hunar.*), float on - windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on - windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on - windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6) - windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12) - -# YAD dialog for wallpaper confirmation -windowrule = match:class ^(yad)$ match:title ^(YAD)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2) -# END of float popups and dialogue ####### +windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2) +windowrule = match:class ^(hyprland-donate-screen)$, float on, center on # OPACITY windowrule = match:tag browser, opacity 0.99 0.8 @@ -169,7 +179,8 @@ windowrule = match:title ^(Picture-in-Picture)$, pin on, keep_aspect_ratio on windowrule = match:tag games, no_blur on, fullscreen 0 windowrule = match:tag games, fullscreen 0 -# This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products +# This not gonna take the focus to the window that appears when +# hovering over some of the parts of the IntelliJ Products windowrule = match:class ^(jetbrains-*), no_initial_focus on windowrule = match:title ^(wind.*)$, no_initial_focus on @@ -178,3 +189,31 @@ layerrule = match:namespace rofi, blur on layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 + +# Named rules for special cases +windowrule { + name = Whatsapp-zapzap + match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ + size = (monitor_w*0.6) (monitor_h*0.7) + center = on +} +windowrule { + name = Picture-in-Picture + match:title = ^(Picture-in-Picture)$ + float = on + move = 72% 7% + opacity = 0.95 0.75 + pin = on + keep_aspect_ratio = on + size = (monitor_w*0.3) (monitor_h*0.3) +} +# Thunar copy progress dialog +windowrule { + name = Thunar-Progress-bar + match:class = ^(thunar)$ + match:title = ^(File Operation Progress)$ + float = on + center = on + size = (monitor_w*0.26) (monitor_h*0.18) +} + diff --git a/config/hypr/hyprlock-2k.conf b/config/hypr/hyprlock-2k.conf new file mode 100644 index 00000000..f359357f --- /dev/null +++ b/config/hypr/hyprlock-2k.conf @@ -0,0 +1,183 @@ +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # +# Hyprlock config for => 2k monitor resolutions +# Original config submitted by https://github.com/SherLock707 + +# Sourcing colors generated by wallust +source = $HOME/.config/hypr/wallust/wallust-hyprland.conf +$Scripts = $HOME/.config/hypr/scripts + +general { + grace = 1 + fractional_scaling = 2 + immediate_render = true +} + +background { + monitor = + # NOTE: use only 1 path + #path = screenshot # screenshot of your desktop + #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_modified # by wallpaper effects + path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # current wallpaper + + color = rgb(0,0,0) # color will be rendered initially until path is available + + # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations + blur_size = 3 + blur_passes = 2 # 0 disables blurring + noise = 0.0117 + contrast = 1.3000 # Vibrant!!! + brightness = 0.8000 + vibrancy = 0.2100 + vibrancy_darkness = 0.0 +} + + +# Date +label { + monitor = + text = cmd[update:18000000] echo "<b> "$(date +'%A, %-d %B')" </b>" + color = $color13 + font_size = 64 + font_family = Victor Mono Bold Italic + position = 0, -20 + halign = center + valign = center +} + +# Hour-Time (single horizontal time like 1080p variant) +label { + monitor = +# text = cmd[update:1000] echo "$(date +"%H:%M")" # 24h option + text = cmd[update:1000] echo "$(date +"%I:%M %p")" # AM/PM + #color = rgba(255, 185, 0, .8) + color = $color8 + font_size = 173 + font_family = JetBrainsMono Nerd Font ExtraBold + position = 0, -133 + halign = center + valign = top +} + +# Minute-Time (disabled; kept for reference) +# label { +# monitor = +# text = cmd[update:1000] echo "$(date +"%M")" +# #color = rgba(15, 10, 222, .8) +# color = $color12 +# font_size = 240 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -450 +# halign = center +# valign = top +# } + +# Seconds-Time (disabled; kept for reference) +# label { +# monitor = +# text = cmd[update:1000] echo "$(date +"%S")" +# # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM +# color = $color11 +# font_size = 50 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -450 +# halign = center +# valign = top +# } + +# Put a picture of choice here. Default is the current wallpaper +#image { +# monitor = +# #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current +# size = 160 +# rounding = -1 +# border_size = 0 +# border_color = $color11 +# rotate = 0 +# reload_time = -1 +# position = 0, 400 +# halign = center +# valign = bottom +#} + +# USER +label { + monitor = + text = $USER + color = $color9 + font_size = 48 + font_family = Victor Mono Bold Oblique + position = 0, 300 + halign = center + valign = bottom +} + +# INPUT FIELD +input-field { + monitor = + size = 306, 93 + outline_thickness = 2 + dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + outer_color = $color8 + inner_color = rgba(255, 255, 255, 0.1) + capslock_color = rgb(255,255,255) + font_color = $color13 + fade_on_empty = false + font_family = Victor Mono Bold Oblique + placeholder_text = <i><span foreground="##ffffff99">🔒 Type Password</span></i> + hide_input = false + position = 0, 100 + halign = center + valign = bottom +} + +# Keyboard LAYOUT +label { + monitor = + text = $LAYOUT + color = $color8 + font_size = 19 + font_family = Victor Mono Bold Oblique + position = 0, 53 + halign = center + valign = bottom +} + +# uptime +label { + monitor = + text = cmd[update:60000] echo "<b> "$(uptime -p || $Scripts/UptimeNixOS.sh)" </b>" + color = $color8 + font_size = 32 + font_family = Victor Mono Bold Oblique + position = 0, 0 + halign = right + valign = bottom +} + +# battery information +label { + monitor = + text = cmd[update:1000] echo "<b> "$($Scripts/Battery.sh)" </b>" + color = $color8 + font_size = 21 + font_family = Victor Mono Bold Oblique + position = 0, 40 + halign = right + valign = bottom +} + +# weather edit the scripts for locations +# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py +# see https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock +label { + monitor = + text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache" + color = $color8 + font_size = 19 + font_family = Victor Mono Bold Oblique + position = 50, 0 + halign = left + valign = bottom +} diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh index 1313f104..eeabdef5 100755 --- a/config/hypr/initial-boot.sh +++ b/config/hypr/initial-boot.sh @@ -49,9 +49,6 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then # initiate kvantum theme kvantummanager --set "$kvantum_theme" > /dev/null 2>&1 & - # initiate the kb_layout (for some reason) waybar cant launch it - "$scriptsDir/SwitchKeyboardLayout.sh" > /dev/null 2>&1 & - # waybar style #if [ -L "$HOME/.config/waybar/config" ]; then ## ln -sf "$waybar_style" "$HOME/.config/waybar/style.css" diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh index e2436b79..221f9637 100755 --- a/config/hypr/scripts/ChangeLayout.sh +++ b/config/hypr/scripts/ChangeLayout.sh @@ -6,19 +6,34 @@ notif="$HOME/.config/swaync/images/ja.png" LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') +# Reverse layout value to reuse toggle logic. So layouts don't get swapped initially. +if [ "$1" = "init" ]; then + if [ "$LAYOUT" = "master" ]; then + LAYOUT="dwindle" + else + LAYOUT="master" + fi +fi + case $LAYOUT in "master") - hyprctl keyword general:layout dwindle - # SUPER+J/K are global and managed by KeybindsLayoutInit.sh; only manage SUPER+O here - hyprctl keyword bind SUPER,O,togglesplit + hyprctl keyword general:layout dwindle + hyprctl keyword unbind SUPER,J + hyprctl keyword unbind SUPER,K + hyprctl keyword bind SUPER,J,cyclenext + hyprctl keyword bind SUPER,K,cyclenext,prev + hyprctl keyword bind SUPER,O,togglesplit notify-send -e -u low -i "$notif" " Dwindle Layout" - ;; + ;; "dwindle") - hyprctl keyword general:layout master - # Drop togglesplit binding on SUPER+O when switching back to master - hyprctl keyword unbind SUPER,O + hyprctl keyword general:layout master + hyprctl keyword unbind SUPER,J + hyprctl keyword unbind SUPER,K + hyprctl keyword unbind SUPER,O + hyprctl keyword bind SUPER,J,layoutmsg,cyclenext + hyprctl keyword bind SUPER,K,layoutmsg,cycleprev notify-send -e -u low -i "$notif" " Master Layout" - ;; + ;; *) ;; esac diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh index e473efb2..37016ec3 100755 --- a/config/hypr/scripts/DarkLight.sh +++ b/config/hypr/scripts/DarkLight.sh @@ -4,7 +4,8 @@ # Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories # Paths -wallpaper_base_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers" +PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" +wallpaper_base_path="$PICTURES_DIR/wallpapers/Dynamic-Wallpapers" dark_wallpapers="$wallpaper_base_path/Dark" light_wallpapers="$wallpaper_base_path/Light" hypr_config_path="$HOME/.config/hypr" @@ -19,6 +20,10 @@ kitty_conf="$HOME/.config/kitty/kitty.conf" wallust_config="$HOME/.config/wallust/wallust.toml" pallete_dark="dark16" pallete_light="light16" +qt5ct_dark="$HOME/.config/qt5ct/colors/Catppuccin-Mocha.conf" +qt5ct_light="$HOME/.config/qt5ct/colors/Catppuccin-Latte.conf" +qt6ct_dark="$HOME/.config/qt6ct/colors/Catppuccin-Mocha.conf" +qt6ct_light="$HOME/.config/qt6ct/colors/Catppuccin-Latte.conf" # intial kill process for pid in waybar rofi swaync ags swaybg; do @@ -43,6 +48,14 @@ else # Logic for Light mode wallpaper_path="$light_wallpapers" fi +# Select Qt color scheme templates for the upcoming mode +if [ "$next_mode" = "Dark" ]; then + qt5ct_color_scheme="$qt5ct_dark" + qt6ct_color_scheme="$qt6ct_dark" +else + qt5ct_color_scheme="$qt5ct_light" + qt6ct_color_scheme="$qt6ct_light" +fi # Function to update theme mode for the next cycle update_theme_mode() { diff --git a/config/hypr/scripts/Distro_update.sh b/config/hypr/scripts/Distro_update.sh index 2b3376e3..917f303b 100755 --- a/config/hypr/scripts/Distro_update.sh +++ b/config/hypr/scripts/Distro_update.sh @@ -27,7 +27,7 @@ elif command -v dnf &> /dev/null; then notify-send -i "$iDIR/ja.png" -u low 'Fedora system' 'has been updated.' elif command -v apt &> /dev/null; then # Debian-based (Debian, Ubuntu, etc.) - kitty -T update sudo apt update && sudo apt upgrade -y + kitty -T update bash -c "sudo apt update && sudo apt upgrade -y" notify-send -i "$iDIR/ja.png" -u low 'Debian/Ubuntu system' 'has been updated.' elif command -v zypper &> /dev/null; then # openSUSE-based diff --git a/config/hypr/scripts/Hypridle.sh b/config/hypr/scripts/Hypridle.sh index 6acff434..a9bb90d7 100755 --- a/config/hypr/scripts/Hypridle.sh +++ b/config/hypr/scripts/Hypridle.sh @@ -15,7 +15,8 @@ elif [[ "$1" == "toggle" ]]; then if pgrep -x "$PROCESS" >/dev/null; then pkill "$PROCESS" else - "$PROCESS" + "$PROCESS" >/dev/null 2>&1 & + disown fi else echo "Usage: $0 {status|toggle}" diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh index 4158b762..26ae832b 100755 --- a/config/hypr/scripts/KeyBinds.sh +++ b/config/hypr/scripts/KeyBinds.sh @@ -21,135 +21,19 @@ msg='☣️ NOTE ☣️: Clicking with Mouse or Pressing ENTER will have NO func files=("$keybinds_conf" "$user_keybinds_conf") [[ -f "$laptop_conf" ]] && files+=("$laptop_conf") -# Parse binds/unbinds from files, detect overrides, and keep unique effective binds -declare -A binding_map # combo -> bind line (effective) -declare -A source_map # combo -> source file -declare -A user_bind_map # combo -> user bind line -declare -A unbound_user # combo -> 1 if explicitly unbound in user file -declare -A seen_any_bind # combo -> 1 if any bind seen (for iteration) -declare -A default_seen # combo -> 1 if default bind exists -declare -a missing_unbind_suggestions_arr +# Parse binds using the python script for speed +# The last argument must be the user config for override logic to work correctly +display_keybinds=$("$HOME/.config/hypr/scripts/keybinds_parser.py" "${files[@]}") -normalize_combo() { echo "$1" | sed -E 's/[[:space:]]//g'; } - -extract_combo() { - # arg: a bind/unbind line; returns "mods,key" via echo - local s="$1" - s="$(echo "$s" | sed -E 's/[[:space:]]+#.*$//')" - if [[ "$s" =~ = ]]; then - local rhs="${s#*=}" - local mods="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$1); print $1}')" - local key="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2}')" - echo "${mods},${key}" - fi -} - -for file in "${files[@]}"; do - [[ ! -f "$file" ]] && continue - while IFS= read -r line; do - [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue - - if [[ "$line" =~ ^[[:space:]]*bind[a-z]*[[:space:]]*= ]]; then - combo_raw="$(extract_combo "$line")" - [[ -z "$combo_raw" ]] && continue - combo="$(normalize_combo "$combo_raw")" - seen_any_bind["$combo"]=1 - - if [[ "$file" != "$user_keybinds_conf" ]]; then - default_seen["$combo"]=1 - fi - - # prefer user bind, else first seen - if [[ -z "${source_map[$combo]}" ]]; then - binding_map["$combo"]="$line" - source_map["$combo"]="$file" - fi - if [[ "$file" == "$user_keybinds_conf" ]]; then - user_bind_map["$combo"]="$line" - binding_map["$combo"]="$line" - source_map["$combo"]="$file" - fi - - elif [[ "$line" =~ ^[[:space:]]*unbind[[:space:]]*= ]]; then - combo_raw="$(extract_combo "$line")" - [[ -z "$combo_raw" ]] && continue - combo="$(normalize_combo "$combo_raw")" - if [[ "$file" == "$user_keybinds_conf" ]]; then - unbound_user["$combo"]=1 - fi - fi - done < "$file" -done - -# Build raw_keybinds for display and collect missing unbind suggestions -raw_keybinds="" -for combo in "${!seen_any_bind[@]}"; do - eff_line="${binding_map[$combo]}" - src="${source_map[$combo]}" - [[ -z "$eff_line" ]] && continue - raw_keybinds+="$eff_line"$'\n' - - # If user overrides a default but didn't unbind in user file, suggest unbind - if [[ "$src" == "$user_keybinds_conf" && -n "${default_seen[$combo]}" && -z "${unbound_user[$combo]}" ]]; then - suggest="$(echo "$eff_line" | sed -E 's/^[[:space:]]*bind[a-z]*/unbind/')" - missing_unbind_suggestions_arr+=("$suggest") +# Check for suggestions file created by python script +if [[ -f "/tmp/hypr_keybind_suggestions_file" ]]; then + suggestions_file=$(cat "/tmp/hypr_keybind_suggestions_file") + rm "/tmp/hypr_keybind_suggestions_file" + if [[ -n "$suggestions_file" && -f "$suggestions_file" ]]; then + count=$(wc -l < "$suggestions_file") + msg="$msg | Overrides missing unbind: $count (suggestions: $suggestions_file)" fi -done - -# If there are missing unbinds, write suggestions to a temp file and note in message -if (( ${#missing_unbind_suggestions_arr[@]} > 0 )); then - suggestions_file="$(mktemp -t hypr-unbind-suggestions.XXXX.conf)" - printf '%s\n' "${missing_unbind_suggestions_arr[@]}" > "$suggestions_file" - msg="$msg | Overrides missing unbind: ${#missing_unbind_suggestions_arr[@]} (suggestions: $suggestions_file)" fi -# check for any keybinds to display -if [[ -z "$raw_keybinds" ]]; then - echo "no keybinds found." - exit 1 -fi - -# transform into a readable list: MODS+KEY — DESCRIPTION (for bindd) or DISPATCHER [PARAMS] (for bind) -display_keybinds=$(echo "$raw_keybinds" | awk -F'=' ' - function trim(s){ gsub(/^[ \t]+|[ \t]+$/,"",s); return s } - /^[[:space:]]*bind/ { - binder=$1; gsub(/[ \t]/, "", binder); - hasdesc = (index(binder, "d")>0); - - rhs=$2; rhs=trim(rhs); - n=split(rhs, a, /[ \t]*,[ \t]*/); - - mods=trim(a[1]); key=(n>=2?trim(a[2]):""); - desc=""; dispatcher=""; params=""; - - if (hasdesc) { - desc=(n>=3?trim(a[3]):""); - dispatcher=(n>=4?trim(a[4]):""); - start=5; - } else { - dispatcher=(n>=3?trim(a[3]):""); - start=4; - } - - for(i=start;i<=n;i++){ if(length(a[i])){ p=trim(a[i]); if(p!="") params = (params?params", ":"") p } } - - gsub(/\$mainMod/,"SUPER",mods); - gsub(/[ \t]+/,"+",mods); - - combo = (mods && key) ? mods "+" key : (key?key:mods); - - if (hasdesc && desc != "") { - print combo, " — ", desc; - } else { - if (dispatcher != "" && params != "") - print combo, " — ", dispatcher, " ", params; - else if (dispatcher != "") - print combo, " — ", dispatcher; - else - print combo; - } - } -') - # use rofi to display the keybinds printf '%s\n' "$display_keybinds" | rofi -dmenu -i -config "$rofi_theme" -mesg "$msg" diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh index 8a478039..5511cfed 100755 --- a/config/hypr/scripts/KeyHints.sh +++ b/config/hypr/scripts/KeyHints.sh @@ -34,6 +34,7 @@ GDK_BACKEND=$BACKEND yad \ " D" "Application Launcher" "(rofi-wayland)" \ " E" "Open File Manager" "(Thunar)" \ " S" "Google Search using rofi" "(rofi)" \ +" T" "Global theme switcher" "(rofi)" \ " Q" "close active window" "(not kill)" \ " Shift Q " "kills an active window" "(kill)" \ " ALT mouse scroll up/down " "Desktop Zoom" "Desktop Magnifier" \ @@ -69,4 +70,4 @@ GDK_BACKEND=$BACKEND yad \ " ALT E" "Rofi Emoticons" "Emoticon" \ " H" "Launch this Quick Cheat Sheet" "" \ "" "" "" \ -"More tips:" "https://github.com/JaKooLit/Hyprland-Dots/wiki" ""\
\ No newline at end of file +"More tips:" "https://github.com/JaKooLit/Hyprland-Dots/wiki" ""\ diff --git a/config/hypr/scripts/KeyboardLayout.sh b/config/hypr/scripts/KeyboardLayout.sh new file mode 100755 index 00000000..ec280826 --- /dev/null +++ b/config/hypr/scripts/KeyboardLayout.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## +# This is for changing kb_layouts. Set kb_layouts in "$HOME/.config/hypr/UserConfigs/UserSettings.conf" + +notif_icon="$HOME/.config/swaync/images/ja.png" +SCRIPTSDIR="$HOME/.config/hypr/scripts" + +# Refined ignore list with patterns or specific device names +ignore_patterns=( + "--(avrcp)" + "Bluetooth Speaker" + "Other Device + Name" +) + +# Function to get keyboard names +get_keyboard_names() { + hyprctl devices -j | jq -r '.keyboards[].name' +} + +# Function to check if a device matches any ignore pattern +is_ignored() { + local device_name=$1 + for pattern in "${ignore_patterns[@]}"; do + if [[ "$device_name" == *"$pattern"* ]]; then + return 0 # Device matches ignore pattern + fi + done + return 1 # Device does not match any ignore pattern +} + +# Function to get current layout info +# Stores values in layout_mapping, variant_mapping and layout_index +get_current_layout_info() { + local found_kb=false + + # Read from the first non-ignored layout + while read -r name; do + if ! is_ignored "$name"; then + found_kb=true + local layout_mapping_str=$(hyprctl devices -j | + jq -r --arg name "$name" '.keyboards[] | select(.name==$name).layout') + IFS="," read -r -a layout_mapping <<<"$layout_mapping_str" + + local variant_mapping_str=$(hyprctl devices -j | + jq -r --arg name "$name" '.keyboards[] | select(.name==$name).variant') + IFS="," read -r -a variant_mapping <<<"$variant_mapping_str" + + layout_index=$(hyprctl devices -j | + jq -r --arg name "$name" '.keyboards[] | select(.name==$name).active_layout_index') + break + fi + done <<< "$(get_keyboard_names)" + + $found_kb && return 0 + return 1 +} + +# Function to change keyboard layout +change_layout() { + local error_found=false + + while read -r name; do + if is_ignored "$name"; then + echo "Skipping ignored device: $name" + continue + fi + + echo "Switching layout for $name to $new_layout..." + hyprctl switchxkblayout "$name" "$next_index" + if [ $? -ne 0 ]; then + echo "Error while switching layout for $name." >&2 + error_found=true + fi + done <<<"$(get_keyboard_names)" + + $error_found && return 1 + return 0 +} + + +# Stores values in layout_mapping, variant_mapping and layout_index +if ! get_current_layout_info; then + echo "Could not get current layout information." >&2 + echo "There might not be any keyboards available, \ + or some were unnecessarily set as ignored." >&2 + notify-send -u low -t 2000 'kb_layout' " Error:" " Layout change failed" + echo "Exiting $0 $@" >&2 + exit 1 +fi + +current_layout=${layout_mapping[$layout_index]} +current_variant=${variant_mapping[$layout_index]} + +if [[ "$1" == "status" ]]; then + echo "$current_layout${current_variant:+($current_variant)}" +elif [[ "$1" == "switch" ]]; then + echo "Current layout: $current_layout($current_variant)" + + layout_count=${#layout_mapping[@]} + echo "Number of layouts: $layout_count" + + next_index=$(( (layout_index + 1) % layout_count )) + new_layout="${layout_mapping[$next_index]}" + new_variant="${variant_mapping[$next_index]}" + echo "Next layout: $new_layout" + + # Execute layout change and notify + if ! change_layout; then + notify-send -u low -t 2000 'kb_layout' " Error:" " Layout change failed" + echo "Layout change failed." >&2 + exit 1 + else + notify-send -u low -i "$notif_icon" " kb_layout: $new_layout${new_variant:+($new_variant)}" + echo "Layout change notification sent." + fi +else + echo "Usage: $0 {status|switch}" +fi diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh index 2bc108f2..d9d26bb3 100755 --- a/config/hypr/scripts/KillActiveProcess.sh +++ b/config/hypr/scripts/KillActiveProcess.sh @@ -7,5 +7,10 @@ # Get id of an active window active_pid=$(hyprctl activewindow | grep -o 'pid: [0-9]*' | cut -d' ' -f2) +if [[ -z "$active_pid" || ! "$active_pid" =~ ^[0-9]+$ ]]; then + notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Kill Active Window" "No active window PID found." + exit 1 +fi + # Close active window -kill $active_pid
\ No newline at end of file +kill "$active_pid" diff --git a/config/hypr/scripts/KooLsDotsUpdate.sh b/config/hypr/scripts/KooLsDotsUpdate.sh index 51277ab1..a49f5430 100755 --- a/config/hypr/scripts/KooLsDotsUpdate.sh +++ b/config/hypr/scripts/KooLsDotsUpdate.sh @@ -5,12 +5,12 @@ # Local Paths local_dir="$HOME/.config/hypr" iDIR="$HOME/.config/swaync/images/" -local_version=$(ls $local_dir/v* 2>/dev/null | sort -V | tail -n 1 | sed 's/.*v\(.*\)/\1/') +local_version=$(find "$local_dir" -maxdepth 1 -name 'v*' -printf '%f\n' 2>/dev/null | sort -V | tail -n 1 | sed 's/^v//') KooL_Dots_DIR="$HOME/Hyprland-Dots" # exit if cannot find local version if [ -z "$local_version" ]; then - notify-send -i "$iDIR/error.png" "ERROR "!?!?!!"" "Unable to find KooL's dots version . exiting.... " + notify-send -i "$iDIR/error.png" 'ERROR !?!?!!' "Unable to find KooL's dots version. Exiting." exit 1 fi @@ -19,7 +19,7 @@ branch="main" github_url="https://github.com/JaKooLit/Hyprland-Dots/tree/$branch/config/hypr/" # Fetch the version from GitHub URL - KooL's dots -github_version=$(curl -s $github_url | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sort -V | tail -n 1 | sed 's/v//') +github_version=$(curl -s "$github_url" | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sort -V | tail -n 1 | sed 's/v//') # Cant find GitHub URL - KooL's dots version if [ -z "$github_version" ]; then @@ -39,13 +39,13 @@ else case "$response" in "action1") - if [ -d $KooL_Dots_DIR ]; then + if [ -d "$KooL_Dots_DIR" ]; then if ! command -v kitty &> /dev/null; then notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Kitty terminal not found. Please install Kitty terminal." exit 1 fi kitty -e bash -c " - cd $KooL_Dots_DIR && + cd \"$KooL_Dots_DIR\" && git stash && git pull && ./copy.sh && @@ -59,7 +59,7 @@ else fi kitty -e bash -c " git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots.git $KooL_Dots_DIR && - cd $KooL_Dots_DIR && + cd \"$KooL_Dots_DIR\" && chmod +x copy.sh && ./copy.sh && notify-send -u critical -i "$iDIR/ja.png" 'Update Completed:' 'Kindly log out and relogin to take effect' diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh index 8ab71ba2..0cd58f48 100755 --- a/config/hypr/scripts/Kool_Quick_Settings.sh +++ b/config/hypr/scripts/Kool_Quick_Settings.sh @@ -22,7 +22,154 @@ UserScripts="$HOME/.config/hypr/UserScripts" # Function to show info notification show_info() { - notify-send -i "$iDIR/info.png" "Info" "$1" + if [[ -f "$iDIR/info.png" ]]; then + notify-send -i "$iDIR/info.png" "Info" "$1" + else + notify-send "Info" "$1" + fi +} +# Function to toggle Rainbow Borders script availability and refresh UI components +toggle_rainbow_borders() { + local rainbow_script="$UserScripts/RainbowBorders.sh" + local disabled_sh_bak="${rainbow_script}.bak" # RainbowBorders.sh.bak + local disabled_bak_sh="$UserScripts/RainbowBorders.bak.sh" # RainbowBorders.bak.sh (created by copy.sh when disabled) + local refresh_script="$scriptsDir/Refresh.sh" + local status="" + + # If both disabled variants exist, keep the newer one to avoid ambiguity + if [[ -f "$disabled_sh_bak" && -f "$disabled_bak_sh" ]]; then + if [[ "$disabled_sh_bak" -nt "$disabled_bak_sh" ]]; then + rm -f "$disabled_bak_sh" + else + rm -f "$disabled_sh_bak" + fi + fi + + if [[ -f "$rainbow_script" ]]; then + # Currently enabled -> disable to canonical .sh.bak + if mv "$rainbow_script" "$disabled_sh_bak"; then + status="disabled" + if command -v hyprctl &>/dev/null; then + hyprctl reload >/dev/null 2>&1 || true + fi + fi + elif [[ -f "$disabled_sh_bak" ]]; then + # Disabled (.sh.bak) -> enable + if mv "$disabled_sh_bak" "$rainbow_script"; then + status="enabled" + fi + elif [[ -f "$disabled_bak_sh" ]]; then + # Disabled (.bak.sh) -> enable (normalize to .sh) + if mv "$disabled_bak_sh" "$rainbow_script"; then + status="enabled" + fi + else + show_info "RainbowBorders script not found in $UserScripts (checked .sh, .sh.bak, .bak.sh)." + return + fi + + # Run refresh if available, otherwise apply borders directly + if [[ -x "$refresh_script" ]]; then + "$refresh_script" >/dev/null 2>&1 & + elif [[ "$current" != "disabled" && -x "$rainbow_script" ]]; then + "$rainbow_script" >/dev/null 2>&1 & + fi + + if [[ -n "$status" ]]; then + show_info "Rainbow Borders ${status}." + fi +} + +# Submenu to choose Rainbow Borders mode (disable, wallust_random, rainbow, gradient_flow) +rainbow_borders_menu() { + local rainbow_script="$UserScripts/RainbowBorders.sh" + local disabled_sh_bak="${rainbow_script}.bak" + local disabled_bak_sh="$UserScripts/RainbowBorders.bak.sh" + local refresh_script="$scriptsDir/Refresh.sh" + + # Determine current mode/status (internal) + local current="disabled" + if [[ -f "$rainbow_script" ]]; then + current=$(grep -E '^EFFECT_TYPE=' "$rainbow_script" 2>/dev/null | sed -E 's/^EFFECT_TYPE="?([^"]*)"?/\1/') + [[ -z "$current" ]] && current="unknown" + fi + + # Map internal mode to friendly display + local current_display="$current" + case "$current" in + wallust_random) current_display="Wallust Color" ;; + rainbow) current_display="Original Rainbow" ;; + gradient_flow) current_display="Gradient Flow" ;; + disabled) current_display="Disabled" ;; + esac + + + # Build options and prompt + local options="Disable Rainbow Borders\nWallust Color\nOriginal Rainbow\nGradient Flow" + local choice + choice=$(printf "%b" "$options" | rofi -i -dmenu -config "$rofi_theme" -mesg "Rainbow Borders: current = $current_display") + + [[ -z "$choice" ]] && return + + local previous="$current" + + case "$choice" in + "Disable Rainbow Borders") + if [[ -f "$rainbow_script" ]]; then + mv "$rainbow_script" "$disabled_sh_bak" + fi + current="disabled" + if command -v hyprctl &>/dev/null; then + hyprctl reload >/dev/null 2>&1 || true + fi + ;; + "Wallust Color"|"Original Rainbow"|"Gradient Flow") + local mode="" + case "$choice" in + "Wallust Color") mode="wallust_random" ;; + "Original Rainbow") mode="rainbow" ;; + "Gradient Flow") mode="gradient_flow" ;; + esac + # Ensure script is enabled + if [[ ! -f "$rainbow_script" ]]; then + if [[ -f "$disabled_sh_bak" ]]; then + mv "$disabled_sh_bak" "$rainbow_script" + elif [[ -f "$disabled_bak_sh" ]]; then + mv "$disabled_bak_sh" "$rainbow_script" + else + show_info "RainbowBorders script not found in $UserScripts." + return + fi + fi + + # Update EFFECT_TYPE in place; insert if missing + if grep -q '^EFFECT_TYPE=' "$rainbow_script" 2>/dev/null; then + sed -i 's/^EFFECT_TYPE=.*/EFFECT_TYPE="'"$mode"'"/' "$rainbow_script" + else + if head -n1 "$rainbow_script" | grep -q '^#!'; then + sed -i '1a EFFECT_TYPE="'"$mode"'"' "$rainbow_script" + else + sed -i '1i EFFECT_TYPE="'"$mode"'"' "$rainbow_script" + fi + fi + # Set current to chosen mode + current="$mode" + ;; + *) + return ;; + esac + + # Run refresh if available + if [[ -x "$refresh_script" ]]; then + "$refresh_script" >/dev/null 2>&1 & + fi + + # Apply mode immediately (in case refresh doesn't trigger it) + if [[ "$current" != "disabled" && -x "$rainbow_script" ]]; then + "$rainbow_script" >/dev/null 2>&1 & + fi + + # No notifications; mode is shown in the menu } # Function to display the menu options without numbers @@ -44,6 +191,7 @@ Edit System Default Startup Apps Edit System Default Window Rules Edit System Default Settings --- UTILITIES --- +Set SDDM Wallpaper Choose Kitty Terminal Theme Configure Monitors (nwg-displays) Configure Workspace Rules (nwg-displays) @@ -56,6 +204,7 @@ Choose Rofi Themes Search for Keybinds Toggle Game Mode Switch Dark-Light Theme +Rainbow Borders Mode EOF } @@ -78,6 +227,7 @@ main() { "Edit System Default Startup Apps") file="$configs/Startup_Apps.conf" ;; "Edit System Default Window Rules") file="$configs/WindowRules.conf" ;; "Edit System Default Settings") file="$configs/SystemSettings.conf" ;; + "Set SDDM Wallpaper") $scriptsDir/sddm_wallpaper.sh --normal ;; "Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;; "Configure Monitors (nwg-displays)") if ! command -v nwg-displays &>/dev/null; then @@ -115,6 +265,7 @@ main() { "Search for Keybinds") $scriptsDir/KeyBinds.sh ;; "Toggle Game Mode") $scriptsDir/GameMode.sh ;; "Switch Dark-Light Theme") $scriptsDir/DarkLight.sh ;; + "Rainbow Borders Mode") rainbow_borders_menu ;; *) return ;; # Do nothing for invalid choices esac diff --git a/config/hypr/scripts/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh index 21cb7db4..653e9b58 100755 --- a/config/hypr/scripts/PortalHyprland.sh +++ b/config/hypr/scripts/PortalHyprland.sh @@ -2,15 +2,39 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## # For manually starting xdg-desktop-portal-hyprland +set -euo pipefail + +kill_quietly() { + killall -q "$1" 2>/dev/null || true +} + +start_portal_binary() { + local description="$1" + shift + for candidate in "$@"; do + if [[ -x "$candidate" ]]; then + "$candidate" & + return 0 + fi + done + echo "Warning: no $description binary found (checked: $*)" >&2 + return 1 +} + sleep 1 -killall xdg-desktop-portal-hyprland -killall xdg-desktop-portal-wlr -killall xdg-desktop-portal-gnome -killall xdg-desktop-portal +kill_quietly xdg-desktop-portal-hyprland +kill_quietly xdg-desktop-portal-wlr +kill_quietly xdg-desktop-portal-gnome +kill_quietly xdg-desktop-portal sleep 1 -/usr/lib/xdg-desktop-portal-hyprland & -/usr/libexec/xdg-desktop-portal-hyprland & + +start_portal_binary "xdg-desktop-portal-hyprland" \ + /usr/lib/xdg-desktop-portal-hyprland \ + /usr/libexec/xdg-desktop-portal-hyprland + sleep 2 -/usr/lib/xdg-desktop-portal & -/usr/libexec/xdg-desktop-portal & + +start_portal_binary "xdg-desktop-portal" \ + /usr/lib/xdg-desktop-portal \ + /usr/libexec/xdg-desktop-portal diff --git a/config/hypr/scripts/RofiSearch.sh b/config/hypr/scripts/RofiSearch.sh index 8ef12c46..dfeb19ac 100755 --- a/config/hypr/scripts/RofiSearch.sh +++ b/config/hypr/scripts/RofiSearch.sh @@ -4,6 +4,10 @@ # Define the path to the config file config_file=$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf +if ! command -v jq >/dev/null 2>&1; then + notify-send -u low "Rofi Search" "jq is required for URL encoding. Please install jq." + exit 1 +fi # Check if the config file exists if [[ ! -f "$config_file" ]]; then @@ -32,5 +36,12 @@ if pgrep -x "rofi" >/dev/null; then pkill rofi fi -# Open Rofi and pass the selected query to xdg-open for Google search -echo "" | rofi -dmenu -config "$rofi_theme" -mesg "$msg" | xargs -I{} xdg-open $Search_Engine
\ No newline at end of file +# Open Rofi and pass the selected query to xdg-open for the configured search engine +query=$(printf '' | rofi -dmenu -config "$rofi_theme" -mesg "$msg") + +if [[ -z "$query" ]]; then + exit 0 +fi + +encoded_query=$(printf '%s' "$query" | jq -sRr @uri) +xdg-open "${Search_Engine}${encoded_query}" >/dev/null 2>&1 & diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh index 0ef70964..3d578a51 100755 --- a/config/hypr/scripts/ScreenShot.sh +++ b/config/hypr/scripts/ScreenShot.sh @@ -4,7 +4,8 @@ # variables time=$(date "+%d-%b_%H-%M-%S") -dir="$(xdg-user-dir PICTURES)/Screenshots" +PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" +dir="$PICTURES_DIR/Screenshots" file="Screenshot_${time}_${RANDOM}.png" iDIR="$HOME/.config/swaync/icons" diff --git a/config/hypr/scripts/Sounds.sh b/config/hypr/scripts/Sounds.sh index b372d714..e92248da 100755 --- a/config/hypr/scripts/Sounds.sh +++ b/config/hypr/scripts/Sounds.sh @@ -73,5 +73,18 @@ if ! test -f "$sound_file"; then fi fi -# pipewire priority, fallback pulseaudio -pw-play "$sound_file" || pa-play "$sound_file"
\ No newline at end of file +# Play the sound: prefer PipeWire, then PulseAudio, then ALSA +if command -v pw-play >/dev/null 2>&1; then + pw-play "$sound_file" && exit 0 +fi + +if command -v paplay >/dev/null 2>&1; then + paplay "$sound_file" && exit 0 +fi + +if command -v aplay >/dev/null 2>&1; then + aplay "$sound_file" && exit 0 +fi + +echo "Error: No suitable audio player (pw-play/paplay/aplay) found." +exit 1 diff --git a/config/hypr/scripts/SwitchKeyboardLayout.sh b/config/hypr/scripts/SwitchKeyboardLayout.sh deleted file mode 100755 index 34d008a1..00000000 --- a/config/hypr/scripts/SwitchKeyboardLayout.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env bash -# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## -# This is for changing kb_layouts. Set kb_layouts in $settings_file - -layout_file="$HOME/.cache/kb_layout" -settings_file="$HOME/.config/hypr/configs/SystemSettings.conf" -notif_icon="$HOME/.config/swaync/images/ja.png" - -# Refined ignore list with patterns or specific device names -ignore_patterns=( - "--(avrcp)" - "Bluetooth Speaker" - "Other Device - Name" -) - -# Create layout file with default layout if it does not exist -if [ ! -f "$layout_file" ]; then - echo "Creating layout file..." - default_layout=$(grep 'kb_layout = ' "$settings_file" | cut -d '=' -f 2 | tr -d '[:space:]' | cut -d ',' -f 1 2>/dev/null) - default_layout=${default_layout:-"us"} # Default to 'us' layout - echo "$default_layout" >"$layout_file" - echo "Default layout set to $default_layout" -fi - -current_layout=$(cat "$layout_file") -echo "Current layout: $current_layout" - -# Read available layouts from settings file -if [ -f "$settings_file" ]; then - kb_layout_line=$(grep 'kb_layout = ' "$settings_file" | cut -d '=' -f 2) - # Remove leading and trailing spaces around each layout - kb_layout_line=$(echo "$kb_layout_line" | tr -d '[:space:]') - IFS=',' read -r -a layout_mapping <<<"$kb_layout_line" -else - echo "Settings file not found!" - exit 1 -fi - -layout_count=${#layout_mapping[@]} -echo "Number of layouts: $layout_count" - -# Find current layout index and calculate next layout -for ((i = 0; i < layout_count; i++)); do - if [ "$current_layout" == "${layout_mapping[i]}" ]; then - current_index=$i - break - fi -done - -next_index=$(((current_index + 1) % layout_count)) -new_layout="${layout_mapping[next_index]}" -echo "Next layout: $new_layout" - -# Function to get keyboard names -get_keyboard_names() { - hyprctl devices -j | jq -r '.keyboards[].name' -} - -# Function to check if a device matches any ignore pattern -is_ignored() { - local device_name=$1 - for pattern in "${ignore_patterns[@]}"; do - if [[ "$device_name" == *"$pattern"* ]]; then - return 0 # Device matches ignore pattern - fi - done - return 1 # Device does not match any ignore pattern -} - -# Function to change keyboard layout -change_layout() { - local error_found=false - - while read -r name; do - if is_ignored "$name"; then - echo "Skipping ignored device: $name" - continue - fi - - echo "Switching layout for $name to $new_layout..." - hyprctl switchxkblayout "$name" "$next_index" - if [ $? -ne 0 ]; then - echo "Error while switching layout for $name." >&2 - error_found=true - fi - done <<<"$(get_keyboard_names)" - - $error_found && return 1 - return 0 -} - -# Execute layout change and notify -if ! change_layout; then - notify-send -u low -t 2000 'kb_layout' " Error:" " Layout change failed" - echo "Layout change failed." >&2 - exit 1 -else - notify-send -u low -i "$notif_icon" " kb_layout: $new_layout" - echo "Layout change notification sent." -fi - -echo "$new_layout" >"$layout_file" diff --git a/config/hypr/scripts/Tak0-Per-Window-Switch.sh b/config/hypr/scripts/Tak0-Per-Window-Switch.sh index 7879fb85..7cec89a6 100755 --- a/config/hypr/scripts/Tak0-Per-Window-Switch.sh +++ b/config/hypr/scripts/Tak0-Per-Window-Switch.sh @@ -17,6 +17,7 @@ MAP_FILE="$HOME/.cache/kb_layout_per_window" CFG_FILE="$HOME/.config/hypr/configs/SystemSettings.conf" ICON="$HOME/.config/swaync/images/ja.png" SCRIPT_NAME="$(basename "$0")" +LISTENER_PIDFILE="$HOME/.cache/kb_layout_per_window.listener.pid" # Ensure map file exists touch "$MAP_FILE" @@ -99,7 +100,7 @@ subscribe() { local SOCKET2="$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" [[ -S "$SOCKET2" ]] || { echo "Error: Hyprland socket not found." >&2 - exit 1 + return 1 } socat -u UNIX-CONNECT:"$SOCKET2" - | while read -r line; do @@ -108,9 +109,20 @@ subscribe() { } # Ensure only one listener -if ! pgrep -f "$SCRIPT_NAME.*--listener" >/dev/null; then - subscribe --listener & -fi +start_listener_once() { + if [[ -f "$LISTENER_PIDFILE" ]]; then + local existing_pid + existing_pid=$(cat "$LISTENER_PIDFILE" 2>/dev/null || true) + if [[ -n "$existing_pid" ]] && kill -0 "$existing_pid" 2>/dev/null; then + return + fi + fi + + subscribe & + echo $! >"$LISTENER_PIDFILE" +} + +start_listener_once # CLI case "$1" in diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh new file mode 100755 index 00000000..19ee3298 --- /dev/null +++ b/config/hypr/scripts/ThemeChanger.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash +set -euo pipefail + +# SPDX-FileCopyrightText: 2025-present Ahum Maitra theahummaitra@gmail.com +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# Repository url : https://github.com/TheAhumMaitra/cautious-waddle + +require() { + command -v "$1" >/dev/null 2>&1 || { + printf '%s\n' "Missing dependency: $1" >&2 + exit 127 + } +} + +require wallust +require rofi + +# notify-send is optional +have_notify() { command -v notify-send >/dev/null 2>&1; } + +# Prompt for theme; guard -e on cancel +set +e +choice="$(wallust theme list \ + | sed -e '1d' -e 's/^- //' \ + | rofi -dmenu -i -p 'Select Global Theme')" +prompt_status=$? +set -e + +# Exit cleanly on cancel or empty selection +if (( prompt_status != 0 )) || [[ -z "${choice}" ]]; then + exit 0 +fi + +# Record time before applying so we can wait for fresh template outputs +start_ts=$(date +%s) + +# Apply the theme and report result +if wallust theme -- "${choice}"; then + have_notify && notify-send -a ThemeChanger \ + -h string:x-dunst-stack-tag:themechanger \ + "Global theme changed" "Selected: ${choice}" + + # Wait until template targets exist, are newer than start_ts, and are stable (size/mtime stops changing) + # Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed + mkdir -p "$HOME/.config/ghostty" || true + + targets=( + "$HOME/.config/waybar/wallust/colors-waybar.css" + "$HOME/.config/rofi/wallust/colors-rofi.rasi" + "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" + "$HOME/.config/hypr/wallust/wallust-hyprland.conf" + "$HOME/.config/ghostty/wallust.conf" + ) + + # Normalize Ghostty palette syntax in case upstream templates or older targets used ':' + ghostty_conf="$HOME/.config/ghostty/wallust.conf" + if [ -f "$ghostty_conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$ghostty_conf" 2>/dev/null || true + fi + + # Phase 1: appearance + freshness + for _ in $(seq 1 100); do # up to ~10s + ok=1 + for f in "${targets[@]}"; do + [ -s "$f" ] || { ok=0; break; } + mtime=$(stat -c %Y "$f" 2>/dev/null || echo 0) + [ "$mtime" -ge "$start_ts" ] || { ok=0; break; } + done + [ $ok -eq 1 ] && break + sleep 0.1 + done + + # Phase 2: stability (avoid reading half-written files) + if [ $ok -eq 1 ]; then + for _ in 1 2 3; do + sizes_a=(); mtimes_a=() + for f in "${targets[@]}"; do + sizes_a+=("$(stat -c %s "$f" 2>/dev/null || echo 0)") + mtimes_a+=("$(stat -c %Y "$f" 2>/dev/null || echo 0)") + done + sleep 0.15 + sizes_b=(); mtimes_b=() + for f in "${targets[@]}"; do + sizes_b+=("$(stat -c %s "$f" 2>/dev/null || echo 0)") + mtimes_b+=("$(stat -c %Y "$f" 2>/dev/null || echo 0)") + done + if [ "${sizes_a[*]}" = "${sizes_b[*]}" ] && [ "${mtimes_a[*]}" = "${mtimes_b[*]}" ]; then + break + fi + done + else + # As a safety net, wait a bit to avoid racing rofi reload against template writes + sleep 0.5 + fi + + # Small cushion before refresh to mirror wallpaper flow + sleep 0.2 + # Normalize Rofi selection colors to use the palette's accent (color12) + rofi_colors="$HOME/.config/rofi/wallust/colors-rofi.rasi" + if [ -f "$rofi_colors" ]; then + accent_hex=$(sed -n 's/^\s*color12:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1) + [ -z "$accent_hex" ] && accent_hex=$(sed -n 's/^\s*color13:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1) + if [ -n "$accent_hex" ]; then + sed -i -E "s|^(\s*selected-normal-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-active-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-urgent-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-normal-foreground:\s*).*$|\1#000000;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-active-foreground:\s*).*$|\1#000000;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-urgent-foreground:\s*).*$|\1#000000;|" "$rofi_colors" + fi + fi + + # Reload Hyprland so new border colors from wallust-hyprland.conf take effect + if command -v hyprctl >/dev/null 2>&1; then + hyprctl reload >/dev/null 2>&1 || true + fi + + # Refresh bars/menus after files are ready + if [ -x "$HOME/.config/hypr/scripts/Refresh.sh" ]; then + "$HOME/.config/hypr/scripts/Refresh.sh" >/dev/null 2>&1 || true + else + if command -v waybar-msg >/dev/null 2>&1; then + waybar-msg cmd reload >/dev/null 2>&1 || true + else + pkill -SIGUSR2 waybar >/dev/null 2>&1 || true + fi + fi + + # Ask kitty to reload its config so the new 01-Wallust.conf is picked up + if pidof kitty >/dev/null; then + for pid in $(pidof kitty); do kill -SIGUSR1 "$pid" 2>/dev/null || true; done + fi + + # Ask ghostty to reload its config so the updated wallust.conf is applied + if pidof ghostty >/dev/null; then + for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done + fi +else + have_notify && notify-send -u critical -a ThemeChanger \ + -h string:x-dunst-stack-tag:themechanger \ + "Failed to apply theme" "${choice}" + exit 1 +fi diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh index 030c36de..f14165a0 100755 --- a/config/hypr/scripts/TouchPad.sh +++ b/config/hypr/scripts/TouchPad.sh @@ -5,28 +5,50 @@ # use hyprctl devices to get your system touchpad device name # source https://github.com/hyprwm/Hyprland/discussions/4283?sort=new#discussioncomment-8648109 +set -euo pipefail + notif="$HOME/.config/swaync/images/ja.png" +laptops_conf="$HOME/.config/hypr/UserConfigs/Laptops.conf" + +touchpad_device="${TOUCHPAD_DEVICE:-}" +if [[ -z "$touchpad_device" && -f "$laptops_conf" ]]; then + touchpad_device="$( + awk -F= '/^\$Touchpad_Device/ { + gsub(/[[:space:]]*/, "", $1); + gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2); + print $2; + exit + }' "$laptops_conf" + )" +fi + +if [[ -z "$touchpad_device" ]]; then + notify-send -u low -i "$notif" " Touchpad" " Device name not set (check Laptops.conf)" + exit 1 +fi -export STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status" +touchpad_keyword="${TOUCHPAD_KEYWORD:-device:${touchpad_device}:enabled}" +status_file="${XDG_RUNTIME_DIR:-/tmp}/touchpad.status" enable_touchpad() { - printf "true" >"$STATUS_FILE" - notify-send -u low -i $notif " Enabling" " touchpad" - hyprctl keyword '$TOUCHPAD_ENABLED' "true" -r + printf "true" >"$status_file" + notify-send -u low -i "$notif" " Enabling" " touchpad" + hyprctl keyword "$touchpad_keyword" true -r } disable_touchpad() { - printf "false" >"$STATUS_FILE" - notify-send -u low -i $notif " Disabling" " touchpad" - hyprctl keyword '$TOUCHPAD_ENABLED' "false" -r + printf "false" >"$status_file" + notify-send -u low -i "$notif" " Disabling" " touchpad" + hyprctl keyword "$touchpad_keyword" false -r } -if ! [ -f "$STATUS_FILE" ]; then - enable_touchpad -else - if [ $(cat "$STATUS_FILE") = "true" ]; then +current_state="false" +if [[ -f "$status_file" ]]; then + current_state="$(<"$status_file")" +fi + +if [[ "$current_state" == "true" ]]; then disable_touchpad - elif [ $(cat "$STATUS_FILE") = "false" ]; then +else enable_touchpad - fi fi diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh index 4c82f543..e1034a68 100755 --- a/config/hypr/scripts/Volume.sh +++ b/config/hypr/scripts/Volume.sh @@ -7,8 +7,14 @@ sDIR="$HOME/.config/hypr/scripts" # Get Volume get_volume() { + if [[ "$(pamixer --get-mute)" == "true" ]]; then + echo "Muted" + return + fi + + local volume volume=$(pamixer --get-volume) - if [[ "$volume" -eq "0" ]]; then + if [[ "$volume" -eq 0 ]]; then echo "Muted" else echo "$volume %" @@ -17,12 +23,15 @@ get_volume() { # Get icons get_icon() { - current=$(get_volume) - if [[ "$current" == "Muted" ]]; then + if [[ "$(pamixer --get-mute)" == "true" ]]; then echo "$iDIR/volume-mute.png" - elif [[ "${current%\%}" -le 30 ]]; then + return + fi + + current=$(pamixer --get-volume) + if [[ "$current" -le 30 ]]; then echo "$iDIR/volume-low.png" - elif [[ "${current%\%}" -le 60 ]]; then + elif [[ "$current" -le 60 ]]; then echo "$iDIR/volume-mid.png" else echo "$iDIR/volume-high.png" @@ -31,11 +40,18 @@ get_icon() { # Notify notify_user() { - if [[ "$(get_volume)" == "Muted" ]]; then - notify-send -e -h string:x-canonical-private-synchronous:volume_notif -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$(get_icon)" " Volume:" " Muted" + local muted="$(pamixer --get-mute)" + local level="$(pamixer --get-volume)" + + if [[ "$muted" == "true" || "$level" -eq 0 ]]; then + notify-send -e -h string:x-canonical-private-synchronous:volume_notif \ + -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$(get_icon)" \ + " Volume:" " Muted" else - notify-send -e -h int:value:"$(get_volume | sed 's/%//')" -h string:x-canonical-private-synchronous:volume_notif -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$(get_icon)" " Volume Level:" " $(get_volume)" && - "$sDIR/Sounds.sh" --volume + notify-send -e -h int:value:"$level" -h string:x-canonical-private-synchronous:volume_notif \ + -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$(get_icon)" \ + " Volume Level:" " ${level}%" && + "$sDIR/Sounds.sh" --volume fi } @@ -44,7 +60,7 @@ inc_volume() { if [ "$(pamixer --get-mute)" == "true" ]; then toggle_mute else - pamixer -i 5 --allow-boost --set-limit 150 && notify_user + pamixer -i "$1" --allow-boost --set-limit 150 && notify_user fi } @@ -53,7 +69,7 @@ dec_volume() { if [ "$(pamixer --get-mute)" == "true" ]; then toggle_mute else - pamixer -d 5 && notify_user + pamixer -d "$1" && notify_user fi } @@ -71,13 +87,14 @@ toggle_mic() { if [ "$(pamixer --default-source --get-mute)" == "false" ]; then pamixer --default-source -m && notify-send -e -u low -h boolean:SWAYNC_BYPASS_DND:true -i "$iDIR/microphone-mute.png" " Microphone:" " Switched OFF" elif [ "$(pamixer --default-source --get-mute)" == "true" ]; then - pamixer -u --default-source u && notify-send -e -u low -h boolean:SWAYNC_BYPASS_DND:true -i "$iDIR/microphone.png" " Microphone:" " Switched ON" + pamixer --default-source -u && notify-send -e -u low -h boolean:SWAYNC_BYPASS_DND:true -i "$iDIR/microphone.png" " Microphone:" " Switched ON" fi } # Get Mic Icon get_mic_icon() { - current=$(pamixer --default-source --get-volume) - if [[ "$current" -eq "0" ]]; then + local muted="$(pamixer --default-source --get-mute)" + local current="$(pamixer --default-source --get-volume)" + if [[ "$muted" == "true" || "$current" -eq "0" ]]; then echo "$iDIR/microphone-mute.png" else echo "$iDIR/microphone.png" @@ -86,8 +103,14 @@ get_mic_icon() { # Get Microphone Volume get_mic_volume() { + if [[ "$(pamixer --default-source --get-mute)" == "true" ]]; then + echo "Muted" + return + fi + + local volume volume=$(pamixer --default-source --get-volume) - if [[ "$volume" -eq "0" ]]; then + if [[ "$volume" -eq 0 ]]; then echo "Muted" else echo "$volume %" @@ -96,9 +119,21 @@ get_mic_volume() { # Notify for Microphone notify_mic_user() { - volume=$(get_mic_volume) - icon=$(get_mic_icon) - notify-send -e -h int:value:"$volume" -h "string:x-canonical-private-synchronous:volume_notif" -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$icon" " Mic Level:" " $volume" + local muted="$(pamixer --default-source --get-mute)" + local level="$(pamixer --default-source --get-volume)" + local icon message + + if [[ "$muted" == "true" || "$level" -eq 0 ]]; then + icon="$iDIR/microphone-mute.png" + notify-send -e -h "string:x-canonical-private-synchronous:volume_notif" \ + -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$icon" \ + " Mic Level:" " Muted" + else + icon="$iDIR/microphone.png" + notify-send -e -h int:value:"$level" -h "string:x-canonical-private-synchronous:volume_notif" \ + -h boolean:SWAYNC_BYPASS_DND:true -u low -i "$icon" \ + " Mic Level:" " ${level}%" + fi } # Increase MIC Volume @@ -113,31 +148,48 @@ inc_mic_volume() { # Decrease MIC Volume dec_mic_volume() { if [ "$(pamixer --default-source --get-mute)" == "true" ]; then - toggle-mic + toggle_mic else pamixer --default-source -d 5 && notify_mic_user fi } # Execute accordingly -if [[ "$1" == "--get" ]]; then - get_volume -elif [[ "$1" == "--inc" ]]; then - inc_volume -elif [[ "$1" == "--dec" ]]; then - dec_volume -elif [[ "$1" == "--toggle" ]]; then - toggle_mute -elif [[ "$1" == "--toggle-mic" ]]; then - toggle_mic -elif [[ "$1" == "--get-icon" ]]; then - get_icon -elif [[ "$1" == "--get-mic-icon" ]]; then - get_mic_icon -elif [[ "$1" == "--mic-inc" ]]; then - inc_mic_volume -elif [[ "$1" == "--mic-dec" ]]; then - dec_mic_volume -else - get_volume -fi
\ No newline at end of file +case "$1" in +"--get") + get_volume + ;; +"--inc") + inc_volume 5 + ;; +"--inc-precise") + inc_volume 1 + ;; +"--dec") + dec_volume 5 + ;; +"--dec-precise") + dec_volume 1 + ;; +"--toggle") + toggle_mute + ;; +"--toggle-mic") + toggle_mic + ;; +"--get-icon") + get_icon + ;; +"--get-mic-icon") + get_mic_icon + ;; +"--mic-inc") + inc_mic_volume + ;; +"--mic-dec") + dec_mic_volume + ;; +*) + get_volume + ;; +esac diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 657f41ab..63911036 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -10,6 +10,27 @@ passed_path="${1:-}" cache_dir="$HOME/.cache/swww/" rofi_link="$HOME/.config/rofi/.current_wallpaper" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" +read_cached_wallpaper() { + local cache_file="$1" + if [[ -f "$cache_file" ]]; then + awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file" + fi +} + +read_wallpaper_from_query() { + local monitor="$1" + swww query | awk -v mon="$monitor" ' + /^Monitor/ { + cur=$2 + gsub(":", "", cur) + } + /image:/ && cur==mon { + sub(/^.*image: /,"") + print + exit + } + ' +} # Helper: get focused monitor name (prefer JSON) get_focused_monitor() { @@ -39,8 +60,11 @@ else if [[ -f "$cache_file" ]]; then # The first non-filter line is the original wallpaper path - # wallpaper_path="$(grep -v 'Lanczos3' "$cache_file" | head -n 1)" - wallpaper_path=$(swww query | grep $current_monitor | awk '{print $9}') + wallpaper_path="$(read_cached_wallpaper "$cache_file")" + fi + + if [[ -z "$wallpaper_path" ]]; then + wallpaper_path="$(read_wallpaper_from_query "$current_monitor")" fi fi @@ -54,6 +78,59 @@ ln -sf "$wallpaper_path" "$rofi_link" || true mkdir -p "$(dirname "$wallpaper_current")" cp -f "$wallpaper_path" "$wallpaper_current" || true +# Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed +mkdir -p "$HOME/.config/ghostty" || true +wait_for_templates() { + local start_ts="$1" + shift + local files=("$@") + for _ in {1..50}; do + local ready=true + for file in "${files[@]}"; do + if [[ ! -s "$file" ]]; then + ready=false + break + fi + local mtime + mtime=$(stat -c %Y "$file" 2>/dev/null || echo 0) + if (( mtime < start_ts )); then + ready=false + break + fi + done + $ready && return 0 + sleep 0.1 + done + return 1 +} + # Run wallust (silent) to regenerate templates defined in ~/.config/wallust/wallust.toml # -s is used in this repo to keep things quiet and avoid extra prompts +start_ts=$(date +%s) wallust run -s "$wallpaper_path" || true +wallust_targets=( + "$HOME/.config/waybar/wallust/colors-waybar.css" + "$HOME/.config/rofi/wallust/colors-rofi.rasi" +) +wait_for_templates "$start_ts" "${wallust_targets[@]}" || true + +# Normalize Ghostty palette syntax in case ':' was used by older files +if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true +fi + +# Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2) +for _ in 1 2 3; do + [ -s "$HOME/.config/ghostty/wallust.conf" ] && break + sleep 0.1 +done +if pidof ghostty >/dev/null; then + for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done +fi + +# Prompt Waybar to reload colors +if command -v waybar-msg >/dev/null 2>&1; then + waybar-msg cmd reload >/dev/null 2>&1 || true +elif pidof waybar >/dev/null; then + killall -SIGUSR2 waybar 2>/dev/null || true +fi diff --git a/config/hypr/scripts/WaybarScripts.sh b/config/hypr/scripts/WaybarScripts.sh index d2205c42..54f7a4b4 100755 --- a/config/hypr/scripts/WaybarScripts.sh +++ b/config/hypr/scripts/WaybarScripts.sh @@ -24,6 +24,14 @@ if [[ -z "$term" ]]; then fi # Execute accordingly based on the passed argument +launch_files() { + if [[ -z "$files" ]]; then + notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Waybar: files" "Set \$files in 01-UserDefaults.conf or install a default file manager." + return 1 + fi + eval "$files &" +} + if [[ "$1" == "--btop" ]]; then $term --title btop sh -c 'btop' elif [[ "$1" == "--nvtop" ]]; then @@ -33,7 +41,7 @@ elif [[ "$1" == "--nmtui" ]]; then elif [[ "$1" == "--term" ]]; then $term & elif [[ "$1" == "--files" ]]; then - $files & + launch_files else echo "Usage: $0 [--btop | --nvtop | --nmtui | --term]" echo "--btop : Open btop in a new term" diff --git a/config/hypr/scripts/keybinds_parser.py b/config/hypr/scripts/keybinds_parser.py new file mode 100755 index 00000000..d12e3854 --- /dev/null +++ b/config/hypr/scripts/keybinds_parser.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python3 +import sys +import re +import os + +def normalize_combo(combo): + return combo.replace(" ", "").replace("\t", "") + +def extract_combo(line): + # Remove comments and whitespace + line = re.sub(r'\s*#.*$', '', line).strip() + + if '=' not in line: + return None + + try: + rhs = line.split('=', 1)[1] + parts = [p.strip() for p in rhs.split(',')] + if len(parts) < 2: + return None + + mods = parts[0] + key = parts[1] + return f"{mods},{key}" + except Exception: + return None + +def parse_files(files): + # Data structures to match original logic + binding_map = {} # combo -> effective line + source_map = {} # combo -> source file + user_bind_map = {} # combo -> user bind line + unbound_user = {} # combo -> True if explicitly unbound in user file + seen_any_bind = {} # combo -> True if seen + default_seen = {} # combo -> True if default bind exists + + # We assume the last file in the list is the user config (UserKeybinds.conf) + # This matches the bash script logic where user_keybinds_conf is passed last + if not files: + return [], [] + + user_conf_path = files[-1] if len(files) > 1 else None + + for file_path in files: + if not os.path.exists(file_path): + continue + + try: + with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: + for line in f: + line = line.rstrip('\n') + if not line or line.strip().startswith('#'): + continue + + is_bind = re.match(r'^\s*bind[a-z]*\s*=', line) + is_unbind = re.match(r'^\s*unbind\s*=', line) + + if is_bind: + combo_raw = extract_combo(line) + if not combo_raw: + continue + combo = normalize_combo(combo_raw) + seen_any_bind[combo] = True + + is_user_file = (file_path == user_conf_path) + + if not is_user_file: + default_seen[combo] = True + + # prefer user bind, else first seen + if combo not in source_map: + binding_map[combo] = line + source_map[combo] = file_path + + if is_user_file: + user_bind_map[combo] = line + binding_map[combo] = line + source_map[combo] = file_path + + elif is_unbind: + combo_raw = extract_combo(line) + if not combo_raw: + continue + combo = normalize_combo(combo_raw) + + if file_path == user_conf_path: + unbound_user[combo] = True + + # If unbind is found, we should remove the bind from our map + # so it doesn't show up in the menu. + if combo in binding_map: + del binding_map[combo] + if combo in source_map: + del source_map[combo] + + except Exception as e: + # Silently ignore read errors to mimic bash behavior or log to stderr + sys.stderr.write(f"Error reading {file_path}: {e}\n") + continue + + # Build results + raw_keybinds = [] + missing_unbind_suggestions = [] + + for combo in seen_any_bind: + eff_line = binding_map.get(combo) + src = source_map.get(combo) + + if not eff_line: + continue + + raw_keybinds.append(eff_line) + + # Check for missing unbind suggestions + # If user overrides a default but didn't unbind in user file + if (src == user_conf_path and + combo in default_seen and + combo not in unbound_user): + + # Create suggestion: replace 'bind' with 'unbind' + suggest = re.sub(r'^\s*bind[a-z]*', 'unbind', eff_line) + missing_unbind_suggestions.append(suggest) + + return raw_keybinds, missing_unbind_suggestions + +def format_for_rofi(raw_binds): + formatted_lines = [] + + for line in raw_binds: + # line is like "bind = MODS, KEY, DISPATCHER, PARAMS" or "bindd = ..." + # Parsing logic from awk script: + + # 1. Cleaner binder + match = re.match(r'^\s*(bind[a-z]*)\s*=(.*)', line) + if not match: + continue + + binder = match.group(1).replace(" ", "").replace("\t", "") + rhs = match.group(2).strip() + + # "bind" ends in d, but doesn't have a description. "bindd" does. + # Original script logic `index(binder, "d")>0` was likely buggy for "bind". + # We'll assume strict check for bindd or similar if needed, + # but avoiding "bind" having a description is crucial for correct output. + has_desc = 'd' in binder and binder != 'bind' + + # Split by comma regex (handling spaces) + parts = [p.strip() for p in rhs.split(',')] + + if len(parts) < 2: + continue + + mods = parts[0] + key = parts[1] + + desc = "" + dispatcher = "" + params = "" + + start_idx = 0 + + if has_desc: + desc = parts[2] if len(parts) >= 3 else "" + dispatcher = parts[3] if len(parts) >= 4 else "" + start_idx = 4 + else: + dispatcher = parts[2] if len(parts) >= 3 else "" + start_idx = 3 + + # Collect params + remaining_parts = [] + if start_idx < len(parts): + for i in range(start_idx, len(parts)): + if parts[i]: + remaining_parts.append(parts[i]) + + if remaining_parts: + params = ", ".join(remaining_parts) + + # Formatting mods + mods = mods.replace("$mainMod", "SUPER") + mods = re.sub(r'[ \t]+', '+', mods) + + # Build combo string + if mods and key: + combo_str = f"{mods}+{key}" + elif key: + combo_str = key + else: + combo_str = mods + + # Final Print Format + if has_desc and desc: + formatted_lines.append(f"{combo_str} — {desc}") + elif dispatcher: + if params: + formatted_lines.append(f"{combo_str} — {dispatcher} {params}") + else: + formatted_lines.append(f"{combo_str} — {dispatcher}") + else: + formatted_lines.append(combo_str) + + return formatted_lines + +def main(): + if len(sys.argv) < 2: + # No files provided + sys.exit(0) + + config_files = sys.argv[1:] + + binds, suggestions = parse_files(config_files) + + if not binds: + print("no keybinds found.") + sys.exit(1) + + formatted = format_for_rofi(binds) + + for line in formatted: + print(line) + + # Handle suggestions (print to stderr or a specific file if needed, + # but the original script assigns it to a variable 'msg'. + # To pass this back to bash, we might need a separate mechanism or just print to a known file.) + if suggestions: + import tempfile + try: + with tempfile.NamedTemporaryFile(mode='w', delete=False, prefix='hypr-unbind-suggestions-', suffix='.conf') as tf: + tf.write('\n'.join(suggestions) + '\n') + # We print a special marker line to stdout that the bash script can capture? + # Or better, just print to stderr and let the user ignore it, + # OR, since the original script specifically puts it in the Rofi message, + # we can print a special string at the END of stdout or to a side channel. + + # Let's decide to print the valid keybinds to stdout (for rofi). + # And print the suggestion file path to a known location or specific fd if possible. + # Simplest: Write to a fixed temp file location that the bash script checks. + with open("/tmp/hypr_keybind_suggestions_file", "w") as sf: + sf.write(tf.name) + except Exception: + pass + +if __name__ == "__main__": + main() diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh index 9dca2f72..17640f40 100755 --- a/config/hypr/scripts/sddm_wallpaper.sh +++ b/config/hypr/scripts/sddm_wallpaper.sh @@ -6,7 +6,8 @@ # variables terminal=kitty -wallDIR="$HOME/Pictures/wallpapers" +PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" +wallDIR="$PICTURES_DIR/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" wallpaper_modified="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified" @@ -20,6 +21,10 @@ sddm_simple="$sddm_themes_dir/simple_sddm_2" # rofi-wallust-sddm colors path rofi_wallust="$HOME/.config/rofi/wallust/colors-rofi.rasi" sddm_theme_conf="$sddm_simple/theme.conf" +if [[ ! -f "$rofi_wallust" ]]; then + notify-send -i "$iDIR/error.png" "SDDM" "Wallust colors file not found ($rofi_wallust). Aborting." + exit 1 +fi # Directory for swaync iDIR="$HOME/.config/swaync/images" @@ -33,15 +38,45 @@ elif [[ "$1" == "--effects" ]]; then mode="effects" fi +# Abort if SDDM is not running (avoid errors on non-SDDM systems) +if command -v systemctl >/dev/null 2>&1; then + if ! systemctl is-active --quiet sddm; then + notify-send -i "$iDIR/error.png" "SDDM" "SDDM is not running. Skipping SDDM wallpaper update." + exit 0 + fi +elif ! pidof sddm >/dev/null 2>&1; then + notify-send -i "$iDIR/error.png" "SDDM" "SDDM is not running. Skipping SDDM wallpaper update." + exit 0 +fi + # Extract colors from rofi wallust config -color0=$(grep -oP 'color1:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -color1=$(grep -oP 'color0:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -color7=$(grep -oP 'color14:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -color10=$(grep -oP 'color10:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -color12=$(grep -oP 'color12:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -color13=$(grep -oP 'color13:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") -foreground=$(grep -oP 'foreground:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") +extract_color() { + local key="$1" + local value + value=$(grep -oP "$key:\s*\K#[A-Fa-f0-9]+" "$rofi_wallust" | head -n1) + echo "$value" +} + +color0=$(extract_color "color1") +color1=$(extract_color "color0") +color7=$(extract_color "color14") +color10=$(extract_color "color10") +color12=$(extract_color "color12") +color13=$(extract_color "color13") +foreground=$(extract_color "foreground") + +missing_colors=() +for var in color0 color1 color7 color10 color12 color13 foreground; do + if [[ -z "${!var}" ]]; then + missing_colors+=("$var") + fi +done + +if [[ ${#missing_colors[@]} -gt 0 ]]; then + notify-send -i "$iDIR/error.png" "SDDM" "Missing color(s): ${missing_colors[*]}. Run Wallust first." + exit 1 +fi #background-color=$(grep -oP 'background:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust") # wallpaper to use diff --git a/config/hypr/scripts/update_WindowRules.sh b/config/hypr/scripts/update_WindowRules.sh new file mode 100755 index 00000000..8b4262ba --- /dev/null +++ b/config/hypr/scripts/update_WindowRules.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Script to update WindowRules config if Hyprland version is >= 0.53 + +CONFIGS_DIR="$HOME/.config/hypr/configs" +TARGET_FILE="$CONFIGS_DIR/WindowRules.conf" +V3_FILE="$CONFIGS_DIR/WindowRules-config-v3.conf" + +if [[ ! -f "$V3_FILE" ]]; then + echo "Error: Source configuration file not found: $V3_FILE" + exit 1 +fi + +get_hyprland_version() { + local ver="0.0.0" + local raw_ver="" + + if command -v hyprctl &>/dev/null; then + raw_ver=$(hyprctl version 2>/dev/null | grep "Tag:" | cut -d 'v' -f2) + fi + + if [ -z "$raw_ver" ] && command -v Hyprland &>/dev/null; then + raw_ver=$(Hyprland --version 2>/dev/null | grep "Tag:" | cut -d 'v' -f2 | awk '{print $1}') + fi + + if [ -n "$raw_ver" ]; then + ver=$(echo "$raw_ver" | grep -oE '^[0-9]+\.[0-9]+(\.[0-9]+)?') + fi + + if [ -z "$ver" ]; then + echo "0.0.0" + else + echo "$ver" + fi +} + +VERSION=$(get_hyprland_version) +REQUIRED_VER="0.53" + +# Check if version >= REQUIRED_VER +SMALLEST=$(printf '%s\n' "$REQUIRED_VER" "$VERSION" | sort -V | head -n1) + +if [ "$SMALLEST" = "$REQUIRED_VER" ]; then + echo "Version $VERSION >= $REQUIRED_VER. Updating WindowRules config..." + # Backup existing config if it exists + if [ -f "$TARGET_FILE" ]; then + echo "Backing up existing WindowRules.conf to WindowRules.conf.bak" + mv "$TARGET_FILE" "$TARGET_FILE.bak" + fi + cp "$V3_FILE" "$TARGET_FILE" + + if command -v hyprctl &>/dev/null; then + if hyprctl instances &>/dev/null; then + echo "Reloading Hyprland..." + hyprctl reload + fi + fi +else + echo "Version $VERSION < $REQUIRED_VER. No update needed." +fi + diff --git a/config/hypr/v2.3.18 b/config/hypr/v2.3.19 index 31b3414d..31b3414d 100644 --- a/config/hypr/v2.3.18 +++ b/config/hypr/v2.3.19 diff --git a/config/kitty/kitty-themes/00-Default.conf b/config/kitty/kitty-themes/00-Default.conf index 2c1ac15d..39fc496c 100644 --- a/config/kitty/kitty-themes/00-Default.conf +++ b/config/kitty/kitty-themes/00-Default.conf @@ -1,3 +1,4 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # This is just created to remove all the themes +include ./01-Wallust.conf diff --git a/config/rofi/themes/KooL_style-1.rasi b/config/rofi/themes/KooL_style-1.rasi index 89bb959e..0e2eb709 100644 --- a/config/rofi/themes/KooL_style-1.rasi +++ b/config/rofi/themes/KooL_style-1.rasi @@ -25,7 +25,7 @@ configuration { background-alt: @color1; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; text-selected: @background; text-color: @foreground; diff --git a/config/rofi/themes/KooL_style-13-Vertical.rasi b/config/rofi/themes/KooL_style-13-Vertical.rasi index 1e7f8337..850b564c 100644 --- a/config/rofi/themes/KooL_style-13-Vertical.rasi +++ b/config/rofi/themes/KooL_style-13-Vertical.rasi @@ -25,7 +25,7 @@ configuration { background-alt: @color10; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; text-selected: @background; text-color: @foreground; diff --git a/config/rofi/themes/KooL_style-14.rasi b/config/rofi/themes/KooL_style-14.rasi index a766cb96..fddf18bd 100644 --- a/config/rofi/themes/KooL_style-14.rasi +++ b/config/rofi/themes/KooL_style-14.rasi @@ -19,7 +19,7 @@ configuration { background-alt: @color0; selected: @color13; active: @color12; - urgent: #8E3596; + urgent: @color13; } /*****----- Main Window -----*****/ diff --git a/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi b/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi index 4efe106c..542f3a1f 100644 --- a/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi +++ b/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi @@ -23,10 +23,10 @@ configuration { /* ---- Global Properties ---- */ * { - background-alt: @selected-active-background; // Buttons background - selected: @selected-urgent-background; // Button selected - active: @selected-normal-background; // Window activated - urgent: @selected; // When hovering the activated window (maybe more?) + background-alt: @color0; // neutral background + selected: @color12; // accent + active: @color11; // secondary + urgent: @color13; // alert text-selected: @background; text-color: @foreground; @@ -150,7 +150,7 @@ button { } button selected { background-color: @selected; - text-color: @text-selected; + text-color: @background; } /* ---- Scrollbar ---- */ @@ -191,8 +191,8 @@ element selected.normal { border: 0px 3px 0px 3px; border-radius: 16px; border-color: @selected; - background-color: transparent; - text-color: @background-alt; + background-color: @selected; + text-color: @background; } element selected.urgent { diff --git a/config/rofi/themes/KooL_style-3-Fullscreen-v2.rasi b/config/rofi/themes/KooL_style-3-Fullscreen-v2.rasi index 7e771105..37e515a9 100644 --- a/config/rofi/themes/KooL_style-3-Fullscreen-v2.rasi +++ b/config/rofi/themes/KooL_style-3-Fullscreen-v2.rasi @@ -26,7 +26,7 @@ configuration { background-alt: @color7; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; border-color: @selected; handle-color: @selected; diff --git a/config/rofi/themes/KooL_style-4.rasi b/config/rofi/themes/KooL_style-4.rasi index ea7b1977..b1859c37 100644 --- a/config/rofi/themes/KooL_style-4.rasi +++ b/config/rofi/themes/KooL_style-4.rasi @@ -22,12 +22,13 @@ configuration { /*****----- Global Properties -----*****/ * { - background-alt: @color1; + background-alt: @color0; + /* selected uses color12, active uses color11 (match other working styles) */ selected: @color12; active: @color11; - urgent: #F7768E; + urgent: @color13; - border-color: @color11; + border-color: @active; handle-color: @selected; background-color: @background; foreground-color: @foreground; @@ -38,12 +39,13 @@ configuration { urgent-foreground: @background; active-background: @active; active-foreground: @background; + /* force selection to use the selected accent, not imported selected-* values */ selected-normal-background: @selected; selected-normal-foreground: @background; - selected-urgent-background: @active; + selected-urgent-background: @selected; selected-urgent-foreground: @background; - selected-active-background: @urgent; - selected-active-foreground: @color12; + selected-active-background: @selected; + selected-active-foreground: @background; alternate-normal-background: @background; alternate-normal-foreground: @foreground; alternate-urgent-background: @urgent; @@ -219,16 +221,16 @@ element normal.active { element-text selected, element selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; + background-color: @selected; + text-color: @background; } element selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; + background-color: @selected; + text-color: @background; } element selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; + background-color: @selected; + text-color: @background; } element alternate.normal { background-color: @alternate-normal-background; @@ -285,8 +287,8 @@ button selected { border: 2px 0px 2px 2px; border-radius: 6px; border-color: @border-color; - background-color: @selected-normal-foreground; - text-color: @selected-normal-background; + background-color: @selected; + text-color: @background; } /*****----- Message -----*****/ diff --git a/config/rofi/themes/KooL_style-5.rasi b/config/rofi/themes/KooL_style-5.rasi index 94555ebb..72ec7675 100644 --- a/config/rofi/themes/KooL_style-5.rasi +++ b/config/rofi/themes/KooL_style-5.rasi @@ -26,7 +26,7 @@ configuration { background-alt: @color1; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; text-selected: @background; text-color: @foreground; @@ -140,10 +140,9 @@ button { button selected { background-color: @selected; - text-color: @foreground; + text-color: @background; border: 1px; border-color: transparent; - } /* ---- Listview ---- */ @@ -203,8 +202,8 @@ element normal.active { element-text selected, element selected.normal { - background-color: @active; - text-color: inherit; + background-color: @selected; + text-color: @background; } element selected.urgent { diff --git a/config/rofi/themes/KooL_style-6.rasi b/config/rofi/themes/KooL_style-6.rasi index c0b1eaa6..a25eaa19 100644 --- a/config/rofi/themes/KooL_style-6.rasi +++ b/config/rofi/themes/KooL_style-6.rasi @@ -26,7 +26,7 @@ configuration { background-alt: @color1; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; text-selected: @background; text-color: @foreground; @@ -145,8 +145,8 @@ button { cursor: pointer; } button selected { - background-color: @active; - text-color: @text-selected; + background-color: @selected; + text-color: @background; } @@ -169,23 +169,28 @@ element normal.urgent { text-color: @foreground; } -element-text selected, +/* Separate rules so selected text does not paint a second background */ +element-text selected { + background-color: transparent; + text-color: @background; +} + element normal.active { background-color: @active; text-color: @foreground; } element selected.normal { - background-color: @color11; - text-color: @text-selected; + background-color: @selected; + text-color: @background; } element selected.urgent { - background-color: @urgent; - text-color: @text-selected; + background-color: @selected; + text-color: @background; } element selected.active { - background-color: @urgent; - text-color: @text-selected; + background-color: @selected; + text-color: @background; } // Adapt rofi theme element alternate.normal { diff --git a/config/rofi/themes/KooL_style-7.rasi b/config/rofi/themes/KooL_style-7.rasi index b1a1a9a9..bea2ba47 100644 --- a/config/rofi/themes/KooL_style-7.rasi +++ b/config/rofi/themes/KooL_style-7.rasi @@ -23,10 +23,11 @@ configuration { /*****----- Global Properties -----*****/ * { - background-alt: @color1; + background-alt: @color0; + /* selected uses color12, active uses color11 (match other working styles) */ selected: @color12; active: @color11; - urgent: #8E3596; + urgent: @color13; } /*****----- Main Window -----*****/ @@ -153,8 +154,8 @@ element normal.normal { element-text selected, element selected.normal { border-radius: 30px; - background-color: @color11; - text-color: @foreground; + background-color: @selected; + text-color: @background; } element-icon { padding: 0px; diff --git a/config/rofi/themes/KooL_style-8.rasi b/config/rofi/themes/KooL_style-8.rasi index e0ca3208..a3dea01a 100644 --- a/config/rofi/themes/KooL_style-8.rasi +++ b/config/rofi/themes/KooL_style-8.rasi @@ -23,6 +23,13 @@ configuration { /* ---- Global Properties ---- */ * { + /* Define palette mappings used below */ + selected: @color12; /* accent */ + active: @color11; /* secondary */ + urgent: @color13; /* alerts */ + text-selected: @background; /* readable over accent */ + text-color: @foreground; + border-width: 2px; border-radius: 12px; } @@ -131,8 +138,8 @@ button { } button selected { - background-color: @color12; - text-color: @foreground; + background-color: @selected; + text-color: @background; } /* ---- Scrollbar ---- */ @@ -156,8 +163,8 @@ element { element-text selected, element selected.normal { - background-color: @color11; - text-color: @foreground; + background-color: @selected; + text-color: @background; border-radius: 1.5em; } diff --git a/config/rofi/themes/KooL_style-9.rasi b/config/rofi/themes/KooL_style-9.rasi index 6b1346f6..dc50f941 100644 --- a/config/rofi/themes/KooL_style-9.rasi +++ b/config/rofi/themes/KooL_style-9.rasi @@ -23,7 +23,7 @@ configuration { /*****----- Global Properties -----*****/ * { BG: @background; - BGA: @color11; + BGA: @color12; FG: @foreground; FGA: #F28FADff; BDR: @color12; diff --git a/config/rofi/themes/saint-rofi.rasi b/config/rofi/themes/saint-rofi.rasi index e85c678f..27fdea13 100644 --- a/config/rofi/themes/saint-rofi.rasi +++ b/config/rofi/themes/saint-rofi.rasi @@ -23,7 +23,7 @@ configuration { background-alt: @color1; selected: @color12; active: @color11; - urgent: red; + urgent: @color13; text-selected: @background; text-color: @foreground; border-color: @selected; @@ -143,8 +143,8 @@ element normal.active { } element selected.normal { - background-color: @color11; - text-color: @text-selected; + background-color: @selected; + text-color: @background; } element selected.urgent { background-color: @urgent; diff --git a/config/swappy/config b/config/swappy/config index 45d84e49..ea04ccc2 100644 --- a/config/swappy/config +++ b/config/swappy/config @@ -1,5 +1,5 @@ [Default] -save_dir=$HOME/Pictures/Screenshots +save_dir=$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")/Screenshots save_filename_format=swappy-%Y%m%d-%H%M%S.png show_pannel=false line_size=5 diff --git a/config/swaync/config.json b/config/swaync/config.json index 0aa1af40..a5518596 100755 --- a/config/swaync/config.json +++ b/config/swaync/config.json @@ -51,8 +51,8 @@ "text": "Notification" }, "mpris": { - "image-size": 10, - "image-radius": 0 + "image-size": 96, + "image-radius": 8 }, "volume": { "label": "" diff --git a/config/wallust/templates/colors-ghostty.conf b/config/wallust/templates/colors-ghostty.conf new file mode 100644 index 00000000..abbae8f9 --- /dev/null +++ b/config/wallust/templates/colors-ghostty.conf @@ -0,0 +1,28 @@ +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +# wallust template - colors for Ghostty +# This file is included by ~/.config/ghostty/ghostty.config when present. + +# Core UI colors +foreground = {{foreground}} +background = {{background}} +cursor-color = {{cursor}} +selection-foreground = {{foreground}} +selection-background = {{color12}} + +# 16-color palette +palette = 0={{color0}} +palette = 1={{color1}} +palette = 2={{color2}} +palette = 3={{color3}} +palette = 4={{color4}} +palette = 5={{color5}} +palette = 6={{color6}} +palette = 7={{color7}} +palette = 8={{color8}} +palette = 9={{color9}} +palette = 10={{color10}} +palette = 11={{color11}} +palette = 12={{color12}} +palette = 13={{color13}} +palette = 14={{color14}} +palette = 15={{color15}} diff --git a/config/wallust/templates/colors-rofi.rasi b/config/wallust/templates/colors-rofi.rasi index 68bc8b6b..b839d827 100644 --- a/config/wallust/templates/colors-rofi.rasi +++ b/config/wallust/templates/colors-rofi.rasi @@ -16,12 +16,12 @@ alternate-normal-foreground: {{foreground}}; alternate-urgent-background: {{background}}; alternate-urgent-foreground: {{foreground}}; -selected-active-background: {{color13}}; -selected-active-foreground: {{foreground}}; -selected-normal-background: {{color13}}; -selected-normal-foreground: {{foreground}}; -selected-urgent-background: {{color12}}; -selected-urgent-foreground: {{foreground}}; +selected-active-background: {{color12}}; +selected-active-foreground: {{background}}; +selected-normal-background: {{color12}}; +selected-normal-foreground: {{background}}; +selected-urgent-background: {{color11}}; +selected-urgent-foreground: {{background}}; background-color: {{background}}; background: rgba(0,0,0,0.7); diff --git a/config/wallust/wallust.toml b/config/wallust/wallust.toml index d1f40ab2..7565dd47 100644 --- a/config/wallust/wallust.toml +++ b/config/wallust/wallust.toml @@ -49,6 +49,9 @@ waybar.target = '~/.config/waybar/wallust/colors-waybar.css' kitty.template = 'colors-kitty.conf' kitty.target = '~/.config/kitty/kitty-themes/01-Wallust.conf' +ghostty.template = 'colors-ghostty.conf' +ghostty.target = '~/.config/ghostty/wallust.conf' + quickshell.template = 'qml_color.json' quickshell.target = '~/.config/quickshell/qml_color.json' diff --git a/config/waybar/ModulesCustom b/config/waybar/ModulesCustom index f4c871f7..cb390c0f 100644 --- a/config/waybar/ModulesCustom +++ b/config/waybar/ModulesCustom @@ -90,10 +90,10 @@ }, "custom/keyboard": { - "exec": "cat $HOME/.cache/kb_layout", + "exec": "$HOME/.config/hypr/scripts/KeyboardLayout.sh status", "interval": 1, "format": " {}", - "on-click": "$HOME/.config/hypr/scripts/SwitchKeyboardLayout.sh", + "on-click": "$HOME/.config/hypr/scripts/KeyboardLayout.sh switch", }, "custom/light_dark": { diff --git a/config/waybar/configs/[TOP & BOT] SummitSplit-glass b/config/waybar/configs/[TOP & BOT] SummitSplit-glass new file mode 100644 index 00000000..0c36cc14 --- /dev/null +++ b/config/waybar/configs/[TOP & BOT] SummitSplit-glass @@ -0,0 +1,93 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ + +// ### DUAL TOP and BOTTOM ### // + +[{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "bottom", +"spacing": 3, +"fixed-center": true, +"ipc": true, +"margin-top": 1, +"margin-left": 8, +"margin-right": 8, + +"modules-left": [ + "cpu", + "power-profiles-daemon", + "temperature", + "memory", + "disk", + ], + +"modules-center": [ + "idle_inhibitor", + "clock", + "custom/light_dark", + ], + +"modules-right": [ + "custom/weather", + "battery", + "backlight", + "bluetooth", + "network", + "custom/updater", + "custom/cycle_wall", + "custom/nightlight", + "custom/lock", + ], +}, + +{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "top", +"spacing": 5, +"fixed-center": true, +"ipc": true, +"height": 0, +"margin-left": 8, +"margin-right": 8, +//"gtk-layer-shell": true, +//"margin-bottom": 0, + +"modules-left": [ + "custom/menu", + // "wlr/taskbar", + "hyprland/window", + "mpris", + ], + +"modules-center": [ + "hyprland/workspaces#rw", + ], + +"modules-right": [ + "tray", + "group/notify", + "pulseaudio", + //"wireplumber", + "pulseaudio#microphone", + "custom/power", + ], +}], diff --git a/config/waybar/configs/[TOP] Default Laptop b/config/waybar/configs/[TOP] Default Laptop index 0b264c6b..08a87244 100644 --- a/config/waybar/configs/[TOP] Default Laptop +++ b/config/waybar/configs/[TOP] Default Laptop @@ -26,20 +26,17 @@ "custom/cava_mviz", "custom/separator#blank", "custom/playerctl", - "custom/separator#blank_2", + "custom/separator#blank", "hyprland/window", ], "modules-center": [ - "group/app_drawer", "custom/separator#blank", + "group/app_drawer", "group/notify", - "custom/separator#dot-line", "hyprland/workspaces#rw", "clock", - "custom/separator#dot-line", "custom/weather", - "custom/separator#dot-line", "idle_inhibitor", "custom/hint", ], @@ -47,14 +44,10 @@ "modules-right": [ "tray", "network#speed", - "custom/separator#dot-line", "group/laptop", - "custom/separator#dot-line", "group/mobo_drawer", - "custom/separator#line", "group/audio", - "custom/separator#dot-line", "custom/nightlight", "group/status", ], -}
\ No newline at end of file +} diff --git a/config/waybar/configs/[TOP] Default Laptop (old v5) b/config/waybar/configs/[TOP] Default Laptop (old v5) new file mode 100644 index 00000000..0b264c6b --- /dev/null +++ b/config/waybar/configs/[TOP] Default Laptop (old v5) @@ -0,0 +1,60 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ + +// ### DEFAULT Laptop - Top ### // +{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "top", +"spacing": 3, +"fixed-center": true, +"ipc": true, +"margin-top": 3, +"margin-left": 8, +"margin-right": 8, + +"modules-left": [ + "custom/separator#blank", + "custom/cava_mviz", + "custom/separator#blank", + "custom/playerctl", + "custom/separator#blank_2", + "hyprland/window", + ], + +"modules-center": [ + "group/app_drawer", + "custom/separator#blank", + "group/notify", + "custom/separator#dot-line", + "hyprland/workspaces#rw", + "clock", + "custom/separator#dot-line", + "custom/weather", + "custom/separator#dot-line", + "idle_inhibitor", + "custom/hint", + ], + +"modules-right": [ + "tray", + "network#speed", + "custom/separator#dot-line", + "group/laptop", + "custom/separator#dot-line", + "group/mobo_drawer", + "custom/separator#line", + "group/audio", + "custom/separator#dot-line", + "custom/nightlight", + "group/status", + ], +}
\ No newline at end of file diff --git a/config/waybar/configs/[TOP] Default Laptop-glass b/config/waybar/configs/[TOP] Default Laptop-glass new file mode 100644 index 00000000..2a6db533 --- /dev/null +++ b/config/waybar/configs/[TOP] Default Laptop-glass @@ -0,0 +1,51 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ + +// ### DEFAULT Laptop - Top ### // +{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "top", +"spacing": 3, +"fixed-center": true, +"ipc": true, +"margin-top": 3, +"margin-left": 8, +"margin-right": 8, + +"modules-left": [ + "custom/separator#blank", + "custom/cava_mviz", + "custom/separator#blank", + "custom/playerctl", + "hyprland/window", + ], + +"modules-center": [ + "group/app_drawer", + "custom/separator#blank", + "group/notify", + "hyprland/workspaces#rw", + "clock", + "custom/weather", + "idle_inhibitor", + "custom/hint", + ], + +"modules-right": [ + "tray", + "group/laptop", + "group/mobo_drawer", + "group/audio", + "custom/nightlight", + "group/status", + ], +} diff --git a/config/waybar/configs/[TOP] Everforest-glass b/config/waybar/configs/[TOP] Everforest-glass new file mode 100644 index 00000000..8032f216 --- /dev/null +++ b/config/waybar/configs/[TOP] Everforest-glass @@ -0,0 +1,143 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +/* -- designed by https://github.com/DevNChill */ +// ### Everforest ### // + +{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "top", +//"spacing": 6, +"fixed-center": true, +"ipc": true, +//"margin-top": 3, +//"margin-left": 8, +//"margin-right": 8, + +"modules-left": [ + "custom/arch", + "hyprland/workspaces#rw", +// "mpris", + "group/notify", + "tray", + ], +"modules-center": [ + "clock#forest", + "idle_inhibitor", + ], +"modules-right": [ + "cpu#forest", + "memory#forest", + "temperature#forest", + "disk#forest", + "backlight", + "battery#forest", + "group/audio", + "custom/nightlight", + ], + +// Additional / Edited Waybar Modules // +"custom/arch": { + "format":" ", + "tooltip": false, + "on-click": "rofi -show drun" +}, +"clock#forest": { + "format": "{:L%A %d.%m.%Y - %H:%M}", + "tooltip-format": "<span color='#D3C6AA' size='larger'>{:%Y %B}</span>\n<tt>{calendar}</tt>", + "calendar-weeks-pos": "right", + "today-format": "<span color='#E67E80' weight='ultrabold'>{}</span>", + "format-calendar": "<span color='#D3C6AA' weight='normal'>{}</span>", + "format-calendar-weeks": "<span color='#7FBBB3'><b>W{:%V}</b></span>", + "format-calendar-weekdays": "<span color='#A7C080'><b>{}</b></span>", + "on-scroll": { + "calendar": 1 + } +}, +"battery#forest": { + //"interval": 5, + "align": 0, + "rotate": 0, + //"bat": "BAT1", + //"adapter": "ACAD", + "full-at": 100, + "design-capacity": false, + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "Battery {icon} {capacity}%", + "format-charging": "Battery {capacity}%", + "format-plugged": "Battery {capacity}%", + "format-alt-click": "click", + "format-full": "Battery {icon} Full", + "format-alt": "Battery {icon} {time}", + "format-icons": [ + "", "", "", "", "", "", "", "", "", "", "" + ], + "format-time": "{H}h {M}min", + "tooltip": true, + "tooltip-format": "{timeTo} {power}w", + "on-click-middle": "$HOME/.config/hypr/scripts/ChangeBlur.sh", + "on-click-right": "$HOME/.config/hypr/scripts/Wlogout.sh", +}, + +"cpu#forest": { + "format": "Cpu {usage}%", + "interval": 1, + "min-length": 5, + "format-alt-click": "click", + "format-alt": "{icon0}{icon1}{icon2}{icon3} {usage:>2}% ", + "format-icons": [ + "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" + ], + "on-click-right": "gnome-system-monitor", +}, + +"disk#forest": { + "interval": 30, + //"format": "Disk ", + "path": "/", + //"format-alt-click": "click", + "format": "Disk {used}", + "on-click-right": "baobab", +// "tooltip": true, +// "tooltip-format": "Disk {used} used out of {total} on {path} ({percentage_used}%)", +}, + +"memory#forest": { + "interval": 10, + "format": "Ram {used:0.1f}G", + "format-alt": "Ram {percentage}% ", + "format-alt-click": "click", + "tooltip": true, + "tooltip-format": "Ram {used:0.1f}GB/{total:0.1f}G", + "on-click-right": "kitty --title btop sh -c 'btop'" +}, +"temperature#forest": { + "interval": 10, + "tooltip": true, + "hwmon-path": [ + "/sys/class/hwmon/hwmon1/temp1_input", + "/sys/class/thermal/thermal_zone0/temp" + ], + //"thermal-zone": 0, + "critical-threshold": 82, + "format-critical": "Temp {icon} {temperatureC}°C", + "format": "Temp {icon} {temperatureC}°C", + "format-icons": [ + " " + ], + "on-click-right": "kitty --title nvtop sh -c 'nvtop'" +}, +} + diff --git a/config/waybar/style/Crystal Clear Glass.css b/config/waybar/style/Crystal Clear Glass.css new file mode 100644 index 00000000..3e309abb --- /dev/null +++ b/config/waybar/style/Crystal Clear Glass.css @@ -0,0 +1,245 @@ +/* CRYSTAL CLEAR Glass theme for Waybar */ + +/* SPDX-FileCopyrightText: 2026-present Ahum Maitra theahummaitra@gmail.com +SPDX-License-Identifier: GPL-3.0-or-later */ + +/* +----------------------------------------------------- +General +----------------------------------------------------- +*/ + +* { + background-color: transparent; + font-family: "JetBrainsMono Nerd Font"; + border: none; + font-weight: bolder; + border-radius: 0px; + + /* Extra tweaks */ + min-height: 0; + /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ + font-size: 97%; + font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; + margin-top: 3px; + padding-bottom: 2px; +} + +window#waybar { + background: transparent; +} + +.modules-left { + border-radius: 12px; + border: 1px solid transparent; + opacity: 0.8; + padding-left: 5px; + padding-right: 15px; + margin: 10px; + background-color: rgba(255, 255, 255, 0.25); + box-shadow: inset 1px 2px 2px rgba(255, 255, 255, 0.2); +} + +.modules-right { + border-radius: 12px; + border: 1px solid transparent; + opacity: 0.8; + padding-left: 15px; + margin: 10px; + background-color: rgba(255, 255, 255, 0.25); + box-shadow: inset 1px 2px 2px rgba(255, 255, 255, 0.3); +} + +.modules-center { + border-radius: 12px; + border: 1px solid transparent; + opacity: 0.8; + margin: 10px; + background-color: rgba(255, 255, 255, 0.25); + box-shadow: inset 0px 2px 2px rgba(255, 255, 255, 0.2); +} + +label.module { + font-size: 14px; + margin-left: 8px; + margin-right: 8px; + border-radius: 5px; +} + +label.module { + font-size: 14px; + padding: 3px 10px; + transition: all 0.3s ease-out; + border-radius: 10px; + border: 0px solid transparent; +} + +label.module:hover { +} + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ + +#workspaces { + padding: 5px 3px 5px 3px; + min-width: 176px; + font-weight: 600; +} + +#workspaces button { + border-radius: 3px; + padding: 0px 5px 0px 5px; + margin: 0px 2px 0px 2px; + transition: all 0.3s ease-in-out; + border: 1px solid transparent; +} + +#workspaces button.active { + background-color: rgba(255, 255, 255, 0.35); + + border: 1px solid transparent; + transition: all 0.3s ease-in-out; + min-width: 30px; + border-radius: 8px; + box-shadow: + inset 1px 2px 2px rgba(255, 255, 255, 0.5), + inset 0 1px 1px rgba(255, 255, 255, 0.8); +} + +#workspaces button:hover { + background-color: rgba(255, 255, 255, 0.2); + border-radius: 15px; +} + +/* ----------------------------------------------------- + * Tooltips + * ----------------------------------------------------- */ + +tooltip { + border-radius: 12px; + border: 1px solid transparent; + opacity: 0.7; + margin: 10px; +} + +/* ----------------------------------------------------- + * Window + * ----------------------------------------------------- */ + +#window { + background-color: transparent; + padding-right: 12px; +} + +window#waybar.empty #window { + background-color: transparent; +} + +/* ----------------------------------------------------- + * Taskbar + * ----------------------------------------------------- */ + +#taskbar { + padding: 5px 0px 5px 0px; +} + +#taskbar button { + border-radius: 6px; + padding: 0px 5px 0px 5px; +} + +#custom-updates.yellow { + border-radius: 8px; + margin: 5px 0px 5px 5px; + padding: 0px 6px 0px 6px; +} + +#custom-updates.red { + border-radius: 8px; + margin: 6px 0px 6px 7px; + padding: 0px 6px 0px 6px; +} + +/* ----------------------------------------------------- + * Clock + * ----------------------------------------------------- */ + +#clock { + margin-left: 12px; + margin-right: 12px; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #ffffff; + } +} + +#battery.critical:not(.charging) { + background-color: transparent; +} + +#backlight, +#backlight-slider, +#battery, +#bluetooth, +#clock, +#cpu, +#disk, +#idle_inhibitor, +#keyboard-state, +#memory, +#mode, +#mpris, +#network, +#power-profiles-daemon, +#pulseaudio, +#pulseaudio-slider, +#taskbar button, +#taskbar, +#temperature, +#tray, +#window, +#wireplumber, +#workspaces, +#custom-backlight, +#custom-nightlight, +#custom-browser, +#custom-cava_mviz, +#custom-cycle_wall, +#custom-dot_update, +#custom-file_manager, +#custom-keybinds, +#custom-keyboard, +#custom-light_dark, +#custom-nightlight, +#custom-lock, +#custom-hint, +#custom-hypridle, +#custom-menu, +#custom-playerctl, +#custom-power_vertical, +#custom-power, +#custom-quit, +#custom-reboot, +#custom-settings, +#custom-spotify, +#custom-swaync, +#custom-tty, +#custom-updater, +#custom-hyprpicker, +#custom-weather, +#custom-weather.clearNight, +#custom-weather.cloudyFoggyDay, +#custom-weather.cloudyFoggyNight, +#custom-weather.default, +#custom-weather.rainyDay, +#custom-weather.rainyNight, +#custom-weather.severe, +#custom-weather.showyIcyDay, +#custom-weather.snowyIcyNight, +#custom-weather.sunnyDay { + background-color: transparent; +} diff --git a/config/waybar/style/ML4W Glass-3d.css b/config/waybar/style/ML4W Glass-3d.css new file mode 100644 index 00000000..e54b07cc --- /dev/null +++ b/config/waybar/style/ML4W Glass-3d.css @@ -0,0 +1,327 @@ +/* ML4W GLASS THEME */ + +/* SPDX-FileCopyrightText: 2026-present Ahum Maitra theahummaitra@gmail.com +SPDX-License-Identifier: GPL-3.0-or-later */ + +/* +----------------------------------------------------- +General +----------------------------------------------------- +*/ + +* { + background-color: transparent; + font-family: "JetBrainsMono Nerd Font"; + border: none; + font-weight: bolder; + border-radius: 0px; + + /* Extra tweaks */ + min-height: 0; + /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ + font-size: 97%; + font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; + margin-top: 3px; + padding-bottom: 2px; +} + +@import "style/ML4W/glass.css"; +/* Soft-neutral override: keeps glass gradients but avoids red-dominant palettes */ +@define-color surface @background-alt; +@define-color surface_dim @background; +@define-color primary @foreground; +@define-color on_primary @background; +@define-color on_primary_fixed @background; +@define-color on_primary_fixed_variant @foreground; +@define-color secondary @foreground; +@define-color on_secondary @background; +@define-color on_tertiary_fixed @background; +@define-color on_tertiary_fixed_variant @foreground; +@define-color error @foreground; +@define-color on_error @background; +@define-color accent @color12; /* wallust primary for subtle highlights */ + +window#waybar { + background: transparent; + border: 0; + outline: none; +} + +.modules-left { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + padding-right: 15px; + margin: 10px; + box-shadow: + inset 0 -2px 0 alpha(@accent, 0.45), + inset 1px 2px 2px rgba(255, 255, 255, 0.2); +} + +.modules-right { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + padding-left: 15px; + margin: 10px; + box-shadow: + inset 0 -2px 0 alpha(@accent, 0.45), + inset 1px 2px 2px rgba(255, 255, 255, 0.3); +} + +.modules-center { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + margin: 10px; + box-shadow: + inset 0 -2px 0 alpha(@accent, 0.45), + inset 0px 2px 2px rgba(255, 255, 255, 0.2); +} + +label.module { + font-size: 14px; + margin-left: 8px; + margin-right: 8px; + border-radius: 5px; +} + +label.module { + font-size: 14px; + color: @on_surface; + padding: 3px 10px; + transition: all 0.3s ease-out; + background: + radial-gradient( + circle at 50% 250%, + @on_tertiary_fixed_variant, + @on_tertiary_fixed + ) + padding-box, + linear-gradient(@on_primary_fixed_variant, @on_primary_fixed) border-box; + border-radius: 10px; + border: 0px solid transparent; +} + +label.module:hover { +} + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ + +#workspaces { + padding: 5px 3px 5px 3px; + min-width: 176px; + font-weight: 600; +} + +#workspaces button { + color: @on_surface; + border-radius: 3px; + padding: 0px 5px 0px 5px; + margin: 0px 2px 0px 2px; + transition: all 0.3s ease-in-out; + border: 1px solid transparent; +} + +#workspaces button.active { + background: alpha(@accent, 0.2); + border: 1px solid transparent; + transition: all 0.3s ease-in-out; + min-width: 30px; + border-radius: 8px; + box-shadow: + inset 0 -3px 0 alpha(@accent, 0.8), + inset 1px 2px 2px rgba(255, 255, 255, 0.45), + inset 0 1px 1px rgba(255, 255, 255, 0.7); +} + +#workspaces button:hover { + background: alpha(@secondary, 0.2); + border-radius: 15px; +} + +/* ----------------------------------------------------- + * Tooltips + * ----------------------------------------------------- */ + +tooltip { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient(circle at 50% 250%, @surface, @surface_dim) padding-box, + linear-gradient(#ffffff, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.7; + margin: 10px; +} + +tooltip label { + color: @on_surface; +} + +/* ----------------------------------------------------- + * Window + * ----------------------------------------------------- */ + +#window { + background-color: transparent; + /* Override global margin/padding so the window pill hugs the bar edges */ + margin: 0; + padding: 0; +} + +window#waybar.empty #window { + background-color: transparent; +} + +/* Tighter content padding specifically for the window title */ +#window label { + margin: 0; + padding: 4px 10px; +} + +/* ----------------------------------------------------- + * Taskbar + * ----------------------------------------------------- */ + +#taskbar { + padding: 5px 0px 5px 0px; +} + +#taskbar button { + border-radius: 6px; + padding: 0px 5px 0px 5px; +} + +#taskbar button:hover { + background: @primary; + color: @on_primary; +} + +#custom-updates.yellow { + border-radius: 8px; + margin: 5px 0px 5px 5px; + padding: 0px 6px 0px 6px; + background-color: @secondary; + color: @on_secondary; +} + +#custom-updates.red { + border-radius: 8px; + margin: 6px 0px 6px 7px; + padding: 0px 6px 0px 6px; + background-color: @error; + color: @on_error; +} + +/* ----------------------------------------------------- + * Clock + * ----------------------------------------------------- */ + +#clock { + margin-left: 12px; + margin-right: 12px; +} + +@keyframes blink { + to { + background-color: @background; + color: @on_surface; + } +} + +#battery.critical:not(.charging) { + background-color: transparent; +} + +#backlight, +#backlight-slider, +#battery, +#bluetooth, +#clock, +#cpu, +#disk, +#idle_inhibitor, +#keyboard-state, +#memory, +#mode, +#mpris, +#network, +#power-profiles-daemon, +#pulseaudio, +#pulseaudio-slider, +#taskbar button, +#taskbar, +#temperature, +#tray, +#window, +#wireplumber, +#workspaces, +#custom-backlight, +#custom-nightlight, +#custom-browser, +#custom-cava_mviz, +#custom-cycle_wall, +#custom-dot_update, +#custom-file_manager, +#custom-keybinds, +#custom-keyboard, +#custom-light_dark, +#custom-nightlight, +#custom-lock, +#custom-hint, +#custom-hypridle, +#custom-menu, +#custom-playerctl, +#custom-power_vertical, +#custom-power, +#custom-quit, +#custom-reboot, +#custom-settings, +#custom-spotify, +#custom-swaync, +#custom-tty, +#custom-updater, +#custom-hyprpicker, +#custom-weather, +#custom-weather.clearNight, +#custom-weather.cloudyFoggyDay, +#custom-weather.cloudyFoggyNight, +#custom-weather.default, +#custom-weather.rainyDay, +#custom-weather.rainyNight, +#custom-weather.severe, +#custom-weather.showyIcyDay, +#custom-weather.snowyIcyNight, +#custom-weather.sunnyDay { + background-color: transparent; +} diff --git a/config/waybar/style/ML4W Glass.css b/config/waybar/style/ML4W Glass.css new file mode 100644 index 00000000..3a48d39a --- /dev/null +++ b/config/waybar/style/ML4W Glass.css @@ -0,0 +1,295 @@ +/* ML4W GLASS THEME - CRYSTAL CLEAR */ + +/* SPDX-FileCopyrightText: 2026-present Ahum Maitra theahummaitra@gmail.com +SPDX-License-Identifier: GPL-3.0-or-later */ + +/* +----------------------------------------------------- +General +----------------------------------------------------- +*/ + +* { + background-color: transparent; + font-family: "JetBrainsMono Nerd Font"; + border: none; + font-weight: bolder; + border-radius: 0px; + + /* Extra tweaks */ + min-height: 0; + /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ + font-size: 97%; + font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; + margin-top: 3px; + padding-bottom: 2px; +} + +@import "style/ML4W/glass.css"; + +window#waybar { + background: transparent; +} + +.modules-left { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + padding-right: 15px; + margin: 10px; + box-shadow: inset 1px 2px 2px rgba(255, 255, 255, 0.2); +} + +.modules-right { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + padding-left: 15px; + margin: 10px; + box-shadow: inset 1px 2px 2px rgba(255, 255, 255, 0.3); +} + +.modules-center { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient( + circle at 50% 250%, + alpha(darker(@surface), 0.9), + alpha(@surface_dim, 0.9) + ) + padding-box, + linear-gradient(@primary, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.8; + margin: 10px; + box-shadow: inset 0px 2px 2px rgba(255, 255, 255, 0.2); +} + +label.module { + font-size: 14px; + margin-left: 8px; + margin-right: 8px; + border-radius: 5px; +} + +label.module { + font-size: 14px; + color: @on_surface; + padding: 3px 10px; + transition: all 0.3s ease-out; + background: + radial-gradient( + circle at 50% 250%, + @on_tertiary_fixed_variant, + @on_tertiary_fixed + ) + padding-box, + linear-gradient(@on_primary_fixed_variant, @on_primary_fixed) border-box; + border-radius: 10px; + border: 0px solid transparent; +} + +label.module:hover { +} + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ + +#workspaces { + padding: 5px 3px 5px 3px; + min-width: 176px; + font-weight: 600; +} + +#workspaces button { + color: @on_surface; + border-radius: 3px; + padding: 0px 5px 0px 5px; + margin: 0px 2px 0px 2px; + transition: all 0.3s ease-in-out; + border: 1px solid transparent; +} + +#workspaces button.active { + background: alpha(@primary, 0.2); + border: 1px solid transparent; + transition: all 0.3s ease-in-out; + min-width: 30px; + border-radius: 8px; + box-shadow: + inset 1px 2px 2px rgba(255, 255, 255, 0.5), + inset 0 1px 1px rgba(255, 255, 255, 0.8); +} + +#workspaces button:hover { + background: alpha(@secondary, 0.2); + border-radius: 15px; +} + +/* ----------------------------------------------------- + * Tooltips + * ----------------------------------------------------- */ + +tooltip { + background-color: @surface; + border-radius: 12px; + background: + radial-gradient(circle at 50% 250%, @surface, @surface_dim) padding-box, + linear-gradient(#ffffff, @on_primary) border-box; + border: 1px solid transparent; + opacity: 0.7; + margin: 10px; +} + +tooltip label { + color: @on_surface; +} + +/* ----------------------------------------------------- + * Window + * ----------------------------------------------------- */ + +#window { + background-color: transparent; +} + +window#waybar.empty #window { + background-color: transparent; +} + +/* ----------------------------------------------------- + * Taskbar + * ----------------------------------------------------- */ + +#taskbar { + padding: 5px 0px 5px 0px; +} + +#taskbar button { + border-radius: 6px; + padding: 0px 5px 0px 5px; +} + +#taskbar button:hover { + background: @primary; + color: @on_primary; +} + +#custom-updates.yellow { + border-radius: 8px; + margin: 5px 0px 5px 5px; + padding: 0px 6px 0px 6px; + background-color: @secondary; + color: @on_secondary; +} + +#custom-updates.red { + border-radius: 8px; + margin: 6px 0px 6px 7px; + padding: 0px 6px 0px 6px; + background-color: @error; + color: @on_error; +} + +/* ----------------------------------------------------- + * Clock + * ----------------------------------------------------- */ + +#clock { + margin-left: 12px; + margin-right: 12px; +} + +@keyframes blink { + to { + background-color: @background; + color: @on_surface; + } +} + +#battery.critical:not(.charging) { + background-color: transparent; +} + +#backlight, +#backlight-slider, +#battery, +#bluetooth, +#clock, +#cpu, +#disk, +#idle_inhibitor, +#keyboard-state, +#memory, +#mode, +#mpris, +#network, +#power-profiles-daemon, +#pulseaudio, +#pulseaudio-slider, +#taskbar button, +#taskbar, +#temperature, +#tray, +#window, +#wireplumber, +#workspaces, +#custom-backlight, +#custom-nightlight, +#custom-browser, +#custom-cava_mviz, +#custom-cycle_wall, +#custom-dot_update, +#custom-file_manager, +#custom-keybinds, +#custom-keyboard, +#custom-light_dark, +#custom-nightlight, +#custom-lock, +#custom-hint, +#custom-hypridle, +#custom-menu, +#custom-playerctl, +#custom-power_vertical, +#custom-power, +#custom-quit, +#custom-reboot, +#custom-settings, +#custom-spotify, +#custom-swaync, +#custom-tty, +#custom-updater, +#custom-hyprpicker, +#custom-weather, +#custom-weather.clearNight, +#custom-weather.cloudyFoggyDay, +#custom-weather.cloudyFoggyNight, +#custom-weather.default, +#custom-weather.rainyDay, +#custom-weather.rainyNight, +#custom-weather.severe, +#custom-weather.showyIcyDay, +#custom-weather.snowyIcyNight, +#custom-weather.sunnyDay { + background-color: transparent; +} diff --git a/config/waybar/style/ML4W/glass.css b/config/waybar/style/ML4W/glass.css new file mode 100644 index 00000000..6986a6d1 --- /dev/null +++ b/config/waybar/style/ML4W/glass.css @@ -0,0 +1,52 @@ +/* ML4W Glass theme for Kool's Hyprland */ + +/* SPDX-FileCopyrightText: 2025-present Ahum Maitra theahummaitra@gmail.com + +SPDX-License-Identifier: GPL-3.0-or-later */ + +@import "../../wallust/colors-waybar.css"; + +/* ------------------------- + * Base surfaces + * ------------------------- */ + +@define-color background @background; +@define-color surface @color9; +@define-color surface_dim @color1; + +/* ------------------------- + * Primary colors + * ------------------------- */ + +@define-color primary @color12; +@define-color on_primary @color7; + +@define-color on_primary_fixed @color1; +@define-color on_primary_fixed_variant @color10; + +/* ------------------------- + * Secondary colors + * ------------------------- */ + +@define-color secondary @color14; +@define-color on_secondary @color1; + +/* ------------------------- + * Tertiary (used for module pills) + * ------------------------- */ + +@define-color on_tertiary_fixed @color1; +@define-color on_tertiary_fixed_variant @color11; + +/* ------------------------- + * Text + * ------------------------- */ + +@define-color on_surface @foreground; + +/* ------------------------- + * Error states + * ------------------------- */ + +@define-color error @color9; +@define-color on_error @color7; diff --git a/config/waybar/style/[0 VERTICAL] Golden Noir.css b/config/waybar/style/[0 VERTICAL] Golden Noir.css index c64fedf9..c89aefda 100644 --- a/config/waybar/style/[0 VERTICAL] Golden Noir.css +++ b/config/waybar/style/[0 VERTICAL] Golden Noir.css @@ -118,6 +118,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -126,6 +127,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -173,6 +175,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css b/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css index 3a6084cb..053cb007 100644 --- a/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css +++ b/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css @@ -80,6 +80,7 @@ button.active { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -88,6 +89,7 @@ button.active { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -221,6 +223,7 @@ label:focus { #custom-lock, #custom-light_dark, +#custom-nightlight, #backlight { background-color: #64b6ac; color: #2d353b; @@ -296,10 +299,12 @@ label:focus { #idle_inhibitor { background-color: #2d3436; + border-bottom: 8px solid #7a8c37; } #idle_inhibitor.activated { background-color: #ecf0f1; + border-bottom: 8px solid #7a8c37; color: #2d3436; } diff --git a/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css b/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css index 971dc40f..0aa6fd45 100644 --- a/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css +++ b/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css @@ -90,6 +90,7 @@ tooltip label { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -98,6 +99,7 @@ tooltip label { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -133,6 +135,7 @@ tooltip label { #idle_inhibitor { color: @pink; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #mpris { diff --git a/config/waybar/style/[Black & White] Monochrome.css b/config/waybar/style/[Black & White] Monochrome.css index 700bebfc..e1e08a60 100644 --- a/config/waybar/style/[Black & White] Monochrome.css +++ b/config/waybar/style/[Black & White] Monochrome.css @@ -127,6 +127,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -135,6 +136,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -170,6 +172,7 @@ tooltip label{ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #pulseaudio.muted { diff --git a/config/waybar/style/[Catppuccin] Frappe.css b/config/waybar/style/[Catppuccin] Frappe.css index 82f79678..5ea4884c 100644 --- a/config/waybar/style/[Catppuccin] Frappe.css +++ b/config/waybar/style/[Catppuccin] Frappe.css @@ -91,6 +91,7 @@ window#waybar.hidden { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -99,6 +100,7 @@ window#waybar.hidden { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -135,6 +137,7 @@ window#waybar.hidden { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 3px solid @sapphire; } #backlight { diff --git a/config/waybar/style/[Catppuccin] Latte.css b/config/waybar/style/[Catppuccin] Latte.css index 80608e53..4f7411c6 100644 --- a/config/waybar/style/[Catppuccin] Latte.css +++ b/config/waybar/style/[Catppuccin] Latte.css @@ -90,6 +90,7 @@ window#waybar.hidden { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -98,6 +99,7 @@ window#waybar.hidden { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -134,6 +136,7 @@ window#waybar.hidden { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 3px solid @lavender; } #backlight { diff --git a/config/waybar/style/[Catppuccin] Mocha.css b/config/waybar/style/[Catppuccin] Mocha.css index 67f4efa5..c2b70a2a 100644 --- a/config/waybar/style/[Catppuccin] Mocha.css +++ b/config/waybar/style/[Catppuccin] Mocha.css @@ -113,6 +113,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -121,6 +122,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -156,6 +158,7 @@ window#waybar.empty #window { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #bluetooth, diff --git a/config/waybar/style/[Colored] Chroma Glow.css b/config/waybar/style/[Colored] Chroma Glow.css index 2497d69f..794ca085 100644 --- a/config/waybar/style/[Colored] Chroma Glow.css +++ b/config/waybar/style/[Colored] Chroma Glow.css @@ -114,6 +114,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -122,6 +123,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -214,6 +216,7 @@ label:focus { } #custom-light_dark, +#custom-nightlight, #backlight { color: white; } @@ -281,6 +284,7 @@ label:focus { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #mpd { diff --git a/config/waybar/style/[Colored] Translucent.css b/config/waybar/style/[Colored] Translucent.css index 50803ef7..edac012c 100644 --- a/config/waybar/style/[Colored] Translucent.css +++ b/config/waybar/style/[Colored] Translucent.css @@ -115,6 +115,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -123,6 +124,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -290,13 +292,15 @@ label:focus { #custom-hypridle, #idle_inhibitor { color: #f9e2af; - /*background-color: #2d3436;*/ + /*background-color: #2d3436; + border-bottom: 8px solid rgba(0, 0, 0, 0.2);*/ } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #mpd { diff --git a/config/waybar/style/[Colorful] Aurora Blossom.css b/config/waybar/style/[Colorful] Aurora Blossom.css index dbd405d2..8de9c905 100644 --- a/config/waybar/style/[Colorful] Aurora Blossom.css +++ b/config/waybar/style/[Colorful] Aurora Blossom.css @@ -106,6 +106,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -114,6 +115,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -152,6 +154,7 @@ tooltip label{ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #pulseaudio.muted { diff --git a/config/waybar/style/[Colorful] Aurora.css b/config/waybar/style/[Colorful] Aurora.css index 92c058c6..c5e5fde8 100644 --- a/config/waybar/style/[Colorful] Aurora.css +++ b/config/waybar/style/[Colorful] Aurora.css @@ -95,6 +95,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -103,6 +104,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -159,6 +161,7 @@ tooltip label{ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #pulseaudio.muted { diff --git a/config/waybar/style/[Colorful] Oglo Chicklets.css b/config/waybar/style/[Colorful] Oglo Chicklets.css index b5ac3584..b1910128 100644 --- a/config/waybar/style/[Colorful] Oglo Chicklets.css +++ b/config/waybar/style/[Colorful] Oglo Chicklets.css @@ -80,6 +80,7 @@ button.active { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -88,6 +89,7 @@ button.active { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -221,6 +223,7 @@ label:focus { #custom-lock, #custom-light_dark, +#custom-nightlight, #backlight { background-color: #64b6ac; color: #2d353b; @@ -296,10 +299,12 @@ label:focus { #idle_inhibitor { background-color: #2d3436; + border-bottom: 8px solid #1d2327; } #idle_inhibitor.activated { background-color: #ecf0f1; + border-bottom: 8px solid #7a8c37; color: #2d3436; } diff --git a/config/waybar/style/[Colorful] Rainbow Spectrum.css b/config/waybar/style/[Colorful] Rainbow Spectrum.css index 6ca5906f..4cd9cda8 100644 --- a/config/waybar/style/[Colorful] Rainbow Spectrum.css +++ b/config/waybar/style/[Colorful] Rainbow Spectrum.css @@ -98,6 +98,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -106,6 +107,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -260,15 +262,18 @@ tooltip label{ #custom-power_vertical, #custom-light_dark, +#custom-nightlight, #custom-hypridle, #idle_inhibitor { background-color: #86b4fa; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #bluetooth { diff --git a/config/waybar/style/[Colorful] stolen-style.css b/config/waybar/style/[Colorful] stolen-style.css index c6b3345f..be1a9f61 100644 --- a/config/waybar/style/[Colorful] stolen-style.css +++ b/config/waybar/style/[Colorful] stolen-style.css @@ -51,12 +51,14 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-cycle_wall, #custom-github, #custom-hint, #custom-hyprWindowMode, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-menu, #custom-power, @@ -115,6 +117,7 @@ window#waybar.empty #window { #idle_inhibitor { color: #7aa2f7; + border-bottom: 2px solid #455a64; } #backlight { diff --git a/config/waybar/style/[Dark] Golden Eclipse.css b/config/waybar/style/[Dark] Golden Eclipse.css index af3160a6..cb152b48 100644 --- a/config/waybar/style/[Dark] Golden Eclipse.css +++ b/config/waybar/style/[Dark] Golden Eclipse.css @@ -54,6 +54,7 @@ window#waybar.hidden { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -62,6 +63,7 @@ window#waybar.hidden { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -115,6 +117,7 @@ window#waybar.hidden { #custom-hypridle.notactive, #idle_inhibitor.activated { color: cyan; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Dark] Golden Noir.css b/config/waybar/style/[Dark] Golden Noir.css index 17025266..8664c35e 100644 --- a/config/waybar/style/[Dark] Golden Noir.css +++ b/config/waybar/style/[Dark] Golden Noir.css @@ -118,6 +118,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -126,6 +127,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -173,6 +175,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Dark] Half-Moon.css b/config/waybar/style/[Dark] Half-Moon.css index ab89c048..ba6f78de 100644 --- a/config/waybar/style/[Dark] Half-Moon.css +++ b/config/waybar/style/[Dark] Half-Moon.css @@ -122,6 +122,7 @@ color: #F3F4F5; } #custom-light_dark, +#custom-nightlight, #custom-dot_update, #custom-swaync, #custom-hypridle, @@ -138,6 +139,7 @@ color: #F3F4F5; #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 1px solid rgba(26,27,38,0); } #bluetooth { diff --git a/config/waybar/style/[Dark] Latte-Wallust combined v2.css b/config/waybar/style/[Dark] Latte-Wallust combined v2.css index 46d55346..e8d8f438 100644 --- a/config/waybar/style/[Dark] Latte-Wallust combined v2.css +++ b/config/waybar/style/[Dark] Latte-Wallust combined v2.css @@ -132,6 +132,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -140,6 +141,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -248,12 +250,14 @@ tooltip { #custom-lock, #idle_inhibitor { color: @teal; + border-bottom: 2px solid @border-color; } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 2px solid @border-color; } #clock { diff --git a/config/waybar/style/[Dark] Latte-Wallust combined.css b/config/waybar/style/[Dark] Latte-Wallust combined.css index ea5c08a5..a969c395 100644 --- a/config/waybar/style/[Dark] Latte-Wallust combined.css +++ b/config/waybar/style/[Dark] Latte-Wallust combined.css @@ -137,6 +137,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -145,6 +146,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -253,12 +255,14 @@ tooltip { #custom-lock, #idle_inhibitor { color: @teal; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } diff --git a/config/waybar/style/[Dark] Purpl.css b/config/waybar/style/[Dark] Purpl.css index 5e2ff8aa..090d11ab 100644 --- a/config/waybar/style/[Dark] Purpl.css +++ b/config/waybar/style/[Dark] Purpl.css @@ -122,6 +122,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -130,6 +131,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -177,6 +179,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #taskbar button.active { diff --git a/config/waybar/style/[Dark] Wallust Obsidian Edge.css b/config/waybar/style/[Dark] Wallust Obsidian Edge.css index 94ad7cac..c5e2fd48 100644 --- a/config/waybar/style/[Dark] Wallust Obsidian Edge.css +++ b/config/waybar/style/[Dark] Wallust Obsidian Edge.css @@ -108,6 +108,7 @@ tooltip label { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -116,6 +117,7 @@ tooltip label { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -164,6 +166,7 @@ tooltip label { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Extra] Arrow.css b/config/waybar/style/[Extra] Arrow.css index 9435d226..84d9ead0 100644 --- a/config/waybar/style/[Extra] Arrow.css +++ b/config/waybar/style/[Extra] Arrow.css @@ -84,6 +84,7 @@ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -92,6 +93,7 @@ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, diff --git a/config/waybar/style/[Extra] Crimson.css b/config/waybar/style/[Extra] Crimson.css index cf9e7db2..52441a19 100644 --- a/config/waybar/style/[Extra] Crimson.css +++ b/config/waybar/style/[Extra] Crimson.css @@ -106,6 +106,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -114,6 +115,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -161,6 +163,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Extra] EverForest.css b/config/waybar/style/[Extra] EverForest.css index f0014762..cae9b753 100644 --- a/config/waybar/style/[Extra] EverForest.css +++ b/config/waybar/style/[Extra] EverForest.css @@ -221,12 +221,14 @@ window#waybar.hidden { border-radius: 5px; margin-left: 5px; background-color: @blue; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); color: @black; } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { background-color: @fg; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); color: @bg0; } @@ -286,6 +288,7 @@ window#waybar.hidden { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -294,6 +297,7 @@ window#waybar.hidden { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, diff --git a/config/waybar/style/[Extra] ML4W starter.css b/config/waybar/style/[Extra] ML4W starter.css index 8d651da6..42abcdac 100644 --- a/config/waybar/style/[Extra] ML4W starter.css +++ b/config/waybar/style/[Extra] ML4W starter.css @@ -155,6 +155,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -163,6 +164,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, diff --git a/config/waybar/style/[Extra] Mauve.css b/config/waybar/style/[Extra] Mauve.css index ec24bec7..1c565375 100644 --- a/config/waybar/style/[Extra] Mauve.css +++ b/config/waybar/style/[Extra] Mauve.css @@ -125,6 +125,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -133,6 +134,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -181,6 +183,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Extra] Modern-Combined - Transparent.css b/config/waybar/style/[Extra] Modern-Combined - Transparent.css index c4ff7197..b357ea6c 100644 --- a/config/waybar/style/[Extra] Modern-Combined - Transparent.css +++ b/config/waybar/style/[Extra] Modern-Combined - Transparent.css @@ -139,6 +139,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -147,6 +148,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -243,6 +245,7 @@ tooltip { #custom-lock, #idle_inhibitor { color: @teal; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #custom-weather, @@ -265,6 +268,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #clock { diff --git a/config/waybar/style/[Extra] Modern-Combined.css b/config/waybar/style/[Extra] Modern-Combined.css index dbbddf60..ab32852b 100644 --- a/config/waybar/style/[Extra] Modern-Combined.css +++ b/config/waybar/style/[Extra] Modern-Combined.css @@ -143,6 +143,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cycle_wall, #custom-dot_update, @@ -150,6 +151,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -257,6 +259,7 @@ tooltip { #custom-lock, #idle_inhibitor { color: @teal; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #custom-weather, @@ -279,6 +282,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #clock { diff --git a/config/waybar/style/[Extra] Neon Circuit.css b/config/waybar/style/[Extra] Neon Circuit.css index 7fbb39a5..413021c9 100644 --- a/config/waybar/style/[Extra] Neon Circuit.css +++ b/config/waybar/style/[Extra] Neon Circuit.css @@ -103,6 +103,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -111,6 +112,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, diff --git a/config/waybar/style/[Extra] Prismatic Glow.css b/config/waybar/style/[Extra] Prismatic Glow.css index 8179352d..367d2076 100644 --- a/config/waybar/style/[Extra] Prismatic Glow.css +++ b/config/waybar/style/[Extra] Prismatic Glow.css @@ -150,6 +150,7 @@ window#waybar.empty { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -158,6 +159,7 @@ window#waybar.empty { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, diff --git a/config/waybar/style/[Extra] Rose Pine.css b/config/waybar/style/[Extra] Rose Pine.css index 023b03a2..86b83655 100644 --- a/config/waybar/style/[Extra] Rose Pine.css +++ b/config/waybar/style/[Extra] Rose Pine.css @@ -126,6 +126,7 @@ tooltip { #window, #wireplumber, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -134,6 +135,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -181,6 +183,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 2px; } @keyframes blink { diff --git a/config/waybar/style/[Extra] Simple Pink.css b/config/waybar/style/[Extra] Simple Pink.css index db63a02f..937a1dc2 100644 --- a/config/waybar/style/[Extra] Simple Pink.css +++ b/config/waybar/style/[Extra] Simple Pink.css @@ -118,6 +118,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -126,6 +127,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -174,6 +176,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Light] Monochrome Contrast.css b/config/waybar/style/[Light] Monochrome Contrast.css index 95b34fcc..820d9934 100644 --- a/config/waybar/style/[Light] Monochrome Contrast.css +++ b/config/waybar/style/[Light] Monochrome Contrast.css @@ -107,6 +107,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -115,6 +116,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -153,6 +155,7 @@ tooltip label{ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #pulseaudio.muted { diff --git a/config/waybar/style/[Light] Obsidian Glow.css b/config/waybar/style/[Light] Obsidian Glow.css index 692ce5d5..8de4e888 100644 --- a/config/waybar/style/[Light] Obsidian Glow.css +++ b/config/waybar/style/[Light] Obsidian Glow.css @@ -94,6 +94,7 @@ tooltip label { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -102,6 +103,7 @@ tooltip label { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -150,6 +152,7 @@ tooltip label { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #taskbar button.active { diff --git a/config/waybar/style/[Rainbow] RGB Bordered.css b/config/waybar/style/[Rainbow] RGB Bordered.css index b38ae40d..e3d996d7 100644 --- a/config/waybar/style/[Rainbow] RGB Bordered.css +++ b/config/waybar/style/[Rainbow] RGB Bordered.css @@ -114,6 +114,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -122,6 +123,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -157,6 +159,7 @@ window#waybar.empty #window { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #bluetooth, diff --git a/config/waybar/style/[Retro] Simple Style.css b/config/waybar/style/[Retro] Simple Style.css index 8a601487..6b14e221 100644 --- a/config/waybar/style/[Retro] Simple Style.css +++ b/config/waybar/style/[Retro] Simple Style.css @@ -68,6 +68,7 @@ window#waybar { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -76,6 +77,7 @@ window#waybar { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -135,6 +137,7 @@ window#waybar { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 3px solid yellow; } #battery.critical, diff --git a/config/waybar/style/[Transparent] Crystal Clear.css b/config/waybar/style/[Transparent] Crystal Clear.css index b355c176..6f4ec33f 100644 --- a/config/waybar/style/[Transparent] Crystal Clear.css +++ b/config/waybar/style/[Transparent] Crystal Clear.css @@ -89,6 +89,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -97,6 +98,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -143,6 +145,7 @@ window#waybar.empty #window { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #taskbar button:hover { diff --git a/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css b/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css index d265506c..df1fe00e 100644 --- a/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css +++ b/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css @@ -89,6 +89,7 @@ tooltip label { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -97,6 +98,7 @@ tooltip label { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -132,6 +134,7 @@ tooltip label { #idle_inhibitor { color: @pink; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #mpris { diff --git a/config/waybar/style/[WALLUST] ML4W-modern-mixed.css b/config/waybar/style/[WALLUST] ML4W-modern-mixed.css index f1b64745..ce4faff8 100644 --- a/config/waybar/style/[WALLUST] ML4W-modern-mixed.css +++ b/config/waybar/style/[WALLUST] ML4W-modern-mixed.css @@ -4,14 +4,14 @@ @import '../../.config/waybar/wallust/colors-waybar.css'; @define-color backgroundlight @color12; -@define-color backgrounddark #FFFFFF; +@define-color backgrounddark @background; @define-color workspacesbackground1 @color12; -@define-color workspacesbackground2 #FFFFFF; +@define-color workspacesbackground2 @background; @define-color bordercolor @color11; -@define-color textcolor1 @color12; -@define-color textcolor2 #FFFFFF; -@define-color textcolor3 #FFFFFF; -@define-color iconcolor #FFFFFF; +@define-color textcolor1 @foreground; +@define-color textcolor2 @background; +@define-color textcolor3 @foreground; +@define-color iconcolor @foreground; * { font-family: "JetBrainsMono Nerd Font"; @@ -25,7 +25,7 @@ window#waybar { background-color: rgba(0,0,0,0.8); - border-bottom: 0px solid #ffffff; +border-bottom: 0px solid @foreground; /* color: #FFFFFF; */ background: transparent; transition-property: background-color; @@ -139,6 +139,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -147,6 +148,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -191,6 +193,7 @@ window#waybar.empty #window { font-weight: bold; opacity: 0.8; color: @iconcolor; + border-bottom: 0px solid @foreground; } #idle_inhibitor.activated { @@ -199,6 +202,7 @@ window#waybar.empty #window { font-weight: bold; opacity: 0.8; color: #dc2f2f; + border-bottom: 0px solid @foreground; } #custom-menu { @@ -241,12 +245,12 @@ window#waybar.empty #window { } #custom-updates.yellow { - background-color: #ff9a3c; - color: #FFFFFF; +background-color: @color11; +color: @foreground; } #custom-updates.red { - background-color: #dc2f2f; +background-color: @color13; color: #FFFFFF; } @@ -344,7 +348,7 @@ window#waybar.empty #window { } #battery.critical:not(.charging) { - background-color: #f53c3c; +background-color: @color13; color: @textcolor3; animation-name: blink; animation-duration: 3.0s; diff --git a/config/waybar/style/[WALLUST] ML4W-modern.css b/config/waybar/style/[WALLUST] ML4W-modern.css index 048f972b..437e4e21 100644 --- a/config/waybar/style/[WALLUST] ML4W-modern.css +++ b/config/waybar/style/[WALLUST] ML4W-modern.css @@ -25,7 +25,7 @@ window#waybar { background-color: rgba(0,0,0,0.8); - border-bottom: 0px solid #ffffff; +border-bottom: 0px solid @foreground; /* color: #FFFFFF; */ background: transparent; transition-property: background-color; @@ -146,6 +146,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -154,6 +155,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -195,13 +197,15 @@ window#waybar.empty #window { font-size: 102%; font-weight: bold; color: @iconcolor; + border-bottom: 0px solid @foreground; } #idle_inhibitor.activated { margin-right: 15px; font-size: 100%; font-weight: bold; - color: #dc2f2f; +color: @color13; + border-bottom: 0px solid @foreground; } #custom-menu { @@ -240,12 +244,12 @@ window#waybar.empty #window { } #custom-updates.yellow { - background-color: #ff9a3c; +background-color: @color11; color: #FFFFFF; } #custom-updates.red { - background-color: #dc2f2f; +background-color: @color13; color: #FFFFFF; } @@ -337,7 +341,7 @@ window#waybar.empty #window { } #battery.critical:not(.charging) { - background-color: #f53c3c; +background-color: @color13; color: @textcolor3; animation-name: blink; animation-duration: 3.0s; diff --git a/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css b/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css index 812dbf6f..01ac8069 100644 --- a/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css +++ b/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css @@ -78,6 +78,7 @@ tooltip { #window, #wireplumber, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -86,6 +87,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -129,6 +131,7 @@ tooltip { padding: 0px 2px 0px 6px; } #custom-light_dark, +#custom-nightlight, #custom-menu{ color: @flamingo; padding: 0px 8px 0px 4px; @@ -181,12 +184,14 @@ tooltip { #custom-hypridle, #idle_inhibitor { color: @teal; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #custom-cava_mviz{ diff --git a/config/waybar/style/[Wallust Bordered] Chroma Simple.css b/config/waybar/style/[Wallust Bordered] Chroma Simple.css index 3bf56789..eda7664a 100644 --- a/config/waybar/style/[Wallust Bordered] Chroma Simple.css +++ b/config/waybar/style/[Wallust Bordered] Chroma Simple.css @@ -103,6 +103,7 @@ tooltip { #window, #wireplumber, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -111,6 +112,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -242,6 +244,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.good { diff --git a/config/waybar/style/[Wallust Transparent] Crystal Clear.css b/config/waybar/style/[Wallust Transparent] Crystal Clear.css index cddee7e7..461d4c56 100644 --- a/config/waybar/style/[Wallust Transparent] Crystal Clear.css +++ b/config/waybar/style/[Wallust Transparent] Crystal Clear.css @@ -122,6 +122,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -130,6 +131,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -176,6 +178,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Wallust] Box type.css b/config/waybar/style/[Wallust] Box type.css index 84c85cf6..38ed2a1a 100644 --- a/config/waybar/style/[Wallust] Box type.css +++ b/config/waybar/style/[Wallust] Box type.css @@ -1,83 +1,81 @@ /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ /* Wallust - Box type */ -@import '../../.config/waybar/wallust/colors-waybar.css'; +@import "../../.config/waybar/wallust/colors-waybar.css"; * { -font-family: "JetBrainsMono Nerd Font"; -font-weight: bold; -min-height: 0; -/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ -font-size: 97%; -font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + min-height: 0; + /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ + font-size: 97%; + font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } - window#waybar { - background: transparent; + background: transparent; } window#waybar.hidden { - opacity: 0.2; + opacity: 0.2; } - window#waybar.empty, window#waybar.empty #window { - background-color: transparent; - padding: 0px; - border: 0px; + background-color: transparent; + padding: 0px; + border: 0px; } #window { - padding-left: 10px; - padding-right: 10px; - border-radius: 10px; - transition: none; - color: transparent; - background: transparent; + padding-left: 10px; + padding-right: 10px; + border-radius: 10px; + transition: none; + color: transparent; + background: transparent; } #taskbar button, #workspaces button { - color: @foreground; - box-shadow: none; - text-shadow: none; - padding: 0px; - border-radius: 9px; - padding-left: 4px; - padding-right: 4px; - animation: gradient_f 20s ease-in infinite; - transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682); + color: @foreground; + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: 9px; + padding-left: 4px; + padding-right: 4px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682); } #taskbar button.active, #workspaces button.active { - color: @color12; - background-color: @foreground; - padding-left: 4px; - padding-right: 8px; - animation: gradient_f 20s ease-in infinite; - transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); + color: @color12; + background-color: @foreground; + padding-left: 4px; + padding-right: 8px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682); } #taskbar button.focused, #workspaces button.focused { - color: @color4; + color: @color4; } #workspaces button.urgent { - color: #11111b; - border-radius: 10px; + color: #11111b; + border-radius: 10px; } #taskbar button:hover, #workspaces button:hover { - color: @color4; - padding-left: 2px; - padding-right: 8px; - animation: gradient_f 20s ease-in infinite; - transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); + color: @color4; + padding-left: 2px; + padding-right: 8px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682); } #backlight, @@ -95,7 +93,7 @@ window#waybar.empty #window { #network, #power-profiles-daemon, #pulseaudio, -#pulseaudio-slider, +#pulseaudio-slider, #taskbar, #temperature, #tray, @@ -103,6 +101,7 @@ window#waybar.empty #window { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -111,6 +110,7 @@ window#waybar.empty #window { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -130,91 +130,94 @@ window#waybar.empty #window { #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, -#custom-weather.default, +#custom-weather.default, #custom-weather.rainyDay, #custom-weather.rainyNight, #custom-weather.severe, #custom-weather.showyIcyDay, #custom-weather.snowyIcyNight, -#custom-weather.sunnyDay{ - padding-top: 4px; - padding-bottom: 4px; - padding-left: 8px; - padding-right: 10px; - border-radius: 10px; - transition: none; - color: @foreground; - background: @color0; - border-bottom-width: 5px; - border-bottom-color: @color12; - border-bottom-style: solid; +#custom-weather.sunnyDay { + padding-top: 4px; + padding-bottom: 4px; + padding-left: 8px; + padding-right: 10px; + border-radius: 10px; + transition: none; + color: @foreground; + background: @color0; + border-bottom-width: 5px; + border-bottom-color: @color12; + border-bottom-style: solid; } #custom-power { - padding-right: 2px; + padding-right: 2px; } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { - color: #39FF14; + color: #39ff14; + border-bottom-width: 5px; + border-bottom-color: @color12; + border-bottom-style: solid; } #network { - padding-right: 12px; + padding-right: 12px; } #temperature.critical { - background-color: red; - color: black; + background-color: red; + color: black; } #mpris { - padding-right: 2px; - padding-left: 8px; + padding-right: 2px; + padding-left: 8px; } #backlight { - padding-right: 2px; + padding-right: 2px; } #battery.critical:not(.charging) { - background-color: #ffffff; - color: #000000; - animation-name: blink; - animation-duration: 3.0s; - animation-timing-function: steps(12); - animation-iteration-count: infinite; - animation-direction: alternate; - border-bottom-width: 5px; - border-bottom-color: @color12; - border-bottom-style: solid; + background-color: #ffffff; + color: #000000; + animation-name: blink; + animation-duration: 3s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; + border-bottom-width: 5px; + border-bottom-color: @color12; + border-bottom-style: solid; } @keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } + to { + background-color: #ffffff; + color: #000000; + } } #backlight-slider slider, #pulseaudio-slider slider { - min-width: 0px; - min-height: 0px; - opacity: 10; - background-image: none; - border: none; - box-shadow: @color12; + min-width: 0px; + min-height: 0px; + opacity: 10; + background-image: none; + border: none; + box-shadow: @color12; } #backlight-slider trough, #pulseaudio-slider trough { - min-width: 80px; - min-height: 5px; - border-radius: 5px; + min-width: 80px; + min-height: 5px; + border-radius: 5px; } #backlight-slider highlight, #pulseaudio-slider highlight { - min-height: 10px; - border-radius: 5px; + min-height: 10px; + border-radius: 5px; } diff --git a/config/waybar/style/[Wallust] Chroma Edge.css b/config/waybar/style/[Wallust] Chroma Edge.css index 3530c3af..719c89c9 100644 --- a/config/waybar/style/[Wallust] Chroma Edge.css +++ b/config/waybar/style/[Wallust] Chroma Edge.css @@ -106,6 +106,7 @@ tooltip label{ #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -114,6 +115,7 @@ tooltip label{ #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -322,13 +324,15 @@ label:focus { } #idle_inhibitor { - /*background-color: #2d3436;*/ + /*background-color: #2d3436; + border-bottom: 8px solid rgba(0, 0, 0, 0.2);*/ } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #temperature { diff --git a/config/waybar/style/[Wallust] Chroma Fusion.css b/config/waybar/style/[Wallust] Chroma Fusion.css index d740c78f..6830d55b 100644 --- a/config/waybar/style/[Wallust] Chroma Fusion.css +++ b/config/waybar/style/[Wallust] Chroma Fusion.css @@ -79,6 +79,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -87,6 +88,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -131,6 +133,7 @@ tooltip { opacity:1.0; } #custom-light_dark, +#custom-nightlight, #custom-menu{ color: @flamingo; padding: 0px 8px 0px 4px; @@ -183,12 +186,14 @@ tooltip { #custom-hypridle, #idle_inhibitor { color: @teal; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #workspaces { diff --git a/config/waybar/style/[Wallust] Chroma Tally V2.css b/config/waybar/style/[Wallust] Chroma Tally V2.css index 8082331b..305dcc4e 100644 --- a/config/waybar/style/[Wallust] Chroma Tally V2.css +++ b/config/waybar/style/[Wallust] Chroma Tally V2.css @@ -91,6 +91,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -99,6 +100,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -199,6 +201,7 @@ tooltip { } #custom-light_dark, +#custom-nightlight, #temperature { color: @color6; /* Lighter */ } @@ -211,12 +214,14 @@ tooltip { #custom-hypridle, #idle_inhibitor { color: @color5; /* Lighter */ + border-bottom: 2px; } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: @color4; /* Slightly lighter */ + border-bottom: 2px; } #tray { diff --git a/config/waybar/style/[Wallust] Chroma Tally.css b/config/waybar/style/[Wallust] Chroma Tally.css index a6fd1ee9..3a7679d2 100644 --- a/config/waybar/style/[Wallust] Chroma Tally.css +++ b/config/waybar/style/[Wallust] Chroma Tally.css @@ -90,6 +90,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -98,6 +99,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -202,6 +204,7 @@ tooltip { } #custom-light_dark, +#custom-nightlight, #temperature { color: #7287fd; } @@ -214,12 +217,14 @@ tooltip { #custom-hypridle, #idle_inhibitor { color: #ebcb8b; + border-bottom: 2px; } /*-----Indicators----*/ #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 2px; } #tray { diff --git a/config/waybar/style/[Wallust] Colored.css b/config/waybar/style/[Wallust] Colored.css index 435f3651..c95429da 100644 --- a/config/waybar/style/[Wallust] Colored.css +++ b/config/waybar/style/[Wallust] Colored.css @@ -131,6 +131,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -139,6 +140,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -186,6 +188,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #battery.critical:not(.charging) { diff --git a/config/waybar/style/[Wallust] Simple.css b/config/waybar/style/[Wallust] Simple.css index c2206c10..0eec7ba7 100644 --- a/config/waybar/style/[Wallust] Simple.css +++ b/config/waybar/style/[Wallust] Simple.css @@ -110,6 +110,7 @@ tooltip { #wireplumber, #workspaces, #custom-backlight, +#custom-nightlight, #custom-browser, #custom-cava_mviz, #custom-cycle_wall, @@ -118,6 +119,7 @@ tooltip { #custom-keybinds, #custom-keyboard, #custom-light_dark, +#custom-nightlight, #custom-lock, #custom-hint, #custom-hypridle, @@ -164,6 +166,7 @@ tooltip { #custom-hypridle.notactive, #idle_inhibitor.activated { color: #39FF14; + border-bottom: 8px solid rgba(0, 0, 0, 0.2); } #pulseaudio.muted { diff --git a/config/waybar/wallust/colors-waybar.css b/config/waybar/wallust/colors-waybar.css index b2afbce4..8a470b1a 100644 --- a/config/waybar/wallust/colors-waybar.css +++ b/config/waybar/wallust/colors-waybar.css @@ -1,11 +1,11 @@ -/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ /* wallust template - colors-waybar */ @define-color foreground #F9E3DF; @define-color background #151316; @define-color background-alt rgba(21,19,22,0.25); @define-color cursor #F9E3DF; - + @define-color color0 #3D3A3E; @define-color color1 #190E1E; @define-color color2 #191F64; @@ -21,4 +21,4 @@ @define-color color12 #7F4EA2; @define-color color13 #A0536C; @define-color color14 #EDAEA4; - @define-color color15 #EECEC9;
\ No newline at end of file + @define-color color15 #EECEC9; diff --git a/config/wezterm/wezterm.lua b/config/wezterm/wezterm.lua new file mode 100644 index 00000000..8740cbcf --- /dev/null +++ b/config/wezterm/wezterm.lua @@ -0,0 +1,115 @@ +-- Config from Drew @justaguylinux small mods + +local wezterm = require("wezterm") + +local config = wezterm.config_builder() + +config.enable_wayland = true + +-- Enable if starship prompt won't start +-- config.default_prog = { "/usr/bin/env zsh" } + +-- General appearance and visuals +config.hide_tab_bar_if_only_one_tab = true +-- Set primary font with fallbacks + +config.font = wezterm.font_with_fallback({ + { family = "Fira Code", weight = 250, stretch = "Normal", style = "Normal" }, -- Thin variant + "Fira Code", + "JetBrains Mono", + "Hack", +}) + +-- Previous font config +-- font = wezterm.font("Maple Mono NF") +font_size = 14 + +config.colors = { + tab_bar = { + + active_tab = { + bg_color = "#80bfff", -- col_gray2 (selected tab in bright blue) + fg_color = "#00141d", -- contrast text on active tab + }, + + inactive_tab = { + bg_color = "#1a1a1a", -- col_gray4 (dark background for inactive tabs) + fg_color = "#FFFFFF", -- col_gray3 (white text on inactive tabs) + }, + + new_tab = { + bg_color = "#1a1a1a", -- same as inactive + fg_color = "#4fc3f7", -- col_barbie (for the "+" button) + }, + }, +} + +config.window_background_opacity = 1.0 +-- config.color_scheme = "nightfox" +-- config.color_scheme = 'AdventureTime' +-- config.color_scheme = 'Advark Blue' +config.color_scheme = "Catppuccin Mocha" +-- config.color_scheme = 'Dracula' +config.font_size = 12 +config.font = wezterm.font("FiraCode", { weight = "Regular", italic = false }) + +config.window_padding = { + left = 10, + right = 10, + top = 10, + bottom = 10, +} + +config.use_fancy_tab_bar = true +config.window_frame = { + -- font = wezterm.font({ family = "FiraCode Nerd Font Mono", weight = "Regular" }), + font = wezterm.font({ family = "JetBrainsMono Nerd Font Mono", weight = "Regular" }), +} + +config.default_cursor_style = "BlinkingUnderline" +config.cursor_blink_rate = 500 +config.term = "xterm-256color" +config.bold_brightens_ansi_colors = false +config.max_fps = 120 +config.animation_fps = 30 + +-- Keybindings using ALT for tabs & splits +config.keys = { + -- Tab management + { key = "t", mods = "ALT", action = wezterm.action.SpawnTab("CurrentPaneDomain") }, + { key = "w", mods = "ALT", action = wezterm.action.CloseCurrentTab({ confirm = false }) }, + { key = "n", mods = "ALT", action = wezterm.action.ActivateTabRelative(1) }, + { key = "p", mods = "ALT", action = wezterm.action.ActivateTabRelative(-1) }, + + -- Pane management + { key = "v", mods = "ALT", action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }) }, + { key = "h", mods = "ALT", action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, + { key = "q", mods = "ALT", action = wezterm.action.CloseCurrentPane({ confirm = false }) }, + + -- Pane navigation (move between panes with ALT + Arrows) + { key = "LeftArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Left") }, + { key = "RightArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Right") }, + { key = "UpArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Up") }, + { key = "DownArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Down") }, +} + +-- Disable missing glyph warnings, since we have fallback fonts now +config.warn_about_missing_glyphs = false + +-- function for nvidia_gpu +local function is_nvidia_gpu() + local handle = io.popen("lspci | grep -i nvidia") + local result = handle:read("*a") + handle:close() + return result ~= "" +end + +-- NVIDIA optimization settings +-- config.enable_wayland = not is_nvidia_gpu() -- Disable Wayland if NVIDIA GPU is detected +-- config.front_end = "OpenGL" -- More stable than WebGPU with NVIDIA +-- config.webgpu_power_preference = "HighPerformance" +-- config.prefer_egl = true +-- config.freetype_load_target = "Light" +-- config.freetype_render_target = "HorizontalLcd" + +return config |
