diff --git a/waybar/config.jsonc b/waybar/config.jsonc index a27028f..5bf3113 100644 --- a/waybar/config.jsonc +++ b/waybar/config.jsonc @@ -1,192 +1,186 @@ // ~/.config/waybar/config.jsonc -{ - "layer": "top", - "position": "top", - // "output": "eDP-1", - "height": 30, - "modules-left": ["hyprland/workspaces"], - "modules-center": [], - "modules-right": [ - // "custom/pixelbuds_pro", - "custom/network", - "custom/mem", - "custom/cpu", - "custom/tlp", - "custom/volume", - "custom/mic", - "tray", - "clock" - ], +[ + { + "name": "top", + "layer": "top", + "position": "top", + "height": 34, + "spacing": 4, + "margin-top": 6, + "margin-left": 10, + "margin-right": 10, - "hyprland/workspaces": { - "format": "{icon}", - "on-click": "activate" + "modules-left": [ + "hyprland/workspaces", + "hyprland/window" + ], + "modules-center": [ + "clock" + ], + "modules-right": [ + "tray", + "custom/power_status" + ], + + // --- Standard Modules --- + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate" + }, + "hyprland/window": { + "format": "{}", + "max-length": 50 + }, + "clock": { + "format": "{:%a %d %b %H:%M}", + "on-click-right": "xdg-open https://calendar.proton.me/u/0/month &> /dev/null & disown", + "tooltip": false + }, + "tray": { + "icon-size": 18, + "spacing": 10 + }, + + // --- Fluxo-rs Power --- + "custom/power_status": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs power", + "on-click": "~/.config/hypr/scripts/powermenu.sh & disown", + "interval": 5 + } }, - "hyprland/window": { - "format": "{}", - "max-length": 35 - }, - "clock": { - "format": "{:%a %d %b %H:%M}", - "format-alt": false, - "on-click-right": "xdg-open https://calendar.proton.me/u/0/month &> /dev/null & disown", - "tooltip": false, - }, - "cpu": { - "format": "CPU: {usage}%", - "tooltip": true, - "interval": 1 - }, - "memory": { - "format": "MEM: {used}/{total}GB", - "interval": 3 - }, - "network": { - "format-wifi": "{essid} ({signalStrength}%): {ipaddr}", - "format-ethernet": "{ifname}: {ipaddr}", - "format-disconnected": "Disconnected", - "tooltip-format": "{ifname} via {gwaddr}" - }, - "custom/volume": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs vol", - "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", - "on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+", - "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-", - "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs vol --cycle", - "on-click-middle": "pavucontrol", - "interval": 2 - }, - "custom/mic": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mic", - "on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle", - "on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+", - "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-", - "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mic --cycle", - "on-click-middle": "pavucontrol", - "interval": 2 - }, - "custom/bluetooth-audio": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs bt", - "interval": 3, - "on-click": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs bt disconnect" - }, - "tray": { - "icon-size": 18, - "spacing": 6 - }, - "custom/power": { - "format": "", - "tooltip": false, - "on-click": "~/.config/hypr/scripts/powermenu.sh & disown" - }, - "custom/tlp": { - "format": "{}", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs power", - "return-type": "json", - "interval": 5 - }, - "battery": { - "states": { - "warning": 30, - "critical": 15 - }, - "format": "{capacity}%", - "format-charging": "{capacity}%", - "format-plugged": "{capacity}%", - "format-alt": "{time} {icon}", - "format-full": "{capacity}%", - "format-icons": ["", "", "", "", ""] - }, - "custom/pixelbuds_pro": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds", - "interval": 5, - "on-click": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds connect & disown", - "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds cycle_anc & disown" - }, - "custom/gamemode": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs game", - "on-click": "~/.config/hypr/scripts/gamemode.sh & disown", - "interval": 1 - }, - "custom/gpu-screen-recorder": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh", - "on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save & disown", - "on-click-middle": "nautilus ~/Videos/replay & disown", - "on-click": "~/.config/waybar/scripts/toggle-replay.sh & disown", - "interval": 1 - }, - "custom/gpu": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs gpu", - "on-click": "lact gui & disown", - "interval": 3 - }, - "custom/sys": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs sys", - "interval": 5 - }, - "custom/cpu": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs cpu", - "on-click": "zenmonitor & disown", - "interval": 3 - }, - "custom/mem": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mem", - "interval": 3 - }, - "custom/btrfs": { - "format": "{}", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs pool", - "return-type": "json", - "interval": 30 - }, - "custom/disk-root": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs disk", - "interval": 30 - }, - "custom/disk-gdrive": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs disk ~/gdrive", - "interval": 30 - }, - "custom/disk-data": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs disk ~/data", - "interval": 30 - }, - "custom/disk-games": { - "format": "{}", - "return-type": "json", - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs disk ~/games", - "interval": 30 - }, - "custom/network": { - "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs net", - "interval": 2, // in seconds - "format": "{}", - "return-type": "json" + { + "name": "bottom", + "layer": "top", + "position": "bottom", + "height": 34, + "spacing": 4, + "margin-bottom": 6, + "margin-left": 10, + "margin-right": 10, + + "modules-left": [ + "custom/sys", + "custom/cpu", + "custom/mem", + "custom/network" + ], + "modules-center": [ + "custom/gamemode" + ], + "modules-right": [ + "custom/disk-root", + "custom/bluetooth-audio", + "custom/volume", + "custom/mic" + ], + + // --- Fluxo-rs System & Hardware --- + "custom/sys": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs sys", + "interval": 5 + }, + "custom/cpu": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs cpu", + "on-click": "zenmonitor & disown", + "interval": 3 + }, + "custom/mem": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mem", + "interval": 3 + }, + "custom/network": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs net", + "interval": 2 + }, + + // --- Fluxo-rs Utilities --- + "custom/disk-root": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs disk /", + "interval": 30 + }, + "custom/gamemode": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs game", + "on-click": "~/.config/hypr/scripts/gamemode.sh & disown", + "interval": 1 + }, + + // --- Fluxo-rs Audio & BT --- + "custom/volume": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs vol", + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+", + "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-", + "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs vol --cycle", + "on-click-middle": "pavucontrol", + "interval": 2 + }, + "custom/mic": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mic", + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle", + "on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+", + "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-", + "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs mic --cycle", + "on-click-middle": "pavucontrol", + "interval": 2 + }, + "custom/bluetooth-audio": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs bt", + "on-click": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs bt disconnect", + "interval": 3 + } + + // --- Commented Out Modules --- + /* + "custom/gpu": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs gpu", + "on-click": "lact gui & disown", + "interval": 3 + }, + "custom/btrfs": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs pool", + "interval": 30 + }, + "custom/pixelbuds_pro": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds", + "on-click": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds connect & disown", + "on-click-right": "~/.config/waybar/fluxo-rs/target/release/fluxo-rs buds cycle_anc & disown", + "interval": 5 + }, + "custom/gpu-screen-recorder": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh", + "on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save & disown", + "on-click-middle": "nautilus ~/Videos/replay & disown", + "on-click": "~/.config/waybar/scripts/toggle-replay.sh & disown", + "interval": 1 + } + */ } -} +] diff --git a/waybar/style.css b/waybar/style.css index 249823c..d8380c0 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -1,255 +1,133 @@ /* ~/.config/waybar/style.css */ @import "./catppuccin-waybar/themes/mocha.css"; +/* --- Global Reset --- */ * { border: none; border-radius: 0; min-height: 0; - font-family: JetBrainsMono Nerd Font; + font-family: JetBrainsMono Nerd Font, monospace; font-size: 13px; + transition: all 0.2s ease; } +/* --- Bar Background (Floating Island Style) --- */ window#waybar { - background-color: alpha(@base, 0.4); - padding: 4px; - transition-property: background-color; - transition-duration: 0.5s; + background-color: transparent; color: @text; } -window#waybar.hidden { - opacity: 0.5; +/* --- Shared Island Styling --- */ +#workspaces, +#window, +#clock, +#tray, +#custom-sys, +#custom-cpu, +#custom-gpu, +#custom-mem, +#custom-network, +#custom-btrfs, +#custom-disk-root, +#custom-pixelbuds_pro, +#custom-bluetooth-audio, +#custom-volume, +#custom-mic, +#custom-gamemode, +#custom-gpu-screen-recorder, +#custom-power_status { + background-color: alpha(@surface0, 0.95); + margin: 4px 2px; + padding: 0 12px; + border-radius: 12px; + border: 1px solid alpha(@surface1, 0.5); } +/* --- Top Bar Special Handling --- */ +window#waybar.top { + margin-top: 6px; +} + +/* --- Bottom Bar Special Handling --- */ +window#waybar.bottom { + margin-bottom: 6px; +} + +/* --- Workspaces --- */ #workspaces button { - all: initial; - /* Remove GTK theme values (waybar #1351) */ - min-width: 0; - /* Fix weird spacing in materia (waybar #450) */ - box-shadow: inset 0 -3px transparent; - /* Use box-shadow instead of border so the text isn't offset */ - padding: 0px 12px; - margin: 0px 3px; - border-radius: 10px; - background-color: @base; + padding: 0 8px; + margin: 4px 2px; + border-radius: 8px; color: @subtext0; + background-color: transparent; } #workspaces button.active { - color: @text; - border-bottom: 3px solid @blue; -} - -#workspaces button:hover { - box-shadow: inherit; - text-shadow: inherit; - background-color: @surface0; - color: @text; + color: @blue; + background-color: @surface1; } #workspaces button.urgent { - border-bottom: 3px solid @maroon; + color: @red; } -#memory, -#cpu, -#custom-gpu, -#custom-cpu, -#custom-mem, -#custom-power, -#custom-gamemode, -#custom-tlp, -#battery, -#backlight, -#wireplumber, -#custom-volume, -#custom-mic, -#custom-network, -#network, -#clock, -#tray, -#custom-disk-root, -#custom-disk-gdrive, -#custom-disk-games, -#custom-disk-data, -#custom-pixelbuds_pro, -#custom-bluetooth-audio, -#custom-btrfs, -#custom-gpu-screen-recorder { - border-radius: 10px; - margin: 0px 2px; - padding: 0px 10px; - background-color: @base; +#workspaces button:hover { + background-color: @surface2; color: @text; } -#wireplumber.muted, #custom-pixelbuds_pro, #custom-volume.muted, #custom-mic.muted { - background-color: @base; - color: @subtext1; - border-bottom: 3px solid @subtext1; +/* --- Clock (Centered Pill) --- */ +#clock { + color: @mauve; + font-weight: bold; } -#custom-pixelbuds_pro.disconnected { - padding-right: 10px; - padding-left: 8px; +/* --- Power Status --- */ +#custom-power_status { + font-weight: bold; } - -#custom-gpu-screen-recorder, -#custom-gpu-screen-recorder.recording { - padding-right: 12px; - padding-left: 4px; -} - -#custom-gamemode { - padding-right: 9px; - padding-left: 5px; -} - -#custom-pixelbuds_pro.anc-active { - color: @sapphire; - border-bottom: 3px solid @sapphire; -} - -#custom-bluetooth-audio { - color: @sapphire; - border-bottom: 3px solid @sapphire; -} - -#custom-pixelbuds_pro.anc-aware { - color: @sapphire; - border-bottom: 3px solid @sapphire; -} - -#custom-pixelbuds_pro.anc-off { - color: @text; - border-bottom: 3px solid @text; -} - -#custom-gpu-screen-recorder, -#custom-gamemode { - background-color: @base; - color: @subtext1; - border-bottom: 3px solid @subtext1; -} - -#custom-power { - color: @maroon; -} - -#custom-gpu-screen-recorder.recording, -#custom-gamemode.active { - color: @maroon; - border-bottom: 3px solid @maroon; -} - -#custom-tlp { - padding: 0 10px; - min-width: 10px; -} - -#custom-tlp.charging { - color: @mauve; - border-bottom: 3px solid @mauve; -} - -#custom-tlp.bat { - color: @sapphire; - border-bottom: 3px solid @sapphire; -} - -#custom-tlp.warning { - color: @yellow; - border-bottom: 3px solid @yellow; -} - -#custom-tlp.critical { - color: @red; - border-bottom: 3px solid @red; - animation-name: blink; - animation-duration: 0.8s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; +#custom-power_status.charging { color: @green; border-color: @green; } +#custom-power_status.bat { color: @yellow; } +#custom-power_status.warning { color: @peach; } +#custom-power_status.critical { + color: @red; + border-color: @red; + animation: blink 1s infinite alternate; } @keyframes blink { - to { - color: @yellow; - border-bottom: 3px solid @yellow; - opacity: 0.6; - } + to { background-color: alpha(@red, 0.4); } } -#custom-gpu.max, -#custom-cpu.max, -#custom-mem.max, -#custom-btrfs.max, -#custom-disk-root.max, -#custom-disk-gdrive.max, -#custom-disk-games.max, -#custom-disk-data.max { - color: @maroon; - /* border-bottom: 3px solid @maroon; */ -} +/* --- Hardware Metrics (Left Bottom) --- */ +#custom-sys { color: @teal; } +#custom-cpu { color: @blue; } +#custom-mem { color: @lavender; } +#custom-network { color: @sapphire; } -#custom-gpu.high, -#custom-gpu.high, -#custom-cpu.high, -#custom-mem.high, -#custom-btrfs.high, -#custom-disk-root.high, -#custom-disk-gdrive.high, -#custom-disk-games.high, -#custom-disk-data.high { - color: @yellow; - /* border-bottom: 3px solid @yellow; */ -} +#custom-cpu.high, #custom-mem.high { color: @yellow; } +#custom-cpu.max, #custom-mem.max { color: @red; } -#memory, -#cpu, -#disk, -#network, -#custom-network, -#custom-gpu.normal, -#custom-cpu.normal, -#custom-mem.normal, -#custom-btrfs.normal, -#custom-disk-root.normal, -#custom-disk-gdrive.normal, -#custom-disk-games.normal, -#custom-disk-data.normal { - color: @blue; - /* border-bottom: 3px solid @mauve; */ -} +/* --- Center Bottom Utilities --- */ +#custom-gamemode { color: @yellow; } +#custom-gamemode.active { color: @red; border-color: @red; } +/* --- Right Bottom Controls --- */ +#custom-disk-root { color: @sky; } +#custom-volume { color: @mauve; } +#custom-mic { color: @flamingo; } +#custom-volume.muted, #custom-mic.muted { color: @overlay0; } -#backlight { - color: @mauve; -} - -#custom-volume.muted, #custom-mic.muted { - padding-right: 15px; -} - -#custom-volume.unmuted, #custom-mic.unmuted, #wireplumber { - color: @mauve; - border-bottom: 3px solid @mauve; -} - -#clock { - color: @mauve; -} - -#network { -} +#custom-bluetooth-audio { color: @blue; } +/* --- Tooltip --- */ tooltip { - border-radius: 10px; - padding: 9px; - background-color: @base; + background-color: alpha(@base, 0.95); + border: 1px solid @surface1; + border-radius: 12px; } tooltip label { - padding: 5px; - background-color: @base; + color: @text; + padding: 8px; }