Compare commits

...

3 Commits

Author SHA1 Message Date
5e55b51220 fixes waybar, adds cursors, fixes some hyprland stuff 2026-02-15 21:03:00 +01:00
73d6ca5bec fixes waybar, adds cursors 2026-01-22 21:23:27 +01:00
8a6e480d58 fixes cava in waybar 2026-01-22 14:15:32 +01:00
17 changed files with 398 additions and 176 deletions

View File

@@ -1,19 +1,19 @@
$wallpaper = /usr/share/wallpapers/downloaded/pexels-jplenio-1102912.jpg $wallpaper = /usr/share/wallpapers/downloaded/pexels-8kspain-21564213.jpg
$background = rgb(0E0E11) $background = rgb(252425)
$foreground = rgb(FDF2DE) $foreground = rgb(F9F1D9)
$color0 = rgb(38393C) $color0 = rgb(505051)
$color1 = rgb(424652) $color1 = rgb(9C604E)
$color2 = rgb(6A3E40) $color2 = rgb(807A52)
$color3 = rgb(736956) $color3 = rgb(908BAB)
$color4 = rgb(897C88) $color4 = rgb(B7815F)
$color5 = rgb(9B8166) $color5 = rgb(B9BECA)
$color6 = rgb(F9D9A2) $color6 = rgb(EED793)
$color7 = rgb(F4E4C8) $color7 = rgb(EEE3C1)
$color8 = rgb(AA9F8C) $color8 = rgb(A79F87)
$color9 = rgb(424652) $color9 = rgb(9C604E)
$color10 = rgb(6A3E40) $color10 = rgb(807A52)
$color11 = rgb(736956) $color11 = rgb(908BAB)
$color12 = rgb(897C88) $color12 = rgb(B7815F)
$color13 = rgb(9B8166) $color13 = rgb(B9BECA)
$color14 = rgb(F9D9A2) $color14 = rgb(EED793)
$color15 = rgb(F4E4C8) $color15 = rgb(EEE3C1)

View File

@@ -2,9 +2,11 @@
# ┃ Enviroment Configuration ┃ # ┃ Enviroment Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ # ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
envd = HYPRCURSOR_SIZE,24 envd = HYPRCURSOR_THEME,vimix-kanagawa-hyprcursors-lotus
envd = XCURSOR_SIZE,24 envd = HYPRCURSOR_SIZE,34
envd = QT_CURSOR_SIZE,24 env = XCURSOR_THEME,vimix-kanagawa-hyprcursors-lotus
envd = XCURSOR_SIZE,34
envd = QT_CURSOR_SIZE,34
# Force electron apps to use wayland # Force electron apps to use wayland
env = ELECTRON_OZONE_PLATFORM_HINT,wayland env = ELECTRON_OZONE_PLATFORM_HINT,wayland

View File

