]> Freerunner's - dotfiles.git/commitdiff
waybar: full-scale config overhaul
authorAndre Ramnitz <tux.rising@gmail.com>
Wed, 25 Jun 2025 20:50:54 +0000 (22:50 +0200)
committerAndre Ramnitz <tux.rising@gmail.com>
Wed, 25 Jun 2025 20:50:54 +0000 (22:50 +0200)
dot-config/waybar/config.jsonc
dot-config/waybar/scripts/scrolling-mpris.py [new file with mode: 0755]
dot-config/waybar/scripts/sound-source.sh [new file with mode: 0755]
dot-config/waybar/style.css

index 8fa7a3320a2f99ee8a6246195802f846e41a831a..6cad62d59f0f389cf59a5450645aef11b1b1ce56 100644 (file)
@@ -8,7 +8,7 @@
     "custom/launcher",
     "hyprland/workspaces",
     "custom/voidspacer",
-    "mpd"
+    "custom/mpris"
   ],
   "modules-center": [
     "hyprland/submap",
@@ -25,7 +25,8 @@
     "group/sysmon",
     "group/display",
                "network",
-               "wireplumber",
+               "gamemode",
+               "group/sndpwr",
     "custom/voidspacer",
     "group/trayclock",
     "custom/voidspacer",
   ],
   "custom/launcher": {
     "format": "󰀻",
-    "on-click": "killall fuzzel || fuzzel --config=$HOME/.config/fuzzel/fuzzel-startmenu.ini",
-    "on-click-right": "$HOME/.local/bin/reloadwb.sh",
+    "on-click": "fuzzel --config=$HOME/.config/fuzzel/fuzzel-startmenu.ini",
+    "on-click-right": "$HOME/.local/bin/wb reload",
     "tooltip": false
   },
   "hyprland/workspaces": {
-    "format": "{icon}",
+    "on-scroll-down": "hyprctl dispatch workspace r+1",
+    "on-scroll-up": "hyprctl dispatch workspace r-1",
+    "on-click": "$HOME/.config/hypr/scripts/workspace.sh",
+    "format": "{icon} <sub>{windows}</sub>",
+    "format-window-separator": " ",
+    "window-rewrite-default": "",
+    "window-rewrite": {
+      "class<firefox>": "",
+      "class<firefox-bin>": "",
+      "title<.*github.*>": "",
+      "title<.*youtube.*>": "",
+      "title<.*reddit.*>": "",
+      "class<foot>": "",
+      "class<lf.*>": "󱏒",
+      "title<aerc>": "",
+      "class<org.kde.konsole>": "",
+      "class<org.kde.ark>": "",
+      "class<org.kde.gwenview>": "",
+      "class<org.kde.dolphin>": "󰀶",
+      "org.kde.skanlite": "󰚫",
+      "org.rncbc.qpwgraph": "󱡫",
+      "io.github.ilya_zlobintsev.LACT": "󱡭",
+      "Ardour": "󱀞",
+      "krita": "",
+      "gimp": "",
+      "class<Threema.*>": "󰻞",
+      "class<discord>": "",
+      "class<steam>": "",
+    },
     "format-icons": {
-      "1": "",
+      "1": "󰖟",
       "2": "",
       "3": "",
       "4": "",
       "5": "",
-      "6": "",
+      "6": "󰸾",
       "7": "",
       "8": "",
       "9": "",
@@ -58,6 +87,7 @@
     "show-special": true
   },
   "hyprland/window": {
+    "min-length": "100",
     "format": "{title}",
     "rewrite-default": "👉 {title}",
     "rewrite": {
@@ -66,6 +96,9 @@
       "(.*) – Mozilla Firefox": " | $1",
       "(.*) - qutebrowser": " | $1",
       "(.*) - Kakoune": " | $1",
+      "(.*) - Discord": " | $1",
+      "k (.*)": " | $1",
+      "kak (.*)": " | $1",
       "(.*) — Dolphin": " | $1",
       "lfrun(.*)": "󰀶 | $1",
       "Now playing(.*)": " | Now playing $1",
     "format-en": "en",
     "format-de": "de"
   },
-  "niri/workspaces": {
-       "format": "{icon}",
-       "format-icons": {
-               // Named workspaces
-               // (you need to configure them in niri)
-               "1": "",
-               "2": "",
-               "3": "<b></b>",
-
-               // Icons by state
-               "active": "",
-               "default": ""
-       },
-       "niri/window": {
-       "format": "{}",
-       "rewrite": {
-               "(.*) - Mozilla Firefox": "🌎 $1",
-               "(.*) - zsh": "> [$1]"
-         }
-  },
-  "niri/language": {
-    //"format": " <span color='#efefef'>󰌌</span> {} ",
-    "format": " 󰌌 {} ",
-    "format-en": "en",
-    "format-de": "de"
-  }
-},
   "keyboard-state": {
     "numlock": true,
     "capslock": true,
       "unlocked": " "
     }
   },
-  "mpd": {
-    "format": "mpd: {stateIcon} {artist} - {album} - {title} ⸨{songPosition}|{queueLength}⸩ {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}",
-    "format-disconnected": "",
-    "format-paused": "",
-    "format-stopped": "",
-    "unknown-tag": "N/A",
-    "interval": 2,
-    "consume-icons": {
-      "on": " "
-    },
-    "random-icons": {
-      "off": "",
-      "on": " "
-    },
-    "repeat-icons": {
-      "on": " "
-    },
-    "single-icons": {
-      "on": "1 "
-    },
-    "state-icons": {
-      "paused": "",
-      "playing": ""
-    },
-    "tooltip-format": "{artist} - {album} - {title} | {volume}%",
-    "tooltip-format-disconnected": "mpd disconnected!",
-    "on-click": "mpc toggle",
-    "on-click-backward": "mpc stop && playerctld unshift",
-    "on-click-middle": "mpc next",
-    "on-click-right": "mpc prev"
-  },
   "mpris": {
     "format": "{player}: {player_icon} {dynamic}",
     "format-paused": "{status_icon} <i>{dynamic}</i>",
       "stopped": ""
     },
     "ignored-players": [
-      "firefox",
       "mpd"
     ]
   },
