From 0438660003a5f3cbdb2dd8a42961e0c8629f80b9 Mon Sep 17 00:00:00 2001
From: Thomas Voss <mail@thomasvoss.com>
Date: Sun, 13 Aug 2023 01:09:49 +0200
Subject: waybar: Add waybar configuration

---
 .config/waybar/config          | 70 +++++++++++++++++++++++++++++++++
 .config/waybar/custom/disk     |  3 ++
 .config/waybar/custom/keyboard | 11 ++++++
 .config/waybar/style.css       | 89 ++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 173 insertions(+)
 create mode 100644 .config/waybar/config
 create mode 100755 .config/waybar/custom/disk
 create mode 100755 .config/waybar/custom/keyboard
 create mode 100644 .config/waybar/style.css

diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 0000000..aecec60
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,70 @@
+// vi: ft=jsonc
+{
+	"layer": "top",
+	"position": "top",
+	"height": 40,
+	"spacing": 8,
+	"modules-left":   ["wlr/workspaces"],
+	"modules-center": ["clock"],
+	"modules-right":  [
+		"custom/keyboard",
+		"network",
+		"custom/disk",
+		"backlight",
+		"wireplumber",
+		"battery"
+	],
+	"wlr/workspaces": {
+		"sort-by-number": true,
+		"on-click": "activate",
+		"format": " {name} ",
+		"all-outputs": true
+	},
+	"clock": {
+		"interval": 1,
+		// https://www.typeerror.org/docs/cpp/chrono/format
+		"format": "{:%d %B %Y (%a) — %T %Z}"
+	},
+	"custom/keyboard": {
+		"interval": 1,
+		"format": "  {}",
+		"exec": "~/.config/waybar/custom/keyboard"
+	},
+	"network": {
+		"interface": "wlp170s0",
+		"format": "{ifname}",
+		"iterval": 1,
+		"format-wifi": "  {essid}",
+		"format-ethernet": "  {ipaddr}/{cidr}",
+		"format-disconnected": "  No connection"
+	},
+	"custom/disk": {
+		"interval": 30,
+		"format": "  {}",
+		"exec": "~/.config/waybar/custom/disk"
+	},
+	"backlight": {
+		"interval": 1,
+		"format": "{icon}  {percent}%",
+		"format-icons": [""]
+	},
+	"wireplumber": {
+		//"interval": 1,
+		//"exec": "amixer get Master | grep -o '[0-9]*%' -m1 | tr -d %",
+		"format": "<span font='Font Awesome 6 Free'>{icon}</span> {volume}%",
+		"format-muted": "<span font='Font Awesome 6 Free'>{icon}</span> Muted",
+		"format-icons": {
+			"headphone": "",
+			"default": ["", "", ""]
+		}
+	},
+	"battery": {
+		"bat": "BAT1",
+		"states": {
+			"critical": 20
+		},
+		"format": "{icon}   {capacity}%",
+		"format-charging": " {capacity}%",
+		"format-icons": ["", "", "", "", ""]
+	}
+}
diff --git a/.config/waybar/custom/disk b/.config/waybar/custom/disk
new file mode 100755
index 0000000..143e41c
--- /dev/null
+++ b/.config/waybar/custom/disk
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+df -BG | awk '$6 == "/" { print $3 }'
diff --git a/.config/waybar/custom/keyboard b/.config/waybar/custom/keyboard
new file mode 100755
index 0000000..eba7e61
--- /dev/null
+++ b/.config/waybar/custom/keyboard
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+hyprctl devices | sed -En '
+/^\tKeyboard at/ {
+	:loop
+	n
+	/^\t\t\trules: /! b loop
+	s/.* l "([^"]+)", v "([^"]+)".*/\1(\2)/p
+	q
+}
+'
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..7468468
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,89 @@
+@keyframes blink {
+	to {
+		color: #FFF;
+		box-shadow: inset 0 -3px #FFF;
+	}
+}
+
+* {
+	font-family: "Iosevka Smooth";
+	font-size: 16px;
+}
+
+window#waybar {
+	background-color: rgba(43, 48, 59, 0.5);
+	border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+	transition-property: background-color;
+	transition-duration: .5s;
+}
+
+button {
+	/* Use box-shadow instead of border so the text isn't offset */
+	box-shadow: inset 0 -3px transparent;
+	/* Avoid rounded borders under each button name */
+	border: none;
+	border-radius: 0;
+}
+
+button:hover {
+	background: inherit;
+}
+
+#workspaces {
+	margin: 0 4px;
+}
+
+/* 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;
+}
+
+#workspaces button {
+	color: #FFF;
+	padding: 0 5px;
+	background-color: transparent;
+}
+
+#workspaces button:hover {
+	background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.active {
+	background-color: rgba(0, 0, 0, 0.4);
+}
+
+#workspaces button.urgent {
+	background-color: #eb4d4b;
+}
+
+#backlight,
+#battery,
+#clock,
+#custom-disk,
+#custom-keyboard,
+#network,
+#wireplumber {
+	padding: 0 5px;
+	color: #FFF;
+}
+
+button:hover,
+#workspaces button.active {
+	color: #FFF;
+	box-shadow: inset 0 -3px #FAA14F;
+}
+
+#battery.critical:not(.charging) {
+	color: #F53C3C;
+	box-shadow: inset 0 -3px #F53C3C;
+	animation-name: blink;
+	animation-duration: 0.65s;
+	animation-timing-function: linear;
+	animation-iteration-count: infinite;
+	animation-direction: alternate;
+}
-- 
cgit v1.2.3