@@ -163,15 +163,13 @@ binds {
# Toggle Waybar # Toggle Waybar
bind = $mainMod, W, exec, killall -SIGUSR1 waybar bind = $mainMod, W, exec, killall -SIGUSR1 waybar
bind = $mainMod SHIFT, W, exec, killall -SIGUSR2 waybar # restart
# ======= Monitors ======= # ======= Monitors =======
# Toggle Monitor Flip # Toggle Monitor Flip
bind = $mainMod, F7, exec, ~/.config/hypr/scripts/rotate_current_screen.sh bind = $mainMod, F7, exec, ~/.config/hypr/scripts/rotate_current_screen.sh
# One-key flip: externals on/off
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh toggle-externals bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh toggle-externals
# bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh laptop
# Explicit profiles
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh laptop
bind = $mainMod, F9, exec, ~/.config/hypr/scripts/monitor-toggle.sh dual bind = $mainMod, F9, exec, ~/.config/hypr/scripts/monitor-toggle.sh dual
bind = $mainMod, F10, exec, ~/.config/hypr/scripts/monitor-toggle.sh triple bind = $mainMod, F10, exec, ~/.config/hypr/scripts/monitor-toggle.sh triple

View File

@@ -4,13 +4,11 @@
# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/ # Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/
monitor = desc:BOE NE156FHM-NX6, highres@highrr, 0x0, 1, vrr, 1 monitor = eDP-2, highres@highrr, 0x0, 1, vrr, 1
# monitor = DP-2, highres@highrr, auto-left, 1, vrr, 0
monitor = HDMI-A-1, highres@highrr, auto-right, 1, transform, 1 #monitor = HDMI-A-1, highres@highrr, auto-right, 1, transform, 1
monitor = desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1
monitor = desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1 monitor = desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1
#monitor = desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1 monitor = desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1
# monitor = HDMI-A-1, highres@highrr, auto-right, 1, vrr, 0 # monitor = HDMI-A-1, highres@highrr, auto-right, 1, vrr, 0

View File

@@ -55,7 +55,7 @@ misc {
enable_swallow = true enable_swallow = true
swallow_regex = ^(cachy-browser|firefox|nautilus|nemo|thunar|btrfs-assistant.)$ swallow_regex = ^(cachy-browser|firefox|nautilus|nemo|thunar|btrfs-assistant.)$
focus_on_activate = true focus_on_activate = true
vrr = 2 vrr = 0
# Hypridle cmatrix fix: # Hypridle cmatrix fix:
session_lock_xray = true session_lock_xray = true
middle_click_paste = false middle_click_paste = false

View File

@@ -273,6 +273,15 @@ windowrule {
match:title = ^(Citation Dialog)$ match:title = ^(Citation Dialog)$
} }
windowrule {
name = libreoffice-opaque
match:class = ^(libreoffice.*)$
# active, inactive, fullscreen (all forced to 1.0)
opacity = 1.0 override 1.0 override 1.0 override
}
# gnome calendar # gnome calendar
windowrule { windowrule {
name = windowrule-cal name = windowrule-cal
@@ -290,3 +299,17 @@ windowrule {
float = on float = on
center = on center = on
} }
windowrule {
name = calcure
match:title = ^(calcure)$
float = on
center = on
}
windowrule {
name = gnome-calculator-fix
match:class = ^(org.gnome.Calculator)$
float = on
center = on
}

View File

@@ -6,7 +6,9 @@ workspace = 1, monitor:eDP-2
workspace = 2, monitor:eDP-2 workspace = 2, monitor:eDP-2
workspace = 3, monitor:eDP-2 workspace = 3, monitor:eDP-2
workspace = 4, monitor:eDP-2 workspace = 4, monitor:eDP-2
workspace = 5, monitor:eDP-2
workspace = 6, monitor:eDP-2
workspace = 7, monitor:eDP-2
workspace = 7, monitor:desc:Samsung Electric Company S24F350 H4ZR302705
workspace = 8, monitor:DP-2 workspace = 8, monitor:DP-2
workspace = 9, monitor:HDMI-A-1 workspace = 9, monitor:HDMI-A-1

View File

@@ -5,20 +5,20 @@ general {
} }
listener { listener {
timeout = 150 # 2.5min. timeout = 7200 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore. on-resume = brightnessctl -r # monitor backlight restore.
} }
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. # turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener { listener {
timeout = 150 # 2.5min. timeout = 7200 # 2.5min.
on-timeout = brightnessctl -sd asus::kbd_backlight set 0 # turn off keyboard backlight. on-timeout = brightnessctl -sd asus::kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd asus::kbd_backlight # turn on keyboard backlight. on-resume = brightnessctl -rd asus::kbd_backlight # turn on keyboard backlight.
} }
listener { listener {
timeout = 300 # 5min timeout = 7200 # 5min
on-timeout = ~/.config/swaylock/lockscript.sh # lock screen when timeout has passed on-timeout = ~/.config/swaylock/lockscript.sh # lock screen when timeout has passed
} }

View File

@@ -17,6 +17,7 @@ source = ~/.config/hypr/config/monitor.conf
source = ~/.config/hypr/config/variables.conf source = ~/.config/hypr/config/variables.conf
source = ~/.config/hypr/config/windowrules.conf source = ~/.config/hypr/config/windowrules.conf
source = ~/.config/hypr/config/workspaces.conf source = ~/.config/hypr/config/workspaces.conf
source = ~/.config/hypr/config/plugins.conf
# Modifying these configs can be done by creating a user defined config in the home directory, e.g. # Modifying these configs can be done by creating a user defined config in the home directory, e.g.
## ~/.config/hypr/config/user-config.conf ## ~/.config/hypr/config/user-config.conf

View File

@@ -0,0 +1,6 @@
# Generated by nwg-displays on 2026-02-04 at 14:45:07. Do not edit manually.
monitor=desc:BOE NE156FHM-NX6,1920x1080@144.0,0x0,1.0
monitor=desc:Samsung Electric Company S24F350 H4ZK111233,1920x1080@60.0,1920x0,1.0
monitor=desc:Samsung Electric Company S24F350 H4ZK111233,transform,1
monitor=desc:Samsung Electric Company S24F350 H4ZR302705,1920x1080@60.0,3000x0,1.0

View File