-  "mpd#volume": {
-    "format": "{volume} 󱄠",
-    "format-disconnected": "--- 󱄠",
-    "format-stopped": "--- 󱄠",
-    "on-click": "mpc volume 70 > /dev/null 2>&1",
-    "on-click-right": "mpc volume 100 > /dev/null 2>&1",
-    "on-scroll-up": "mpc volume +5 > /dev/null 2>&1",
-    "on-scroll-down": "mpc volume -5 > /dev/null 2>&1"
-  },
   "tray": {
-    "icon-size": 18,
+    "icon-size": 16,
     "spacing": 6,
-    "show-passive-items": false
+    "show-passive-items": true
   },
   "cpu": {
     //"format": "<span color='#efefef'>{usage:2}%</span> ",
         ""
       ]
     },
-    "on-click": "pavucontrol",
+    "on-click": "~/.config/waybar/scripts/sound-source.sh",
+    "on-click-middle": "pavucontrol",
     "on-click-right": "helvum"
   },
   "clock": {
     }
   },
   "custom/notification": {
-    "tooltip": false,
-    "format": "{icon}",
-    "format-icons": {
-      "notification": "<span foreground='green'><sup></sup></span>",
-      "none": "󰣨",
-      "dnd-notification": "<span foreground='red'><sup></sup></span>",
-      "dnd-none": "",
-      "inhibited-notification": "<span foreground='magenta'><sup></sup></span>",
-      "inhibited-none": "",
-      "dnd-inhibited-notification": "<span foreground='magenta'><sup></sup></span>",
-      "dnd-inhibited-none": ""
-    },
-    "return-type": "json",
-    "exec-if": "pidof swaync-client",
-    "exec": "swaync-client -swb",
-    "on-click": "swaync-client -t -sw",
-    "on-click-right": "swaync-client -d -sw",
-    "escape": true
+    "format": "",
+    "on-click": "~/.config/hypr/scripts/powermenu.sh",
+    "on-click-middle": "makoctl restore",
+    "on-click-right": "makoctl dismiss",
   },
   "idle_inhibitor": {
     "format": "{icon} ",
       "deactivated": " off"
     }
   },
