diff --git a/home-manager/packages/river/river.nix b/home-manager/packages/river/river.nix
index a1d529e..443378d 100644
--- a/home-manager/packages/river/river.nix
+++ b/home-manager/packages/river/river.nix
@@ -3,6 +3,7 @@
{
home.packages = with pkgs; [
+ wideriver
river
];
diff --git a/home-manager/packages/waybar/waybar.nix b/home-manager/packages/waybar/waybar.nix
index 0a0c571..8ef103f 100644
--- a/home-manager/packages/waybar/waybar.nix
+++ b/home-manager/packages/waybar/waybar.nix
@@ -8,8 +8,375 @@ home.packages = with pkgs; [
programs.waybar = {
enable = true;
- settings = {};
-# style = {};
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 30;
+ spacing = 4;
+
+ # Module layout
+ modules-left = [
+ "sway/workspaces"
+ "sway/mode"
+ "sway/scratchpad"
+ ];
+ modules-center = [
+ "sway/window"
+ ];
+ modules-right = [
+ "idle_inhibitor"
+ "pulseaudio"
+ "network#physical"
+ "network#vpn"
+ "network#wifi"
+ "power-profiles-daemon"
+ "cpu"
+ "memory"
+ "temperature"
+ "backlight"
+ "keyboard-state"
+ "sway/language"
+ "battery"
+ "clock"
+ "tray"
+ ];
+
+ # Module configurations
+ "keyboard-state" = {
+ numlock = true;
+ capslock = true;
+ format = "{name} {icon}";
+ format-icons = {
+ locked = "";
+ unlocked = "";
+ };
+ };
+
+ "sway/mode" = {
+ format = "{}";
+ };
+
+ "sway/scratchpad" = {
+ format = "{icon} {count}";
+ show-empty = false;
+ format-icons = ["" ""];
+ tooltip = true;
+ tooltip-format = "{app}: {title}";
+ };
+
+ "idle_inhibitor" = {
+ format = "{icon}";
+ format-icons = {
+ activated = "";
+ deactivated = "";
+ };
+ };
+
+ "tray" = {
+ icon-size = 21;
+ spacing = 10;
+ };
+
+ "clock" = {
+ # timezone = "America/Denver";
+ tooltip-format = "{:%Y %B}\n{calendar}";
+ format-alt = "{:%Y-%m-%d}";
+ };
+
+ "cpu" = {
+ format = "{usage}% ";
+ tooltip = true;
+ };
+
+ "memory" = {
+ format = "{}% ";
+ };
+
+ "temperature" = {
+ # thermal-zone = 2;
+ # hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
+ critical-threshold = 80;
+ format-critical = "{temperatureC}°C {icon}";
+ format = "{temperatureC}°C {icon}";
+ format-icons = ["" "" ""];
+ };
+
+ "backlight" = {
+ format = "{percent}% {icon}";
+ format-icons = ["" "" "" "" "" "" "" "" ""];
+ };
+
+ "battery" = {
+ states = {
+ good = 95;
+ warning = 30;
+ critical = 15;
+ };
+ format = "{icon} {capacity}%";
+ format-full = "{icon} Full";
+ format-charging = "{icon} Charging {capacity}% {time}";
+ format-plugged = "{icon} Charge complete";
+ format-good = ">{icon} {capacity}%";
+ format-icons = ["" "" "" "" "" "" "" ""];
+ };
+
+ "power-profiles-daemon" = {
+ format = "{icon}";
+ tooltip-format = "Power profile: {profile}\nDriver: {driver}";
+ tooltip = true;
+ format-icons = {
+ default = "";
+ performance = "";
+ balanced = "";
+ power-saver = "";
+ };
+ };
+
+ "network#physical" = {
+ interface = "enp0s13f*";
+ format-ethernet = "{ipaddr}/{cidr} ";
+ format = "{ipaddr}/{cidr} ";
+ tooltip-format = "{ifname} via {gwaddr} ";
+ format-linked = "{ifname} (Linked) ";
+ format-disconnected = "";
+ format-alt = "{ifname}: {ipaddr}/{cidr}";
+ };
+
+ "network#vpn" = {
+ interface = "tun*";
+ format-wifi = "{essid} ({signalStrength}%) ";
+ format-ethernet = "{ipaddr}/{cidr} ";
+ tooltip-format = "{ifname} via {gwaddr} ";
+ format-linked = "{ifname} (No IP) ";
+ format-disconnected = "click for VPN";
+ format-alt = "{ifname}: {ipaddr}/{cidr}";
+ # on-click = "kitty --override tab_bar_style=hidden --title 'vpn-launcher' --app-id 'vpn-launcher' /bin/bash -c $HOME/bin/vpn";
+ };
+
+ "network#wifi" = {
+ interface = "wlp*";
+ format-wifi = "{essid} ({signalStrength}%) ";
+ tooltip-format = "{ifname} via {gwaddr} ";
+ format-linked = "{ifname} (No IP) ";
+ format-disconnected = "No WiFi";
+ format-alt = "{ifname}: {ipaddr}/{cidr}";
+ };
+
+ "pulseaudio" = {
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% {icon} {format_source}";
+ format-bluetooth-muted = " {icon} {format_source}";
+ format-muted = " {format_source}";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = ["" "" ""];
+ };
+ on-click = "pavucontrol";
+ };
+ };
+
+ # Waybar styling inspired by the referenced swayhome configuration
+ style = ''
+ * {
+ font-family: "JetBrains Mono", "Font Awesome 6 Free";
+ font-size: 13px;
+ }
+
+ window#waybar {
+ color: #ffffff;
+ background-color: #1e3b28;
+ border-bottom: 3px solid #8f2fef;
+ transition-property: background-color;
+ transition-duration: .5s;
+ }
+
+ window#waybar.hidden {
+ opacity: 0.2;
+ }
+
+ button {
+ box-shadow: inset 0 -3px transparent;
+ border: none;
+ border-radius: 0;
+ }
+
+ button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+
+ #workspaces button {
+ padding: 0 15px;
+ background-color: transparent;
+ border: 2px solid #8f2fef
+ }
+
+ #workspaces button:hover {
+ background: rgba(255, 255, 255, 0.2);
+ }
+
+ #workspaces button.focused {
+ background-color: #8f2fef;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+
+ #workspaces button.urgent {
+ background-color: #f38ba8;
+ }
+
+ #backlight,
+ #battery,
+ #clock,
+ #cpu,
+ #memory,
+ #mode,
+ #network,
+ #pulseaudio,
+ #temperature,
+ #tray,
+ #idle_inhibitor,
+ #keyboard-state,
+ #power-profiles-daemon {
+ padding: 0 8px;
+ }
+
+ #window,
+ #workspaces {
+ margin: 0 8px;
+ }
+
+ .modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+ }
+
+ .modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+ }
+
+ #backlight {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #cba6f7;
+ }
+
+ #battery {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #a6e3a1;
+ }
+
+ #battery.critical.discharging {
+ background-color: #f38ba8;
+ animation: blink 1s infinite;
+ }
+
+ #battery.warning.discharging {
+ background-color: #f9e2af;
+ animation: blink 1s infinite;
+ }
+
+ @keyframes blink {
+ to {
+ background-color: transparent;
+ }
+ }
+
+ #clock {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #a6e3a1;
+ }
+
+ #cpu {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #cba6f7;
+ }
+
+ #memory {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #f9e2af;
+ }
+
+ #mode {
+ color: #ffffff;
+ background-color: #8f2fef;
+ border-bottom: 3px solid #ffffff;
+ }
+
+ #network {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #a6e3a1;
+ }
+
+ #network.disconnected {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #f38ba8;
+ }
+
+ #pulseaudio {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #a6e3a1;
+ }
+
+ #pulseaudio.muted {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #f38ba8;
+ }
+
+ #temperature {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #a6e3a1;
+ }
+
+ #temperature.critical {
+ background-color: transparent;
+ border-bottom: 3px solid #f38ba8;
+ }
+
+ #tray {
+ background-color: transparent;
+ border-bottom: 3px solid #8f2fef;
+ }
+
+ #idle_inhibitor {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #f9e2af;
+ }
+ #idle_inhibitor.activated {
+ color: #1e3b28;
+ background-color: #f9e2af;
+ border-bottom: 3px solid #f9e2af;
+ }
+
+ #keyboard-state {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #fab387;
+ }
+
+ #power-profiles-daemon {
+ color: #ffffff;
+ background-color: transparent;
+ border-bottom: 3px solid #94e2d5;
+ }
+ '';
+ };
};
}