@@ -1,26 +1,25 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Quick display control for Hyprland
# Profiles:
# laptop -> keep eDP-2, disable all externals
# dual -> eDP-2 + primary external
# triple -> eDP-2 + both externals
# Toggles:
# toggle-externals -> if any external enabled => laptop; else => triple (or dual if only one preset)
# dpms-toggle-focused -> blank/unblank the currently focused monitor (does NOT change layout)
set -euo pipefail set -euo pipefail
PRIMARY="eDP-2" PRIMARY="eDP-2"
RIGHT_EXTERNAL_NAME="DP-2"
MIDDLE_EXTERNAL_NAME="HDMI-A-1"
# --- exact enable lines (copy from hyprland.conf) --- # Exact enable lines (from your config)
EXT1='desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1' EXT1='desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1'
EXT2='desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1' EXT2='desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1'
# Optional fallback by connector (harmless if not present)
EXT_FALLBACK='HDMI-A-1, highres@highrr, auto-right, 1'
# Which external is the "main" one you prefer for Dual: # In dual mode, which one do we prefer?
DUAL_MAIN="$EXT1" DUAL_MAIN="$EXT1"
# Optional: restart Waybar after layout changes (0=off, 1=on)
RESTART_WAYBAR=1
# Dock/MST settle timing (tune if needed)
SETTLE_SECS=1.0
DPMS_KICK_RETRIES=2
DPMS_KICK_SLEEP=0.35
notify() { notify() {
if command -v notify-send >/dev/null 2>&1; then if command -v notify-send >/dev/null 2>&1; then
notify-send -a "Hyprland" "$1" "${2:-}" notify-send -a "Hyprland" "$1" "${2:-}"
@@ -35,62 +34,182 @@ hypr() {
notify "hyprctl failed" "$out" notify "hyprctl failed" "$out"
exit 1 exit 1
fi fi
printf '%s' "$out"
} }
jqok(){ command -v jq >/dev/null; } hypr_batch() {
local out
if ! out="$(hyprctl --batch "$1" 2>&1)"; then
notify "hyprctl --batch failed" "$out"
exit 1
fi
printf '%s' "$out"
}
restart_waybar() {
[ "${RESTART_WAYBAR:-0}" -eq 1 ] || return 0
if pgrep -x waybar >/dev/null 2>&1; then
pkill -SIGUSR2 waybar >/dev/null 2>&1 || true
fi
}
jqok() { command -v jq >/dev/null 2>&1; }
monjson() { hyprctl -j monitors 2>/dev/null || true; } monjson() { hyprctl -j monitors 2>/dev/null || true; }
any_external_enabled() { sleep_s() { python - <<PY 2>/dev/null || sleep 1
import time
time.sleep(float("$1"))
PY
}
# --- monitor discovery helpers ---
enabled_monitor_names() {
if jqok; then if jqok; then
monjson | jq -e --arg P "$PRIMARY" '.[] | select(.name!=$P and (.disabled!=true))' >/dev/null monjson | jq -r '.[] | select(.disabled != true) | .name'
else else
hyprctl monitors | awk -v P="$PRIMARY" '/^Monitor /{gsub(/^Monitor[ \t]+/, "", $0); split($0,a," "); if (a[1]!=P){print; exit 0}}' | grep -q . # Fallback is weaker; jq is strongly recommended
hyprctl monitors | awk '
/^Monitor /{name=$2}
/disabled: false/{print name}
'
fi fi
} }
disable_all_externals() { focused_monitor_name() {
if jqok; then if jqok; then
mapfile -t names < <(monjson | jq -r --arg P "$PRIMARY" '.[] | select(.name!=$P) | .name') monjson | jq -r '.[] | select(.focused==true) | .name // empty'
else else
mapfile -t names < <(hyprctl monitors | awk -v P="$PRIMARY" '/^Monitor /{gsub(/^Monitor[ \t]+/, "", $0); split($0,a," "); if (a[1]!=P) print a[1]}') hyprctl monitors | awk '
/^Monitor /{name=$2}
/focused: yes/{print name; exit}
'
fi fi
for n in "${names[@]:-}"; do }
hypr keyword monitor "$n, disable"
external_enabled() {
local n
while IFS= read -r n; do
[ "$n" != "$PRIMARY" ] && return 0
done < <(enabled_monitor_names)
return 1
}
# We dont try to parse desc lines; we just treat them as “enable rules”
enable_rule() {
local rule="$1"
[ -n "$rule" ] && printf 'keyword monitor %s; ' "$rule"
}
disable_by_name() {
local name="$1"
[ -n "$name" ] && printf 'keyword monitor %s, disable; ' "$name"
}
# Disable all *currently enabled* externals by name (minimal churn)
batch_disable_enabled_externals() {
local batch="" n=""
while IFS= read -r n; do
[ "$n" = "$PRIMARY" ] && continue
batch+="$(disable_by_name "$n")"
done < <(enabled_monitor_names)
printf '%s' "$batch"
}
# Dock settle wait: give MST/alt-mode time to re-enumerate before we apply rules / kick DPMS
dock_settle() {
sleep_s "$SETTLE_SECS"
}
# DPMS kick for all enabled externals (works well for dock hotplug weirdness)
kick_externals() {
local names=() n=""
if jqok; then
mapfile -t names < <(monjson | jq -r --arg P "$PRIMARY" '
.[] | select(.name != $P and (.disabled != true)) | .name
')
else
mapfile -t names < <(enabled_monitor_names | awk -v P="$PRIMARY" '$0!=P')
fi
[ "${#names[@]}" -eq 0 ] && return 0
for _ in $(seq 1 "$DPMS_KICK_RETRIES"); do
for n in "${names[@]}"; do hypr dispatch dpms off "$n" >/dev/null 2>&1 || true; done
sleep_s "$DPMS_KICK_SLEEP"
for n in "${names[@]}"; do hypr dispatch dpms on "$n" >/dev/null 2>&1 || true; done
sleep_s "$DPMS_KICK_SLEEP"
done done
} }
enable_line() { enforce_triple_order() {
local line="$1" # Keep HDMI between the laptop panel and DP-2, with DP-2 always on the right.
[ -n "$line" ] && hypr keyword monitor "$line" enabled_monitor_names | grep -qx "$MIDDLE_EXTERNAL_NAME" || return 0
enabled_monitor_names | grep -qx "$RIGHT_EXTERNAL_NAME" || return 0
local py=0 px=0 pspan=1920 mspan=1920 mx rx
if jqok; then
read -r px py pspan < <(monjson | jq -r --arg N "$PRIMARY" '
.[] | select(.name == $N) |
(.transform // 0) as $t |
"\(.x // 0) \(.y // 0) \(if (($t % 2) == 1) then (.height // 1080) else (.width // 1920) end)"
')
read -r mspan < <(monjson | jq -r --arg N "$MIDDLE_EXTERNAL_NAME" '
.[] | select(.name == $N) |
(.transform // 0) as $t |
"\(if (($t % 2) == 1) then (.height // 1080) else (.width // 1920) end)"
')
fi
mx=$((px + pspan))
rx=$((mx + mspan))
hypr keyword monitor "$MIDDLE_EXTERNAL_NAME, highres@highrr, ${mx}x${py}, 1, transform, 1" >/dev/null 2>&1 || true
hypr keyword monitor "$RIGHT_EXTERNAL_NAME, highres@highrr, ${rx}x${py}, 1" >/dev/null 2>&1 || true
}
apply_profile() {
local label="$1"
local batch="$2"
dock_settle
[ -n "$batch" ] && hypr_batch "$batch" >/dev/null
dock_settle
kick_externals
notify "Profile: $label" ""
restart_waybar
} }
profile_laptop() { profile_laptop() {
disable_all_externals # Minimal: disable only currently enabled externals
notify "Profile: Laptop-only" "$PRIMARY active, externals disabled" local batch=""
batch+="$(batch_disable_enabled_externals)"
apply_profile "Laptop-only" "$batch"
} }
profile_dual() { profile_dual() {
# Ensure only one external is on # Disable enabled externals, then enable preferred main external rule
disable_all_externals local batch=""
enable_line "$DUAL_MAIN" batch+="$(batch_disable_enabled_externals)"
notify "Profile: Dual" "Enabled main external with preferred transform" batch+="$(enable_rule "$DUAL_MAIN")"
apply_profile "Dual" "$batch"
} }
profile_triple() { profile_triple() {
# Ensure both externals are on (and only those two) # Disable enabled externals, then enable both rules
disable_all_externals # Order: EXT2 first so it tends to appear “middle” with auto-right
enable_line "$EXT2" # ext2 first so it appears in the middle local batch=""
enable_line "$EXT1" batch+="$(batch_disable_enabled_externals)"
# You can drop EXT_FALLBACK if you don't actually need it: batch+="$(enable_rule "$EXT2")"
# enable_line "$EXT_FALLBACK" batch+="$(enable_rule "$EXT1")"
notify "Profile: Triple" "Enabled both externals" apply_profile "Triple" "$batch"
dock_settle
enforce_triple_order
} }
toggle_externals() { toggle_externals() {
if any_external_enabled; then if external_enabled; then
profile_laptop profile_laptop
else else
# Prefer triple if we have two presets, else dual
if [ -n "$EXT1" ] && [ -n "$EXT2" ]; then if [ -n "$EXT1" ] && [ -n "$EXT2" ]; then
profile_triple profile_triple
else else
@@ -100,32 +219,38 @@ toggle_externals() {
} }
dpms_toggle_focused() { dpms_toggle_focused() {
# Blank/unblank the currently focused output, layout unchanged
local name local name
if jqok; then name="$(focused_monitor_name)"
name="$(monjson | jq -r '.[] | select(.focused==true) | .name // empty')"
else
name="$(hyprctl monitors | awk '$1=="Monitor"{gsub(/^Monitor[ \t]+/,""); split($0,a," "); name=a[1]} /focused: yes/{print name; exit}')"
fi
[ -z "$name" ] && { notify "No focused monitor" ""; exit 2; } [ -z "$name" ] && { notify "No focused monitor" ""; exit 2; }
hypr dispatch dpms toggle "$name" hypr dispatch dpms toggle "$name" >/dev/null
notify "DPMS toggle" "$name" notify "DPMS toggle" "$name"
} }
status() {
echo "Enabled monitors:"
enabled_monitor_names | sed 's/^/ - /'
echo
echo "Focused: $(focused_monitor_name || true)"
}
case "${1:-}" in case "${1:-}" in
laptop) profile_laptop ;; laptop) profile_laptop ;;
dual) profile_dual ;; dual) profile_dual ;;
triple) profile_triple ;; triple) profile_triple ;;
toggle-externals) toggle_externals ;; toggle-externals) toggle_externals ;;
dpms-toggle-focused) dpms_toggle_focused ;; dpms-toggle-focused) dpms_toggle_focused ;;
kick-externals) dock_settle; kick_externals; notify "Kicked externals (DPMS)" "" ;;
status) status ;;
*) *)
cat <<EOF cat <<EOF
Usage: Usage:
$(basename "$0") laptop # eDP-2 only $(basename "$0") laptop # eDP-2 only (disable enabled externals)
$(basename "$0") dual # eDP-2 + main external $(basename "$0") dual # eDP-2 + preferred external
$(basename "$0") triple # eDP-2 + both externals $(basename "$0") triple # eDP-2 + both externals
$(basename "$0") toggle-externals # flip between laptop-only and (dual/triple) $(basename "$0") toggle-externals # laptop-only <-> (dual/triple)
$(basename "$0") dpms-toggle-focused # blank/unblank focused output (no layout change) $(basename "$0") dpms-toggle-focused # blank/unblank focused output (layout unchanged)
$(basename "$0") kick-externals # DPMS off/on for enabled externals
$(basename "$0") status # print enabled + focused
EOF EOF
exit 2 exit 2
;; ;;