-  "custom/wallpaper": {
-    "format": "  ",
-    "on-click": "$HOME/.local/bin/rndwallpaper swww",
-    "tooltip": false,
-    "interval": "once"
-  },
   "custom/gammarelay-temperature": {
     //"format": "<span color='#efefef'>{}</span> ",
     "format": " {}",
       "clock"
     ]
   },
+  "group/sndpwr": {
+    "orientation": "horizontal",
+    "modules": [
+               "wireplumber",
+      "power-profiles-daemon"
+    ]
+  },
   "group/display": {
     "orientation": "horizontal",
     "modules": [
       "temperature#gpu"
     ]
   },
+  "gamemode": {
+    "format": "{glyph}",
+    "format-alt": "{glyph} {count}",
+    "glyph": "",
+    "hide-not-running": true,
+    "use-icon": true,
+    "icon-name": "input-gaming-symbolic",
+    "icon-spacing": 4,
+    "icon-size": 20,
+    "tooltip": true,
+    "tooltip-format": "Games running: {count}"
+  },
+  "power-profiles-daemon": {
+  "format": "{icon}",
+  "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
+  "tooltip": true,
+  "format-icons": {
+    "default": "",
+    "performance": "",
+    "balanced": "",
+    "power-saver": ""
+    }
+  },
+  "custom/mpris": {
+  "exec": "python3 -u ~/.config/waybar/scripts/scrolling-mpris.py",
+  "format": "{text}",
+  "return-type": "json",
+  "on-click": "playerctl play-pause"
+       },
   "custom/pipespacer": {
     "format": "󰇙",
     "max-length": 1,
diff --git a/dot-config/waybar/scripts/scrolling-mpris.py b/dot-config/waybar/scripts/scrolling-mpris.py
new file mode 100755 (executable)
index 0000000..f406a0c
--- /dev/null
@@ -0,0 +1,89 @@
+import subprocess
+import time
+import json
+import sys
+
+# Customization settings (easy to modify)
+GLYPH_FONT_FAMILY="ZedMono NFP" # Set to your desired symbols font
+# Those are glyphs that will be always visible at left side of module.
+GLYPHS = {
+    "paused": "",
+    "playing": "",
+    "stopped": ""
+}
+DEFAULT_GLYPH = ""  # Glyph when status is unknown or default
+TEXT_WHEN_STOPPED = "Nothing playing right now"  # Text to display when nothing is playing
+SCROLL_TEXT_LENGTH = 25  # Length of the song title part (excludes glyph and space)
+REFRESH_INTERVAL = 0.4  # How often the script updates (in seconds)
+PLAYERCTL_PATH = "/usr/bin/playerctl" # Path to playerctl, use which playerctl to find yours.
+
+# Function to get player status using playerctl
+def get_player_status():
+    try:
+        result = subprocess.run([PLAYERCTL_PATH, 'status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        status = result.stdout.decode('utf-8').strip().lower()
+        if result.returncode != 0 or not status:
+            return "stopped"  # Default to stopped if no status
+        return status
+    except Exception as e:
+        return "stopped"
+
+# Function to get currently playing song using playerctl
+def get_current_song():
+    try:
+        result = subprocess.run([PLAYERCTL_PATH, 'metadata', 'title'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        song_title = result.stdout.decode('utf-8').strip()
+        if result.returncode != 0 or not song_title:
+            return None  # Return None if no song is playing or an error occurred
+        return song_title
+    except Exception as e:
+        return None
+
+# Function to generate scrolling text with fixed length
+def scroll_text(text, length=SCROLL_TEXT_LENGTH):
+    text = text.ljust(length)  # Ensure the text is padded to the desired length
+    scrolling_text = text + ' ' + text[:length]  # Add space and repeat start for scrolling effect
+    
+    for i in range(len(scrolling_text) - length):
+        yield scrolling_text[i:i + length]  # Use a generator to yield scrolling parts
+
+if __name__ == "__main__":
+    scroll_generator = None
+    
+    while True:
+        output = {}
+        
+        try:
+            # Get the player status and song title
+            status = get_player_status()
+            song = get_current_song()
+
+            # Get the glyph based on player status
+            glyph = GLYPHS.get(status, DEFAULT_GLYPH)
+
+            if song:
+                if len(song) > SCROLL_TEXT_LENGTH:  # Adjusted for fixed glyph space
+                    if scroll_generator is None:
+                        scroll_generator = scroll_text(song)  # Initialize the generator
+                    try:
+                        song_text = next(scroll_generator)
+                    except StopIteration:
+                        scroll_generator = scroll_text(song)
+                        song_text = next(scroll_generator)
+                else:
+                    song_text = song.ljust(SCROLL_TEXT_LENGTH)  # Ensure the song title is padded
+                    scroll_generator = None
+            else:
+                song_text = TEXT_WHEN_STOPPED.ljust(SCROLL_TEXT_LENGTH)  # Ensure fixed length when stopped
+
+            # Combine glyph and song text with a fixed space
+            output['text'] = f"<span font_family='{GLYPH_FONT_FAMILY}'>{glyph}</span> {song_text}"
+
+        except Exception as e:
+            output['text'] = f" Error: {str(e)}".ljust(SCROLL_TEXT_LENGTH + 2)  # Show error with stop symbol
+
+        # Print the JSON-like output
+        print(json.dumps(output), end='\n')
+
+        time.sleep(REFRESH_INTERVAL)
+
diff --git a/dot-config/waybar/scripts/sound-source.sh b/dot-config/waybar/scripts/sound-source.sh
new file mode 100755 (executable)
index 0000000..a02f153
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+sinks=$(pactl list short sinks | awk 'BEGIN {FS="\t"}; {print $2}' | fuzzel -d --config="$HOME"/.config/fuzzel/fuzzel-centered.ini )
+
+pactl set-default-sink "$sinks"
+
index 9a0a515438dbbee51de79f54f2abe76a487621db..2396bc613d928dd6a2749365c7ca7567f6e9d59a 100644 (file)
@@ -8,14 +8,12 @@
     font-size: 12pt;
     min-height: 7px;
     font-weight: bold;
-    padding: 0;
-    margin: 0;
+    padding: 0px;
+    margin: 0px;
 }
 
 /* -----------------------------------  waybar ----------------------------------- */
 #waybar {
-    border-radius: 0px 0px 8px 8px;
-    /*border: 1px @base00;*/
     border: none;
     color: @base05;
     background-color: transparent;
     padding-left: 0px;
     padding-right: 0px;
     padding-bottom: 0px;
-    background: none;
+    margin-left: 10px;
+    margin-right: 10px;
+    margin-top: 5px;
+    margin-bottom: 0px;
+    border: 2px solid alpha(@base03, 0.45);
+    background: alpha(@base00, 0.45);
+    border-radius: 5px;
 }
 
 tooltip {
@@ -42,24 +46,22 @@ tooltip label {
 
 /* ------------------------------------ workspaces begin ------------------------------ */
 #workspaces {
-    border-radius: 0px;
     padding-left: 5px;
     padding-right: 5px;
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 5px;
-    margin-left: 10px;
     background: alpha(@base01, 1.00);
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base04, 0.4);
+    border: 1px solid @base02;
+    border-radius: 5px 5px 5px 5px;
+    margin-top: 2px;
+    margin-left: 2px;
+    margin-right: 1px;
+    margin-bottom: 2px;
 }
 
 #workspaces button {
     border-radius: 8px;
     background: @base03;
-    color: @base00;
+    color: @base05;
     border: 1px solid @base03;
     padding: 0 8px;
     margin-top: 2px;
@@ -71,12 +73,14 @@ tooltip label {
 
 #workspaces button:hover {
     background: alpha(@base07, 1.0);
+    color: @base00;
 }
 
-#workspaces button.focused:hover,
-#workspaces button.active:hover {
+#workspaces button.focused:hover {
     background: alpha(@base07, 0.7);
-    border-color: alpha(@base07, 0.9);
+}
+
+#workspaces button.active:hover {
 }
 
 #workspaces button.focused,
@@ -87,6 +91,7 @@ tooltip label {
     padding: 0 8px;
     color: @base00;
     transition: all 0.3s ease;
+
 }
 
 #workspaces button.urgent {
@@ -97,19 +102,76 @@ tooltip label {
     transition: all 0.3s ease;
 }
 
+
+#taskbar {
+    padding-left: 5px;
+    padding-right: 5px;
+    border-radius: 0px 0px 4px 4px;
+    background: alpha(@base01, 0.80);
+    border: 1px solid @base02;
+    border-radius: 5px 5px 5px 5px;
+    margin-top: 2px;
+    margin-left: 2px;
+    margin-right: 1px;
+    margin-bottom: 2px;
+}
+
+#taskbar button {
+    border-radius: 16px;
+    background: @base03;
+    color: @base00;
+    border: 1px solid @base03;
+    padding: 0 8px;
+    margin-top: 2px;
+    margin-left: 1px;
+    margin-right: 1px;
+    margin-bottom: 2px;
+    transition: all 0.3s ease;
+}
+
+#taskbar button:hover {
+    background: alpha(@base07, 1.0);
+}
+
+#taskbar button.focused:hover,
+#taskbar button.active:hover {
+    background: alpha(@base07, 0.7);
+    border-color: alpha(@base07, 0.9);
+}
+
+#taskbar button.focused,
+#taskbar button.active {
+    border-radius: 16px;
+    background: @base0C;
+    border: 1px solid @base0C;
+    padding: 0 8px;
+    color: @base00;
+    transition: all 0.3s ease;
+
+}
+
+#taskbar button.urgent {
+    border-radius: 16px;
+    background: @base0A;
+    border: 1px solid @base02;
+    color: @base00;
+    transition: all 0.3s ease;
+}
+
+
 #window {
     padding-left: 10px;
     padding-right: 10px;
     color: @base05;
     background-color: alpha(@base01, 1.0);
