summaryrefslogtreecommitdiff
path: root/common/modules/matugen/templates/matugen-waybar.nix
diff options
context:
space:
mode:
Diffstat (limited to 'common/modules/matugen/templates/matugen-waybar.nix')
-rw-r--r--common/modules/matugen/templates/matugen-waybar.nix540
1 files changed, 540 insertions, 0 deletions
diff --git a/common/modules/matugen/templates/matugen-waybar.nix b/common/modules/matugen/templates/matugen-waybar.nix
new file mode 100644
index 0000000..a59cac9
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-waybar.nix
@@ -0,0 +1,540 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.rofi.enable {
+ xdg.configFile = {
+ "matugen/templates/waybar.jsonc" = {
+ text = ''
+ {
+ "exclusive": true,
+ "reload_style_on_change": true,
+ "position": "top",
+ "margin-top": 0,
+ "spacing": 0,
+ "height": 0,
+ "margin-bottom": 0,
+ "modules-left": [
+ "dwl/tags",
+ "custom/separator",
+ "tray",
+ "custom/separator7",
+ "idle_inhibitor",
+ "custom/separator2",
+ "custom/separator5",
+ "mpris",
+ "custom/separator6"
+ ],
+ "modules-center": ["custom/separator", "clock", "custom/separator2"],
+ "modules-right": [
+ "custom/separator",
+ "bluetooth",
+ "custom/separator3",
+ "backlight",
+ "custom/separator4",
+ "battery",
+ "custom/separator4",
+ "power-profiles-daemon",
+ "custom/separator3",
+ "network",
+ "custom/separator3",
+ "pulseaudio",
+ "custom/separator3",
+ "memory",
+ "custom/separator3",
+ "cpu",
+ "custom/separator2"
+ ],
+ "dwl/tags" : {
+ "num-tags" : 9,
+ // "tag-labels" : ["一" "二" "三" "四" "五" "六" "七" "八" "九"];
+ },
+ "custom/separator": {
+ "format": "[",
+ "tooltip": false
+ },
+ "custom/separator2": {
+ "format": "]",
+ "tooltip": false
+ },
+ "custom/separator3": {
+ "format": "󰿟",
+ "tooltip": false
+ },
+ "custom/separator4": {
+ "exec": "sh -c '[ -d /sys/class/backlight ] && [ \"$(ls -A /sys/class/backlight 2>/dev/null)\" ] && ls /sys/class/power_supply 2>/dev/null | grep -q \"^BAT\" && echo \"󰿟\"'",
+ "tooltip": false,
+ "interval": "once"
+ },
+ "custom/separator5": {
+ "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\\\"text\\\\\":\\\\\"[\\\\\",\\\\\"class\\\\\":\\\\\"show\\\\\"}\"; else echo \"{\\\\\"text\\\\\":\\\\\"\\\\\",\\\\\"class\\\\\":\\\\\"hide\\\\\"}\"; fi'",
+ "return-type": "json",
+ "interval": 2,
+ "format": "{}"
+ },
+ "custom/separator6": {
+ "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\\\"text\\\\\":\\\\\"]\\\\\",\\\\\"class\\\\\":\\\\\"show\\\\\"}\"; else echo \"{\\\\\"text\\\\\":\\\\\"\\\\\",\\\\\"class\\\\\":\\\\\"hide\\\\\"}\"; fi'",
+ "return-type": "json",
+ "interval": 2,
+ "format": "{}"
+ },
+ "custom/separator7": {
+ "exec": "sh -c 'count=$(busctl --user get-property org.kde.StatusNotifierWatcher /StatusNotifierWatcher org.kde.StatusNotifierWatcher RegisteredStatusNotifierItems | sed -n \"s/^as \\\\\\\\([0-9]\\\\\\\\+\\\\\\\\).*/\\\\\\\\1/p\"); if [ \"${"count:-0"}\" -gt 0 ]; then echo \"{\\\\\"text\\\\\":\\\\\"󰿟\\\\\",\\\\\"class\\\\\":\\\\\"show\\\\\"}\"; else echo \" {\\\\\"text\\\\\":\\\\\"\\\\\",\\\\\"class\\\\\":\\\\\"hide\\\\\"}\"; fi'",
+ "return-type": "json",
+ "interval": 2
+ },
+ "power-profiles-daemon": {
+ "justify": "center",
+ "format": "power {icon}",
+ "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
+ "tooltip": true,
+ "format-icons": {
+ "performance": "<span style='italic'weight='900' color='{{colors.primary.default.hex}}'>perf</span>",
+ "balanced": "<span style='italic' weight='900' color='{{colors.primary.default.hex}}'>bal</span>",
+ "power-saver": "<span style='italic' weight='900' color='{{colors.primary.default.hex}}'>eco</span>"
+ }
+ },
+ "cpu": {
+ "interval": 10,
+ "format": "cpu <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{usage:02}%</span>",
+ "states": {
+ "warning": 50,
+ "critical": 80
+ }
+ },
+ "backlight": {
+ "device": "amd_backlight",
+ "rotate": 0,
+ "format": "bl <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{percent}%</span>",
+ "tooltip-format": "🌕 {percent}%",
+ "format-icons": [
+ "󰃜",
+ "󰃝",
+ "󰃞",
+ "󰃟",
+ "󰃠"
+ ]
+ },
+ "memory": {
+ "interval": 2,
+ "format": "mem <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{percentage:02}%</span>",
+ "states": {
+ "warning": 50,
+ "critical": 80
+ }
+ },
+
+ "clock": {
+ "format": "{:%I:%M %p - %A, %b %d}",
+ "interval": 60,
+ "tooltip": false,
+ "locale": "en_US.UTF-8",
+ },
+
+ "network": {
+ "format-icons": [
+ "󰤯",
+ "󰤟",
+ "󰤢",
+ "󰤥",
+ "󰤨"
+ ],
+ "format": "{icon}",
+ "format-wifi": "net <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{signalStrength}%</span>",
+ "format-ethernet": "net <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>on</span>",
+ "format-disconnected": "net <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>off 󰤮 / 󰈀 </span>",
+ "tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
+ "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
+ "tooltip-format-disconnected": "Disconnected",
+ "interval": 3,
+ "spacing": 1,
+ "on-click": "foot -e nmtui",
+ },
+ "battery": {
+ "format": "bat <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{capacity}%</span>",
+ "format-discharging": "bat <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{capacity}%</span>",
+ "format-charging": "bat <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{capacity}%</span>",
+ "format-plugged": "bat_p <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{capacity}%</span>",
+ "format-icons": {
+ "charging": [
+ "󰢜",
+ "󰂆",
+ "󰂇",
+ "󰂈",
+ "󰢝",
+ "󰂉",
+ "󰢞",
+ "󰂊",
+ "󰂋",
+ "󰂅"
+ ],
+ "default": [
+ "󰁺",
+ "󰁻",
+ "󰁼",
+ "󰁽",
+ "󰁾",
+ "󰁿",
+ "󰂀",
+ "󰂁",
+ "󰂂",
+ "󰁹"
+ ]
+ },
+ "format-full": "bat_f <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{capacity}%</span>",
+ "tooltip-format-discharging": "{timeTo}",
+ "tooltip-format-charging": "{timeTo}",
+ "interval": 5,
+ "states": {
+ "warning": 20,
+ "critical": 10
+ }
+ },
+ "bluetooth": {
+ "justify": "center",
+ "format": "bt <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{status}</span> {num_connections}",
+ "format-disabled": "bt <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{status}</span>",
+ "format-connected": "bt <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{status}</span> {num_connections}",
+ "tooltip-format": "Devices connected: {num_connections}",
+ "on-click": "foot -e bluetui",
+ },
+ "pulseaudio": {
+ "justify": "center",
+ "format": "vol <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>{volume}%</span>",
+ "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle ",
+ "tooltip-format": "Playing at {volume}%",
+ "scroll-step": 5,
+ "format-muted": "vol <span style='italic' weight='900' color='{{colors.error.default.hex}}'>muted</span>",
+ "format-icons": {
+ "headphone": "",
+ "default": ["", "", ""]
+ },
+ "states": {
+ "warning": 50,
+ "critical": 10
+ }
+ },
+ "mpris": {
+ "format": " {dynamic}",
+ "format-paused": "{status_icon} {dynamic}",
+ "title-len": 25,
+ "artist-len":15,
+ "dynamic-order": ["title", "artist"],
+ "tooltip-format": "{player} ({status}):\n{artist} - {title}",
+ "status-icons": {
+ "paused": "󰝛"
+ },
+ //"ignored-players": ["firefox", "chromium", "brave"]
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "idle <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>on</span>",
+ "deactivated": "idle <span style='italic' weight='900' color='{{colors.primary.default.hex}}'>off</span>"
+ }
+ },
+ "tray": {
+ "icon-size": 14,
+ "spacing": 4
+ },
+ }
+ '';
+ };
+ "matugen/templates/waybar.css" = {
+ text = ''
+ <* if {{ is_dark_mode }} *>
+ @define-color bg {{colors.surface.default.hex}};
+ <* else *>
+ @define-color bg {{colors.surface_container_low.default.hex}};
+ <* endif *>
+ @define-color fg {{colors.on_surface.default.hex}};
+ @define-color accent {{colors.primary.default.hex}};
+ @define-color on_accent {{colors.on_primary.default.hex}};
+ @define-color danger {{colors.error.default.hex}};
+ @define-color warning {{colors.tertiary.default.hex}};
+
+ * {
+ background-color: @bg;
+ color: @fg;
+ border: none;
+ padding: 0px;
+ font-family: "IosevkaInput";
+ transition: background-color .3s ease-out;
+ font-weight: bold;
+ font-size: 12px;
+ }
+
+ window#waybar {
+ background-color: transparent;
+ }
+
+ #waybar > box {
+ border-radius: 0px;
+ border-bottom: 1.5px solid alpha(@fg, 0.1);
+ margin: 0px 0px 2px 0px;
+ background-color: @bg;
+ min-height: 25px;
+ transition-property: background-color;
+ transition-duration: .5s;
+ }
+
+ .modules-left {
+ margin-left: 4px;
+ }
+
+ .modules-right {
+ margin-right: 4px;
+ }
+
+ #workspaces,
+ #tags {
+ margin: 0px 0px;
+ transition: 0.1s ease-in-out;
+ padding: 0px 0px;
+ }
+
+ #workspaces button,
+ #tags button {
+ all: initial;
+ padding: 0px 4px;
+ margin: 4px 2px;
+ min-width: 10px;
+ color: @fg;
+ opacity: 1;
+ font-weight: 900;
+ }
+
+ #workspaces button box,
+ #workspaces button label,
+ #tags button label {
+ background: transparent;
+ }
+
+ #workspaces button.active,
+ #tags button.focused.occupied {
+ color: @on_accent;
+ background-color: @accent;
+ padding: 0px 4px;
+ margin: 4px 2px;
+ opacity: 1.0;
+ }
+
+ #workspaces button.active box,
+ #workspaces button.active label,
+ #tags button.focused.occupied label {
+ color: @on_accent;
+ }
+
+ #workspaces button.empty.active,
+ #tags button.focused:not(.occupied) {
+ opacity: 1;
+ background-color: @fg;
+ color: @bg;
+ }
+
+ #workspaces button.empty.active box,
+ #workspaces button.empty.active label,
+ #tags button.focused:not(.occupied) label {
+ color: @bg;
+ }
+
+ #workspaces button.empty:not(.active):hover,
+ #tags button:not(.focused):hover{
+ background: transparent;
+ color: alpha(@fg, 1);
+ transition: all 150ms ease;
+ opacity: 0.75;
+ }
+
+ #workspaces button.empty:not(.active),
+ #tags button:not(.focused) {
+ opacity: 0.4;
+ padding: 0px 4px;
+ margin: 4px 2px;
+ color: alpha(@fg, 0.45);
+ }
+
+ #memory,
+ #mpris,
+ #custom-expand-icon,
+ #tray,
+ #cpu,
+ #custom-clock,
+ #battery,
+ #backlight,
+ #network,
+ #bluetooth,
+ #pulseaudio,
+ #power-profiles-daemon,
+ #power-profiles-daemon.performance,
+ #power-profiles-daemon.balanced,
+ #power-profiles-daemon.power-saver,
+ #idle_inhibitor,
+ #custom-idle-indicator,
+ #custom-notification-silencing-indicator,
+ #custom-screenrecording-indicator {
+ min-width: 12px;
+ padding: 0 4px;
+ margin: 1px 3px 1px 3px;
+ opacity: 1;
+ }
+
+ #tray {
+ opacity: 1;
+ padding-top: 2px;
+ }
+
+ #idle_inhibitor.deactivated {
+ opacity: 0.5;
+ }
+
+
+ #idle_inhibitor.activated {
+ opacity: 1;
+ }
+
+ #network {
+ margin-left: 0;
+ }
+
+ #custom-separator7,
+ #custom-separator6,
+ #custom-separator5,
+ #custom-separator4,
+ #custom-separator3,
+ #custom-separator2,
+ #custom-separator {
+ opacity: 0.2;
+ padding-top: 2px;
+ padding-left: 2px;
+ padding-right: 2px;
+ font-size: 14px;
+ }
+
+ tooltip {
+ padding: 2px;
+ }
+
+ #custom-idle-indicator,
+ #custom-notification-silencing-indicator {
+ min-width: 12px;
+ margin-left: 0;
+ margin-right: 0;
+ font-size: 12px;
+ padding-bottom: 0px;
+ }
+
+ #custom-idle-indicator.active,
+ #custom-notification-silencing-indicator.active {
+ color: @fg;
+ opacity: 1;
+ }
+
+ .hidden {
+ opacity: 0;
+ }
+
+ tooltip {
+ padding: 4px;
+ background: @bg;
+ font-size: 10px;
+ border: 1.5px solid alpha(@fg, 0.6);
+ border-radius: 8px;
+
+ }
+ tooltip label {
+ color: alpha(@fg, 0.65);
+ font-weight: normal;
+ }
+
+ /* Specific animation Module */
+
+ #custom-screenrecording-indicator {
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ color: transparent;
+ }
+
+ #custom-screenrecording-indicator.active {
+ color: @recording-active;
+ animation-name: blink-recording;
+ animation-duration: 0.5s;
+ }
+
+ @keyframes blink-recording {
+ to {
+ color: @bg;
+ }
+ }
+
+ @keyframes blink-inhibitor {
+ to {
+ color: @bg;
+ }
+ }
+
+ #mpris {
+ opacity: 1;
+ color: @fg;
+ animation: repeat;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ }
+
+ #mpris.paused {
+ color: {{colors.outline.default.hex}};
+ animation: none;
+ }
+
+ @keyframes blink {
+ to {
+ color: #4a4a4a; /* don't change */
+
+ }
+ }
+
+ #battery.warning {
+ color: @warning;
+ }
+
+ @keyframes blink2 {
+ to {
+ background-color: transparent;
+ color: @danger;
+ }
+ }
+
+ #battery.critical:not(.charging) {
+ background-color: transparent;
+ color: @danger;
+ animation-name: blink2;
+ animation-duration: 0.5s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ }
+
+ #pulseaudio.warning,
+ #memory.warning,
+ #cpu.warning {
+ color: @warning; /* medium load */
+ background-color: @bg;
+ }
+
+ #pulseaudio.critical,
+ #memory.critical,
+ #cpu.critical {
+ color: @accent; /* high load */
+ background-color: @bg;
+ }
+ '';
+ };
+ };
+ };
+}