View File

@@ -57,16 +57,26 @@ fi
# Get current outputs dynamically # Get current outputs dynamically
OUTPUTS=$(hyprctl monitors | grep "Monitor" | awk '{print $2}' | paste -sd " " -) OUTPUTS=$(hyprctl monitors | grep "Monitor" | awk '{print $2}' | paste -sd " " -)
TOP_LEVEL=$(printf "%b" "screenshot\nrecord" | "${DMENU_ARR[@]}" "󰄀 ")
[ -z "$TOP_LEVEL" ] && exit 0
if [ "$TOP_LEVEL" = "screenshot" ]; then
OPTIONS=$( OPTIONS=$(
cat <<EOF cat <<EOF
screenshot selection screenshot selection
$(for OUTPUT in $OUTPUTS; do echo "screenshot $OUTPUT"; done) $(for OUTPUT in $OUTPUTS; do echo "screenshot $OUTPUT"; done)
screenshot all screenshot all
EOF
)
else
OPTIONS=$(
cat <<EOF
record selection record selection
$(for OUTPUT in $OUTPUTS; do echo "record $OUTPUT"; done) $(for OUTPUT in $OUTPUTS; do echo "record $OUTPUT"; done)
record all record all
EOF EOF
) )
fi
SELECTION=$(printf "%b" "$OPTIONS" | "${DMENU_ARR[@]}" "󰄀 ") SELECTION=$(printf "%b" "$OPTIONS" | "${DMENU_ARR[@]}" "󰄀 ")
[ -z "$SELECTION" ] && exit 0 [ -z "$SELECTION" ] && exit 0
@@ -92,6 +102,11 @@ select_audio_mode() {
esac esac
} }
open_in_satty() {
[ -x "$(command -v satty)" ] || return 0
satty -f "$1" >/dev/null 2>&1 &
}
# Screenshot or record depending on selection # Screenshot or record depending on selection
case "$SELECTION" in case "$SELECTION" in
"screenshot selection") "screenshot selection")
@@ -99,6 +114,7 @@ case "$SELECTION" in
IMG="${SCREENSHOT_DIR}/${TIMESTAMP}.png" IMG="${SCREENSHOT_DIR}/${TIMESTAMP}.png"
grim -g "$(slurp)" "$IMG" || { notify-send "Error" "Failed to take screenshot"; exit 1; } grim -g "$(slurp)" "$IMG" || { notify-send "Error" "Failed to take screenshot"; exit 1; }
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG" [ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
open_in_satty "$IMG"
notify-send "Screenshot Taken" "$IMG" notify-send "Screenshot Taken" "$IMG"
;; ;;
@@ -114,6 +130,7 @@ case "$SELECTION" in
montage "${TEMP_FILES[@]}" -tile x1 -geometry +0+0 "$IMG" montage "${TEMP_FILES[@]}" -tile x1 -geometry +0+0 "$IMG"
rm "${TEMP_FILES[@]}" rm "${TEMP_FILES[@]}"
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG" [ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
open_in_satty "$IMG"
notify-send "Screenshot Taken" "$IMG" notify-send "Screenshot Taken" "$IMG"
else else
notify-send "Error" "Not enough outputs to montage" notify-send "Error" "Not enough outputs to montage"
@@ -153,6 +170,7 @@ case "$SELECTION" in
OUT=$(echo "$SELECTION" | awk '{print $2}') OUT=$(echo "$SELECTION" | awk '{print $2}')
grim -c -o "$OUT" "$IMG" || { notify-send "Error" "Failed to screenshot $OUT"; exit 1; } grim -c -o "$OUT" "$IMG" || { notify-send "Error" "Failed to screenshot $OUT"; exit 1; }
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG" [ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
open_in_satty "$IMG"
notify-send "Screenshot Taken" "$IMG" notify-send "Screenshot Taken" "$IMG"
;; ;;