-    border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base04, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base02;
+    border-radius: 5px 5px 5px 5px;
+    margin-top: 2px;
+    margin-left: 2px;
+    margin-right: 1px;
+    margin-bottom: 2px;
 }
 
 window#waybar {
@@ -129,18 +191,14 @@ window#waybar {
 #custom-launcher {
     padding-left: 10px;
     padding-right: 10px;
-    margin-top: 0px;
-    margin-left: 0px;
+    margin-top: 2px;
+    margin-left: 2px;
     margin-right: 1px;
-    margin-bottom: 5px;
+    margin-bottom: 2px;
     color: @base00;
     background: @base09;
-    border-top: none;
-    border-left: none;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: @base01;
-    border-radius: 0px 0px 8px 0px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #custom-launcher:hover {
@@ -150,18 +208,14 @@ window#waybar {
 #custom-notification {
     padding-left: 10px;
     padding-right: 10px;
-    margin-top: 0px;
+    margin-top: 2px;
     margin-left: 1px;
-    margin-right: 0px;
-    margin-bottom: 5px;
+    margin-right: 2px;
+    margin-bottom: 2px;
     color: @base00;
     background: @base09;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: @base01;
-    border-radius: 0px 0px 0px 8px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #custom-notification:hover {
@@ -175,21 +229,23 @@ window#waybar {
     background-color: alpha(@base0D, 0.1);
     border: none;
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0D, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #mpris {
-    padding-left: 8px;
-    padding-right: 8px;
-    color: @base00;
-    background: none;
+    padding-left: 4px;
+    padding-right: 4px;
+    color: @base0D;
+    background-color: alpha(@base0D, 0.1);
     border: none;
