From 1aeb0e55a5c1552b82e2192a320fec1a18e24e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jozef=20Steinh=C3=BCbl?= Date: Thu, 15 Aug 2024 20:36:20 +0200 Subject: [PATCH] sway: add waybar --- .config/sway/config | 18 +--- .config/waybar/config.jsonc | 70 +++++++++++++++ .config/waybar/style.css | 169 ++++++++++++++++++++++++++++++++++++ goog | 2 +- 4 files changed, 241 insertions(+), 18 deletions(-) create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/style.css diff --git a/.config/sway/config b/.config/sway/config index 87afb16..8139c9b 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -33,22 +33,6 @@ input * { xkb_numlock enabled } -# bar -bar { - font pango:FiraCode Nerd Font Mono 12 - position top - gaps 10px - wrap_scroll yes - - status_command while ~/.config/sway/status.sh; do sleep 1; done - - colors { - background #282828 - statusline #ffffff - focused_workspace #181818 #181818 #ffffff - inactive_workspace #282828 #282828 #ffffff - urgent_workspace #fe4f58 #fe4f58 #181818 - } -} +# waybar, configuration in ~/.config/waybar include /etc/sway/config.d/* diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..902bc0e --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,70 @@ +// -*- mode: jsonc -*- +{ + "height": 24, + "spacing": 4, + "modules-left": ["sway/workspaces"], + "modules-center": ["sway/window"], + "modules-right": [ + "mpris", + "wireplumber", + "backlight", + "clock", + "battery", + "tray", + ], + // Modules configuration + "sway/workspaces": { + "all-outputs": true, + "warp-on-scroll": false, + "enable-bar-scroll": true, + "disable-scroll-wraparound": true, + }, + "sway/window": { + "format": "{title}", + "max-length": 40, + "all-outputs": true, + }, + "mpris": { + "format": " {status_icon} {dynamic}", + "interval": 1, + "dynamic-len": 40, + "status-icons": { + "playing": "▶", + "paused": "⏸", + "stopped": "", + }, + "dynamic-order": ["title", "artist"], + }, + "wireplumber": { + "scroll-step": 5, + "format": "{icon} {volume}%", + "format-muted": "", + "format-icons": ["", "", ""], + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + }, + "backlight": { + "format": "{icon} {percent}%", + "format-icons": ["", "", "", "", "", "", "", "", ""], + }, + "clock": { + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}", + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 15, + }, + "format": "{icon} {capacity}%", + "format-full": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon} {time}", + "format-icons": ["", "", "", "", ""], + }, + "tray": { + "icon-size": 14, + "spacing": 10, + }, +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..5df882c --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,169 @@ +/* https://github.com/OriginCode/dotfiles/blob/0093b62068c36f1ca89deb1514b6b2e0c6c3b1a9/waybar/.config/waybar/style.css */ + +* { + font-size: 14px; + border-radius: 5px; +} + +window#waybar { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, monospace; + background-color: transparent; + border-bottom: 0px; + color: #ebdbb2; + transition-property: background-color; + transition-duration: 0.5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +window#waybar.empty #window { + background-color: transparent; +} + +.modules-right { + margin: 10px 10px 0 0; +} +.modules-center { + margin: 10px 0 0 0; +} +.modules-left { + margin: 10px 0 0 10px; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + /* box-shadow: inset 0 -3px transparent; */ + border: none; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +/* +button:hover { + background: inherit; + box-shadow: inset 0 -3px #ebdbb2; +} */ + +#workspaces { + background-color: #282828; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ebdbb2; + border-radius: 0; +} + +#workspaces button:first-child { + border-radius: 5px 0 0 5px; +} + +#workspaces button:last-child { + border-radius: 0 5px 5px 0; +} + +#workspaces button:hover { + color: #d79921; +} + +#workspaces button.focused { + background-color: #665c54; + /* box-shadow: inset 0 -3px #ffffff; */ +} + +#workspaces button.urgent { + background-color: #b16286; +} + +#idle_inhibitor, +#cava, +#scratchpad, +#mode, +#window, +#clock, +#battery, +#backlight, +#wireplumber, +#tray, +#mpris, +#load { + padding: 0 10px; + background-color: #282828; + color: #ebdbb2; +} + +#mode { + background-color: #689d6a; + color: #282828; + /* box-shadow: inset 0 -3px #ffffff; */ +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#cava { + padding: 0 5px; +} + +#battery.charging, +#battery.plugged { + background-color: #98971a; + color: #282828; +} + +@keyframes blink { + to { + background-color: #282828; + color: #ebdbb2; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #cc241d; + color: #ebdbb2; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#wireplumber.muted { + background-color: #458588; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; +} + +#mpris.playing { + background-color: #d79921; + color: #282828; +} + +#tray menu { + font-family: sans-serif; +} + +#scratchpad.empty { + background: transparent; +} diff --git a/goog b/goog index aee7865..6cf5739 100755 --- a/goog +++ b/goog @@ -8,7 +8,7 @@ from common.sync import sync from common.util import expand stuff: list[str] = [ - *expand("~/.config/{fish,kitty,nvim,pipewire,sway,swaylock,xdg-desktop-portal,zed}/**"), + *expand("~/.config/{fish,kitty,nvim,pipewire,sway,swaylock,waybar,xdg-desktop-portal,zed}/**"), "~/.icons/**", *expand("~/.local/bin/{yarn}"), "~/.profile",