diff --git a/modules/home/waybar/default.nix b/modules/home/waybar/default.nix
index da33590..cdba48f 100644
--- a/modules/home/waybar/default.nix
+++ b/modules/home/waybar/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs, user, ... }:
+{ config, lib, pkgs, username, ... }:
{
imports =
@@ -14,5 +14,470 @@
target = "graphical-session.target";
};
};
+ home.file = {
+ "/home/${username}/.config/waybar/config" = {
+ text = ''
+ [{
+ "layer": "top",
+ "position": "top",
+
+ "modules-left": [
+ "sway/workspaces",
+ "hyprland/workspaces",
+ "privacy",
+ "group/network",
+ "tray",
+ ],
+ "modules-right": [
+ "custom/yubikey#icon",
+ "custom/yubikey#data",
+ "group/hardware",
+ "group/resources",
+ "bluetooth",
+ // "wireplumber",
+ "group/audio",
+ "battery",
+ "custom/notification",
+ "group/clock"
+ ],
+
+
+ // -------------------------------------------------------------------------
+ // modules-left
+ // -------------------------------------------------------------------------
+
+ "sway/workspaces": {
+ "all-outputs": true,
+ "disable-scroll": true,
+ "format": "{name}"
+ },
+
+ "hyprland/workspaces": {
+ "all-outputs": true,
+ "disable-scroll": true,
+ "format": "{name}"
+ },
+
+ "group/network": {
+ "orientation": "horizontal",
+ "modules": [
+ "network",
+ "custom/vpn",
+ ],
+ "drawer": {
+ "transition-left-to-right": true,
+ "transition-duration": 500
+ }
+ },
+
+ "network": {
+ "format": " {ifname}",
+ "format-wifi": " {ipaddr}/{cidr} {signalStrength}%",
+ "format-ethernet": " {ipaddr}/{cidr}",
+ "format-disconnected": "",
+ "tooltip-format": "{ifname} via {gwaddr}",
+ "tooltip-format-wifi": "{essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": "{ifname}",
+ "tooltip-format-disconnected": "Disconnected"
+ },
+
+ // "custom/vpn": {
+ // "format": "{icon} VPN {}",
+ // "format-icons": {
+ // "connected": "",
+ // "disconnected": ""
+ // },
+ // "return-type": "json",
+ // "exec": "/usr/local/bin/waybar-vpn current",
+ // "on-click": "/usr/local/bin/waybar-vpn connect",
+ // "on-click-middle": "/usr/local/bin/waybar-vpn disconnect",
+ // "on-click-right": "/usr/local/bin/get-public-ip-info",
+ // "interval": 30
+ // },
+
+ "privacy": {
+ "icon-spacing": 8,
+ "icon-size": 14,
+ "transition-duration": 250,
+ "modules": [
+ {
+ "type": "screenshare",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ },
+ {
+ "type": "audio-out",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ },
+ {
+ "type": "audio-in",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ }
+ ]
+ },
+
+ "tray": {
+ "icon-size": 12,
+ "spacing": 0
+ },
+
+ "sway/mode": {
+ "format": " {}",
+ "tooltip": false
+ },
+
+ // -------------------------------------------------------------------------
+ // modules-right
+ // -------------------------------------------------------------------------
+
+ "custom/yubikey#icon": {
+ "exec": "~/.local/bin/waybar-yubikey 0",
+ "return-type": "json"
+ },
+
+ "custom/yubikey#data": {
+ "exec": "~/.local/bin/waybar-yubikey 1",
+ "return-type": "json"
+ },
+
+ "group/hardware": {
+ "orientation": "horizontal",
+ "modules": [
+ "cpu",
+ "temperature#cpu",
+ "temperature#gpu",
+ "temperature#nvme",
+ "temperature#wifi"
+ ],
+ "drawer": {
+ "transition-left-to-right": false,
+ "transition-duration": 500
+ }
+ },
+
+ "cpu": {
+ "interval": 30,
+ "format": " {avg_frequency:3.2f}GHz {usage}%",
+ "states": {
+ "warning": 70,
+ "critical": 90
+ },
+ },
+
+ "temperature#cpu": {
+ "hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
+ "critical-threshold": 80,
+ "format": " CPU {temperatureC}°C"
+ },
+
+ "temperature#gpu": {
+ "hwmon-path": "/sys/class/hwmon/hwmon0/temp1_input",
+ "critical-threshold": 80,
+ "format": "· GPU {temperatureC}°C"
+ },
+
+ "temperature#nvme": {
+ "hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input",
+ "critical-threshold": 80,
+ "format": "· NVMe {temperatureC}°C"
+ },
+
+ "temperature#wifi": {
+ "hwmon-path": "/sys/class/hwmon/hwmon11/temp1_input",
+ "critical-threshold": 80,
+ "format": "· WiFi {temperatureC}°C"
+ },
+
+ "group/resources": {
+ "orientation": "horizontal",
+ "modules": [ "memory", "disk#root" ],
+ "drawer": {
+ "transition-left-to-right": false,
+ "transition-duration": 500
+ }
+ },
+
+ "memory": {
+ "interval": 60,
+ "format": " {used:3.1f}GiB/{total:3.1f}GiB"
+ },
+
+ "disk#root": {
+ "interval": 360,
+ "format": " {used}/{total}",
+ "path": "/"
+ },
+
+ "bluetooth": {
+ // "controller": "controller1",
+ "on-click": "~/.local/bin/waybar-bluetooth toggle",
+ "format": "",
+ "format-disabled": "",
+ "format-connected": "",
+ "format-connected-battery": " {device_battery_percentage}%",
+ "tooltip-format": "{controller_alias}\t\t[{controller_address}]",
+ "tooltip-format-connected": "{controller_alias}\t\t[{controller_address}]\n\n{device_enumerate}",
+ "tooltip-format-connected-battery": "{controller_alias}\t\t[{controller_address}]\n\n{device_enumerate}",
+ "tooltip-format-enumerate-connected": "{device_alias}\t\t[{device_address}]",
+ "tooltip-format-enumerate-connected-battery": "{device_alias} ({device_battery_percentage})\t\t[{device_address}]"
+ },
+
+ "group/audio": {
+ "orientation": "horizontal",
+ "modules": [
+ "wireplumber",
+ "custom/audio-internal",
+ "custom/audio-headphones",
+ "custom/audio-hdmi"
+ ],
+ "drawer": {
+ "transition-left-to-right": false,
+ "transition-duration": 500
+ }
+ },
+
+ "wireplumber": {
+ "format": "{icon} {node_name}/{volume}",
+ "format-muted": "",
+ "on-click": "pavucontrol-qt",
+ "on-click-right": "helvum",
+ "format-icons": ["", "", ""]
+ },
+
+ "custom/audio-internal": {
+ "format": " ",
+ "tooltip-format": "Internal",
+ "on-click": "audio-router analog",
+ "interval": "once"
+ },
+
+ "custom/audio-hdmi": {
+ "format": " ",
+ "tooltip-format": "HDMI",
+ "on-click": "audio-router hdmi",
+ "interval": "once"
+ },
+
+ "battery": {
+ "bat": "BAT1",
+ "interval": 30,
+ "states": {
+ "warning": 20,
+ "critical": 10
+ },
+ "format-time": "{H}:{m}",
+ "format": "{icon} {time} {capacity}%",
+ "format-discharging": "{icon} {capacity}%",
+ "format-discharging-warning": "{icon} {capacity}%",
+ "format-discharging-critical": "{icon} {capacity}%",
+ "format-charging": "{icon} {capacity}% @ {power:2.0f}W",
+ "format-full": " {capacity}%",
+ "format-not-charging": " {capacity}%",
+ "format-icons": ["", "", "", "", ""],
+ },
+
+ "custom/notification": {
+ "tooltip": false,
+ "format": "{icon} ",
+ "format-icons": {
+ "notification": "",
+ "none": "",
+ "dnd-notification": "",
+ "dnd-none": "",
+ "inhibited-notification": "",
+ "inhibited-none": "",
+ "dnd-inhibited-notification": "",
+ "dnd-inhibited-none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which swaync-client",
+ "exec": "swaync-client -swb",
+ "on-click": "swaync-client -t -sw",
+ "on-click-right": "swaync-client -d -sw",
+ "escape": true
+ },
+
+ "group/clock": {
+ "orientation": "horizontal",
+ "modules": [ "clock#time", "clock#date" ],
+ "drawer": {
+ "transition-left-to-right": false,
+ "transition-duration": 500
+ }
+ },
+
+ "clock#date": {
+ "interval": 60,
+ "format": " {:%a %e %b %Y}",
+ "tooltip-format": "{:%B %Y}\n{calendar}",
+ "calendar": {
+ "mode" : "year",
+ "mode-mon-col" : 2,
+ "weeks-pos" : "right",
+ "on-scroll" : 1,
+ "format": {
+ "months": "{}",
+ "days": "{}",
+ "weeks": "W{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ }
+ },
+
+ "clock#time": {
+ "interval": 60,
+ "format": " {:%I:%M %p (%Z)}",
+ "tooltip": true,
+ "tooltip-format": "{tz_list}",
+ "timezones": [
+ "Europe/Amsterdam",
+ ],
+ "actions": {
+ "on-scroll-up": "tz_up",
+ "on-scroll-down": "tz_down"
+ }
+ }
+
+ }
+ ]
+ '';
+ };
+ "/home/${username}/.config/waybar/style.css" = {
+ text = ''
+ * {
+ border: none;
+ border-radius: 0;
+ font-family: 'CommitMono Nerd Font';
+ font-weight: 400;
+ font-size: 11px;
+ min-height: 26px;
+ /* margin: 0 0px; */
+ }
+
+ window#waybar.top {
+ background-color: rgba(115, 116, 116, 0.22);
+ border-bottom: none;
+ color: #eeeeee;
+ transition-property: background-color;
+ transition-duration: .5s;
+ }
+
+ window#waybar.hidden {
+ opacity: 0.5;
+ }
+
+ label#window {
+ text-shadow: 0px 0px 3px #18181e;
+ }
+
+ tooltip {
+ background: rgba(43, 48, 59, 0.5);
+ border: 1px solid rgba(100, 114, 125, 0.5);
+ }
+
+ tooltip label {
+ color: white;
+ }
+
+ .modules-left > widget > label,
+ .modules-left > box > widget > label,
+ .modules-right > widget > label,
+ .modules-right > box > widget > label {
+ padding: 0 10px;
+ margin: 0px 0px 0px 10px;
+ }
+
+ #network, #resources, #audio, #clock {
+ padding: 0 4px;
+ }
+
+ .drawer-child > label {
+ margin: 0px 10px;
+ }
+
+ #custom-audio-internal,
+ #custom-audio-motu,
+ #custom-audio-headphones,
+ #custom-audio-hdmi
+ {
+ padding: 4px 2px;
+ border-radius: 0px;
+ }
+
+ #workspaces {
+ margin: 0px 0px 0px 0px;
+ }
+
+ #workspaces button {
+ /*padding: 4px 6px;*/
+ padding: 4px 6px;
+ color: #555555;
+ border-radius: 0px;
+ /*min-width: 32px;*/
+ }
+
+ /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+
+ #workspaces button:hover {
+ box-shadow: inherit;
+ text-shadow: inherit;
+ background: transparent;
+ color: #ffffff;
+ }
+
+ #workspaces button.focused {
+ color: #eeeeee;
+ }
+
+ #workspaces button.focused:hover {
+ color: #ffffff;
+ }
+
+ #workspaces button.urgent {
+ color: #ffffff;
+ background-color: #e27878;
+ }
+
+ #language {
+ /* margin: 0px 0px 0px 0px; */
+ color: #cccccc;
+ }
+
+ #tray {
+ background-color: rgba(0, 0, 0, 0);
+ /* margin-left: 10px; */
+ }
+
+ #tray image {
+ margin: 0px 10px 0px 0px;
+ }
+
+ #mode {
+ background-color: rgba(0, 0, 0, 0);
+ border: 2px solid #e2a478;
+ margin: 0px 10px 0px 0px;
+ border-radius: 5px;
+ }
+
+ #custom-yubikey.icon {
+ background: #f9409d;
+ }
+
+ #custom-notification {
+ padding: 0;
+ color: #ffffff;
+ margin: 0px 10px;
+ }
+ '';
+ };
+ };
}