+    border-radius: 0px 0px 4px 4px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #submap {
@@ -199,13 +255,10 @@ window#waybar {
     color: @base00;
     background-color: alpha(@base0A, 0.9);
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 2px solid;
-    border-right: 2px solid;
-    border-bottom: 2px solid;
-    border-color: alpha(@base00, 0.9);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 /* ------------------------------------ sysmon group begin ------------------------------ */
@@ -216,13 +269,12 @@ window#waybar {
     background-color: alpha(@base01, 1.0);
     border: none;
     border-radius: 0px 0px 0px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0B, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 0px 0px 8px;
 }
 
 #custom-gpuusage {
@@ -230,14 +282,10 @@ window#waybar {
     padding-right: 6px;
     color: @base0B;
     background-color: alpha(@base01, 1.0);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
     border-radius: 0px 0px 0px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0B, 0.4);
 }
 
 #temperature,
@@ -249,14 +297,10 @@ window#waybar {
     padding-right: 6px;
     color: @base0B;
     background-color: alpha(@base01, 1.0);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
     border-radius: 0px 0px 0px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0B, 0.4);
 }
 
 #temperature.critical,
@@ -269,8 +313,8 @@ window#waybar {
     color: @base08;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 0px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
+    margin-top: 2px;
+    margin-bottom: 2px;
     border-top: none;
     border-left: none;
     border-right: none;