View File

@@ -1,19 +1,19 @@
@define-color cursor #9D7C73; @define-color cursor #AAA27D;
@define-color background #0E0E11; @define-color background #252425;
@define-color foreground #FDF2DE; @define-color foreground #F9F1D9;
@define-color color0 #38393C; @define-color color0 #505051;
@define-color color1 #424652; @define-color color1 #9C604E;
@define-color color2 #6A3E40; @define-color color2 #807A52;
@define-color color3 #736956; @define-color color3 #908BAB;
@define-color color4 #897C88; @define-color color4 #B7815F;
@define-color color5 #9B8166; @define-color color5 #B9BECA;
@define-color color6 #F9D9A2; @define-color color6 #EED793;
@define-color color7 #F4E4C8; @define-color color7 #EEE3C1;
@define-color color8 #AA9F8C; @define-color color8 #A79F87;
@define-color color9 #424652; @define-color color9 #9C604E;
@define-color color10 #6A3E40; @define-color color10 #807A52;
@define-color color11 #736956; @define-color color11 #908BAB;
@define-color color12 #897C88; @define-color color12 #B7815F;
@define-color color13 #9B8166; @define-color color13 #B9BECA;
@define-color color14 #F9D9A2; @define-color color14 #EED793;
@define-color color15 #F4E4C8; @define-color color15 #EEE3C1;

