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",