@@ -284,14 +328,10 @@ window#waybar {
     color: @base0B;
     background-color: alpha(@base01, 1.0);
     border: none;
-    border-radius: 0px 0px 4px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0B, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 0px 8px 8px 0px;
 }
 
 /* ------------------------------------ sysmon group end ------------------------------ */
@@ -303,14 +343,12 @@ window#waybar {
     color: @base00;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 0px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base04, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 0px 0px 8px;
 }
 
 #clock {
@@ -320,13 +358,12 @@ window#waybar {
     color: @base07;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 4px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base04, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 0px 8px 8px 0px;
 }
 
 /* ------------------------------------ trayclock group end ------------------------------ */
@@ -338,13 +375,12 @@ window#waybar {
     color: @base0A;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 0px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0A, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 0px 0px 8px;
 }
 
 #custom-gammarelay-temperature,
@@ -355,13 +391,12 @@ window#waybar {
     color: @base0A;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 0px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: none;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0A, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 0px 0px 0px 0px;
 }
 
 #language {
@@ -370,13 +405,12 @@ window#waybar {
     color: @base0A;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 4px 0px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: none;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0A, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 0px 8px 8px 0px;
 }
 
 /* ------------------------------------ display group end ------------------------------ */
@@ -384,18 +418,26 @@ window#waybar {
 /* ------------------------------------ modules bulk config ------------------------------ */
 #wireplumber {
     padding-left: 6px;
-    padding-right: 6px;
+    padding-right: 4px;
     color: @base0C;
     background-color: alpha(@base01, 1.0);
     border: none;
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base0C, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 0px 0px 8px;
+}
+
+#power-profiles-daemon {
+    padding-left: 4px;
+    padding-right: 6px;
+    color: @base0C;
+    background-color: alpha(@base01, 1.0);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 0px 8px 8px 0px;
 }
 
 #network {
@@ -405,28 +447,52 @@ window#waybar {
     background-color: alpha(@base01, 1.0);
     border: none;
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base09, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
+}
+
+#gamemode {
+    padding-left: 6px;
+    padding-right: 2px;
+    color: @base08;
+    background-color: alpha(@base01, 1.0);
+    border: none;
+    border-radius: 0px 0px 4px 4px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
+}
+
+#custom-mpris {
+    padding-left: 4px;
+    padding-right: 4px;
+    color: @base0D;
+    background-color: alpha(@base01, 1.0);
+    border: none;
+    border-radius: 0px 0px 4px 4px;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #custom-powermenu {
     padding-left: 4px;
     padding-right: 4px;
-    color: @base09;
+    color: @base0C;
     background-color: alpha(@base01, 1.0);
     border-radius: 0px 0px 4px 4px;
-    margin-top: 0px;
-    margin-bottom: 4px;
-    border-top: none;
-    border-left: 1px solid;
-    border-right: 1px solid;
-    border-bottom: 1px solid;
-    border-color: alpha(@base09, 0.4);
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px solid @base01;
+    border-radius: 8px 8px 8px 8px;
 }
 
 #custom-pipespacer {