Compare commits
3 Commits
810060dc10
...
5e55b51220
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e55b51220 | |||
| 73d6ca5bec | |||
| 8a6e480d58 |
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ bindd = $mainMod ALT SHIFT, F1, Move active window to s~/.config/hypr/scripts/pe
|
|||||||
|
|
||||||
# ======= Screenshot =======
|
# ======= Screenshot =======
|
||||||
# Screenshot a window
|
# Screenshot a window
|
||||||
bind = $mainMod, PRINT, exec, hyprshot -m window
|
bind = $mainMod, PRINT, exec, hyprshot -m window
|
||||||
# Screenshot a monitor
|
# Screenshot a monitor
|
||||||
bind = , PRINT, exec, hyprshot -m output
|
bind = , PRINT, exec, hyprshot -m output
|
||||||
# Screenshot a region
|
# Screenshot a region
|
||||||
@@ -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, F9, exec, ~/.config/hypr/scripts/monitor-toggle.sh dual
|
||||||
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh laptop
|
|
||||||
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
|
||||||
@@ -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 H4ZR302705, highres@highrr, auto-right, 1
|
||||||
monitor = desc:Samsung Electric Company S24F350 H4ZK111233, 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 = HDMI-A-1, highres@highrr, auto-right, 1, vrr, 0
|
# monitor = HDMI-A-1, highres@highrr, auto-right, 1, vrr, 0
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -289,4 +298,18 @@ windowrule {
|
|||||||
match:class = ^(waypaper)$
|
match:class = ^(waypaper)$
|
||||||
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ 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
|
||||||
# source ~/.config/hypr/config/user-config.conf
|
# source ~/.config/hypr/config/user-config.conf
|
||||||
6
.config/hypr/monitors.conf
Normal file
6
.config/hypr/monitors.conf
Normal 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
|
||||||
@@ -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() {
|
||||||
monjson(){ hyprctl -j monitors 2>/dev/null || true; }
|
local out
|
||||||
|
if ! out="$(hyprctl --batch "$1" 2>&1)"; then
|
||||||
|
notify "hyprctl --batch failed" "$out"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf '%s' "$out"
|
||||||
|
}
|
||||||
|
|
||||||
any_external_enabled() {
|
restart_waybar() {
|
||||||
if jqok; then
|
[ "${RESTART_WAYBAR:-0}" -eq 1 ] || return 0
|
||||||
monjson | jq -e --arg P "$PRIMARY" '.[] | select(.name!=$P and (.disabled!=true))' >/dev/null
|
if pgrep -x waybar >/dev/null 2>&1; then
|
||||||
else
|
pkill -SIGUSR2 waybar >/dev/null 2>&1 || true
|
||||||
hyprctl monitors | awk -v P="$PRIMARY" '/^Monitor /{gsub(/^Monitor[ \t]+/, "", $0); split($0,a," "); if (a[1]!=P){print; exit 0}}' | grep -q .
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_all_externals() {
|
jqok() { command -v jq >/dev/null 2>&1; }
|
||||||
|
monjson() { hyprctl -j monitors 2>/dev/null || true; }
|
||||||
|
|
||||||
|
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
|
||||||
mapfile -t names < <(monjson | jq -r --arg P "$PRIMARY" '.[] | select(.name!=$P) | .name')
|
monjson | jq -r '.[] | select(.disabled != true) | .name'
|
||||||
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]}')
|
# Fallback is weaker; jq is strongly recommended
|
||||||
|
hyprctl monitors | awk '
|
||||||
|
/^Monitor /{name=$2}
|
||||||
|
/disabled: false/{print name}
|
||||||
|
'
|
||||||
fi
|
fi
|
||||||
for n in "${names[@]:-}"; do
|
}
|
||||||
hypr keyword monitor "$n, disable"
|
|
||||||
|
focused_monitor_name() {
|
||||||
|
if jqok; then
|
||||||
|
monjson | jq -r '.[] | select(.focused==true) | .name // empty'
|
||||||
|
else
|
||||||
|
hyprctl monitors | awk '
|
||||||
|
/^Monitor /{name=$2}
|
||||||
|
/focused: yes/{print name; exit}
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
external_enabled() {
|
||||||
|
local n
|
||||||
|
while IFS= read -r n; do
|
||||||
|
[ "$n" != "$PRIMARY" ] && return 0
|
||||||
|
done < <(enabled_monitor_names)
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# We don’t 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
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -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 " " -)
|
||||||
|
|
||||||
OPTIONS=$(
|
TOP_LEVEL=$(printf "%b" "screenshot\nrecord" | "${DMENU_ARR[@]}" " ")
|
||||||
cat <<EOF
|
[ -z "$TOP_LEVEL" ] && exit 0
|
||||||
|
|
||||||
|
if [ "$TOP_LEVEL" = "screenshot" ]; then
|
||||||
|
OPTIONS=$(
|
||||||
|
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"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -13,7 +13,12 @@
|
|||||||
<property name="label">Hibernate</property>
|
<property name="label">Hibernate</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="logout">
|
||||||
|
<property name="label">Logout</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
<object class="GtkMenuItem" id="shutdown">
|
<object class="GtkMenuItem" id="shutdown">
|
||||||
<property name="label">Shutdown</property>
|
<property name="label">Shutdown</property>
|
||||||
</object>
|
</object>
|
||||||
@@ -28,4 +33,3 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user