View File

@@ -4,7 +4,7 @@
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
"layer": "top", "layer": "top",
"swap-icon-label": true,
"position": "top", "position": "top",
"height": 36, "height": 36,
@@ -18,6 +18,7 @@
"modules-left": [ "modules-left": [
"clock", "clock",
"custom/weather", "custom/weather",
"tray",
//"custom/rofi", //"custom/rofi",
"hyprland/workspaces", "hyprland/workspaces",
//"hyprland/submap", //"hyprland/submap",
@@ -30,20 +31,20 @@
// //"custom/gammastep" // //"custom/gammastep"
// ], // ],
"modules-right": [ "modules-right": [
"cava",
"wireplumber",
//"wlr/taskbar", //"wlr/taskbar",
//"custom/storage", //"custom/storage",
"memory", "memory",
"cpu", "cpu",
"temperature", "temperature",
"battery", "battery",
//"pulseaudio", //"pulseaudio",
"wireplumber",
"cava",
//"backlight", //"backlight",
"bluetooth", "bluetooth",
//"custom/screenshot_t", //"custom/screenshot_t",
"custom/power_profiles", "custom/power_profiles",
//"tray",
"custom/power", "custom/power",
], ],
@@ -84,17 +85,17 @@
"clock#1": { "clock#1": {
"format": " {:%a}", "format": " {:%a}",
"tooltip": false, "tooltip": false,
"on-click": "gnome-calendar", "on-click": "kitty -e calcure --class=\"float\" -T calcure",
}, },
"clock#2": { "clock#2": {
"format": " {:%d-%h-%Y}", "format": " {:%d-%h-%Y}",
"tooltip": false, "tooltip": false,
"on-click": "gnome-calendar", "on-click": "kitty -e calcure --class=\"float\" -T calcure",
}, },
"clock#3": { "clock#3": {
"format": " {:%H:%M:%S %p}", "format": " {:%H:%M:%S %p}",
"tooltip": false, "tooltip": false,
"on-click": "gnome-calendar", "on-click": "kitty -e calcure --class=\"float\" -T calcure",
}, },
"bluetooth": { "bluetooth": {
@@ -227,7 +228,7 @@
"format": " {:%H:%M  %e %b}", "format": " {:%H:%M  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"today-format": "<b>{}</b>", "today-format": "<b>{}</b>",
"on-click": "gnome-calendar", "on-click": "kitty -e calcure --class=\"float\" -T calcure",
}, },
"clock#date": { "clock#date": {
@@ -380,8 +381,9 @@
}, },
"tray": { "tray": {
"icon-size": 15, "icon-size": 11,
"spacing": 5, "spacing": 5,
"show-passive-items": true,
}, },
"custom/power_profiles": { "custom/power_profiles": {
@@ -405,33 +407,37 @@
"menu": "on-click", "menu": "on-click",
"menu-file": "~/.config/waybar/modules/power_menu.xml", "menu-file": "~/.config/waybar/modules/power_menu.xml",
"menu-actions": { "menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend", "suspend": "systemctl suspend",
"hibernate": "systemctl hibernate", "hibernate": "systemctl hibernate",
"logout": "hyprctl dispatch exit",
"shutdown": "shutdown",
"reboot": "reboot",
}, },
}, },
"cava": { "cava": {
"on-click": "pavucontrol",
// "cava_config": "$XDG_CONFIG_HOME/cava/cava.conf", // "cava_config": "$XDG_CONFIG_HOME/cava/cava.conf",
"framerate": 30, "framerate": 30,
"sensitivity": 3,
"autosens": 1, "autosens": 1,
"sensitivity": 100, "bars": 12,
"bars": 14, "lower_cutoff_freq": 10,
"lower_cutoff_freq": 50,
"higher_cutoff_freq": 10000, "higher_cutoff_freq": 10000,
"hide_on_silence": false, "hide_on_silence": false,
// "format_silent": "quiet", "format_silent": "quiet",
"method": "pulse", "method": "pipewire",
"source": "auto", "source": "auto",
"stereo": true, "stereo": false,
"reverse": false, "reverse": false,
"bar_delimiter": 0, "bar_delimiter": 0,
"monstercat": false, "bar_spacing": 1,
"waves": false, "monstercat": true,
"waves": true,
"noise_reduction": 0.77, "noise_reduction": 0.77,
"input_delay": 2, "input_delay": 2,
"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], "eq": { "1": 1.8, "2": 1.4, "3": 1.1, "4": 1.0, "5": 1.0 },
"format-icons": ["", "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
"actions": { "actions": {
"on-click-right": "mode", "on-click-right": "mode",
}, },

View File

@@ -12,6 +12,11 @@
<object class="GtkMenuItem" id="hibernat"> <object class="GtkMenuItem" id="hibernat">
<property name="label">Hibernate</property> <property name="label">Hibernate</property>
</object> </object>
</child>
<child>
<object class="GtkMenuItem" id="logout">
<property name="label">Logout</property>
</object>
</child> </child>
<child> <child>
<object class="GtkMenuItem" id="shutdown"> <object class="GtkMenuItem" id="shutdown">
@@ -28,4 +33,3 @@
</child> </child>
</object> </object>
</interface> </interface>

View File

@@ -8,12 +8,12 @@
</child> </child>
<child> <child>
<object class="GtkMenuItem" id="balanced"> <object class="GtkMenuItem" id="balanced">
<property name="label">balanced (current)</property> <property name="label">balanced</property>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkMenuItem" id="power-saver"> <object class="GtkMenuItem" id="power-saver">
<property name="label">power-saver</property> <property name="label">power-saver (current)</property>
</object> </object>
</child> </child>
</object> </object>

View File

@@ -18,10 +18,9 @@
.modules-left, .modules-left,
.modules-right { .modules-right {
background-color: rgba(17, 24, 39, 0.5); background-color: rgba(17, 24, 39, 0.1);
margin-top: 2px; margin: 2px;
border-radius: 3px; padding: 1px 3px;
padding: 3px 6px;
} }
/* The whole bar */ /* The whole bar */
@@ -40,20 +39,15 @@ window#waybar.empty #window {
background-color: transparent; background-color: transparent;
} }
/* --- Workspaces --- */
#workspaces button { #workspaces button {
padding: 3px 2px; padding: 3px 10px;
margin: 3px 2px; margin: 2px;
border-radius: 6px; border-radius: 3px;
color: @foreground; color: @foreground;
background-color: @color0; background-color: alpha(@foreground, 0.15);
transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out;
font-size: 9px; /* Slightly smaller font size */ font-size: 9px;
}
#workspaces {
background-color: transparent;
margin: 0;
padding: 0;
} }
#workspaces button.active { #workspaces button.active {
@@ -69,15 +63,44 @@ window#waybar.empty #window {
background-color: @color9; background-color: @color9;
} }
#workspaces {
background-color: transparent;
margin: 0;
padding: 0;
}
/* --- Tray --- */
#tray {
margin: 2px;
}
#tray > * {
background-color: alpha(@foreground, 0.15);
margin: 2px;
}
#tray > * > image,
#tray > * image {
padding: 0px 10px;
}
#tray > *:hover {
background: @color2;
}
#tray > .needs-attention {
background-color: @color9;
}
#window { #window {
background-color: alpha(@background, 0.1); background-color: alpha(@background, 0.1);
color: @foreground; color: @foreground;
border-radius: 3px; border-radius: 3px;
padding: 1px 10px; /* Reduced padding */ padding: 1px 10px;
margin: 2px; margin: 2px;
} }
/* Shared module styling */ /* --- Shared module styling --- */
#clock, #clock,
#battery, #battery,
#cpu, #cpu,
@@ -91,8 +114,9 @@ window#waybar.empty #window {
#temperature, #temperature,
#backlight, #backlight,
#network, #network,
#pulseaudio,
#wireplumber, #wireplumber,
#pulseaudio { #cava {
background-color: alpha(@foreground, 0.15); background-color: alpha(@foreground, 0.15);
color: @foreground; color: @foreground;
padding: 0px 10px; padding: 0px 10px;
@@ -113,18 +137,41 @@ window#waybar.empty #window {
#backlight:hover, #backlight:hover,
#network:hover, #network:hover,
#wireplumber:hover, #wireplumber:hover,
#pulseaudio:hover { #pulseaudio:hover,
#cava:hover {
background: @color2; background: @color2;
} }
#wireplumber {
border-radius: 0px 3px 3px 0px;
margin-left: 0px;
}
#cava {
border-radius: 3px 0px 0px 3px;
margin-right: 0px;
}
#bluetooth { #bluetooth {
background-color: alpha(@color3, 0.3); background-color: alpha(@color3, 0.3);
} }
#bluetooth.disabled { #bluetooth.disabled {
}
#bluetooth.on {
background-color: alpha(@color2, 1); background-color: alpha(@color2, 1);
} }
#bluetooth.connected {
background-color: alpha(@color4, 1);
}
#bluetooth.connected:hover,
#bluetooth.on:hover {
background-color: alpha(@color3, 0.3);
}
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
color: @color1; color: @color1;
background-color: alpha(@color2, 1); background-color: alpha(@color2, 1);
@@ -134,15 +181,6 @@ window#waybar.empty #window {
background-color: alpha(@color2, 1); background-color: alpha(@color2, 1);
} }
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: rgba(253, 77, 75, 0.5);
}
#idle_inhibitor { #idle_inhibitor {
background-color: rgba(45, 52, 54, 0.5); background-color: rgba(45, 52, 54, 0.5);
} }
@@ -196,11 +234,12 @@ window#waybar.empty #window {
} }
menu { menu {
border-radius: 15px; border-radius: 5px;
background: rgba(22, 19, 32, 0); border: 0px;
background: rgba(22, 19, 32, 0.5);
color: #b5e8e0; color: #b5e8e0;
padding: 5px; padding: 5px;
} }
menuitem { menuitem {
border-radius: 15px; border-radius: 5px;
} }