{ config, pkgs, lib, ... }: { programs.waybar = { enable = true; settings = { mainBar = { layer = "top"; position = "top"; height = 30; output = [ "eDP-1" "DP-5" "DP-6" ]; modules-left = [ "custom/logo" "hyprland/workspaces" "tray" ]; modules-center = [ "clock" ]; modules-right = [ "network" "idle_inhibitor" "bluetooth" "battery" "custom/notification" ]; "custom/logo" = { format = ""; tooltip = false; on-click = "wlogout"; on-click-right = "alacritty -e fish -C fastfetch"; }; "hyprland/workspaces" = { disable-scroll = true; all-outputs = true; format = "{name}"; }; "clock" = { format = "{:%a %d/%m %H:%M}"; tooltip-format = "{:%Y-%m-%d}"; }; "idle_inhibitor" = { format = "{icon}"; format-icons = { activated = " "; deactivated = " "; }; tooltip = true; tooltip-format-activated = "Inhibitor Aktiv"; tooltip-format-deactivated = "Idle Aktiv"; }; "custom/audio_idle_inhibitor" = { format = "{icon}"; exec = "sway-audio-idle-inhibit --dry-print-both-waybar | sed -u 's/\"alt\":\"output-input\"/&,\"tooltip\":\"Audio \\& Mikrofon aktiv\"/; s/\"alt\":\"output\"/&,\"tooltip\":\"Audio spielt\"/; s/\"alt\":\"input\"/&,\"tooltip\":\"Mikrofon wird benutzt\"/; s/\"alt\":\"none\"/&,\"tooltip\":\"Keine Aktivität\"/'"; "exec-if" = "which sway-audio-idle-inhibit"; "return-type" = "json"; tooltip = true; format-icons = { output = " "; input = ""; "output-input" = " "; none = ""; }; }; "tray" = { icon-size = 18; spacing = 10; }; "network" = { format-wifi = " {essid}"; format-ethernet = " {ifname}"; format-linked = "󰌘{ipaddr}"; format = "{essid}"; format-disconnected = "󰤮 no wifi"; on-click = "${pkgs.alacritty}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; on-click-right = "nmcli radio wifi $(nmcli radio wifi | grep -q 'enabled' && echo off || echo on)"; tooltip-format = " {bandwidthUpBits}  {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n"; tooltip-format-wifi = " {essid} {frequency}MHz\nStrength: {signalStrength}% ({signaldBm}dBm)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}"; interval = 10; }; "backlight" = { device = "intel_backlight"; format = "{icon}"; format-alt = "{percent}%"; format-alt-click = "click-right"; format-icons = ["" "" "" "" "" "" "" "" ""]; tooltip-format = " Helligkeit: {percent}%"; on-scroll-down = "brightnessctl s 5%-"; on-scroll-up = "brightnessctl s +5%"; }; "bluetooth" = { format = ""; format-disabled = "󰂲"; format-connected = "󰂱{device_alias}"; format-connected-battery = "󰂱{device_alias} {device_battery_percentage}%"; tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} verbunden\n\n{device_enumerate}"; tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; on-click = "alacritty -e bluetui"; on-click-right = "rfkill toggle bluetooth"; }; "pulseaudio" = { format = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%"; format-muted = "󰖁"; format-icons = { headphone = ""; hands-free = ""; headset = ""; phone = ""; portable = ""; car = ""; default = ["" "" ""]; }; on-click = "pavucontrol"; on-click-right = "pactl set-sink-mute @DEFAULT_SINK@ toggle"; tooltip-format = "Ausgabelautstärke: {source_volume}% | {desc}"; }; "pulseaudio#microphone" = { format = "{format_source}"; format-source = " {volume}%"; format-source-muted = ""; on-click = "pavucontrol"; on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+"; on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"; tooltip-format = "Eingabelautstärke: {source_volume}% | {source_desc}"; scroll-step = 5; }; "battery" = { interval = 5; format = "{icon}"; format-alt = "{capacity}%"; format-alt-click = "click-right"; format-icons = [ "" "" "" "" "" ]; format-charging = "{icon}"; format-plugged = "{icon}"; tooltip-format = "Akkustand: {capacity}% - {timeTo} - {power}W "; on-click = "alacritty -e btop"; states = { full = 100; great = 97; good = 85; ok = 50; warning = 30; low = 20; critical = 10; }; }; "custom/notification" = { tooltip = false; format = "{icon}"; format-icons = { notification = ""; none = ""; dnd-notification = ""; dnd-none = ""; }; return-type = "json"; exec = "swaync-client -swb"; on-click = "swaync-client -t -sw"; on-click-right = "swaync-client -d -sw"; escape = true; }; }; }; style = lib.replaceStrings ["#workspaces button.focused"] ["#workspaces button.active"] '' @import "${config.home.homeDirectory}/.config/matugen/colors.css"; * { border: none; border-radius: 0; padding: 0; margin: 0; font-size: 13px; font-family: "JetBrainsMono Nerd Font", "NotoSans Nerd Font Mono"; font-weight: bold; } tooltip { background: @background; color: @foreground; border: 1px solid @primary; border-radius: 10px; } tooltip label { color: @foreground; padding: 5px; } window#waybar { background: @background; color: @foreground; border-bottom: 2px solid @primary; } #custom-logo { font-size: 20px; margin: 0 15px; color: @primary; } #workspaces button { padding: 0 0px; margin-right: 4px; color: @foreground; background: transparent; } #workspaces button:hover { background: @surface_container_high; color: @foreground; border-bottom: 2px solid @primary; } #workspaces button.active { background: @surface_container_high; color: @primary; border-bottom: 2px solid @primary; } #workspaces button.urgent { background-color: @urgent; color: @background; } #mode { background-color: @secondary; color: @background; padding: 0 5px; } #network { padding-right: 5px; padding-left: 5px; } #clock, #language, #custom-notification, #backlight, #pulseaudio, #bluetooth, #tray { margin: 0 5px; color: @foreground; } #custom-notification { margin-right: 15px; margin-left: 5px; color: @foreground; } #custom-audio_idle_inhibitor { margin-left: 5px; margin-right: 5px; color: @foreground; } #idle_inhibitor { margin-right: 5px; margin-left: 7px; color: @foreground; font-size: 13px; } #idle_inhibitor.activated { animation: blink-icon 2s infinite alternate; color: @primary; } @keyframes blink-icon { from { color: @primary; } to { color: transparent; } } #battery { margin-top: 0; margin-bottom: 0; margin-left: 5px; margin-right: 12px; color: @foreground; } #battery.charging, #battery.plugged { margin: 0 5px; color: @foreground; } #battery.ok:not(.charging) { animation: blink-icon 3s infinite alternate; } @keyframes blink-icon-yellow { from { color: yellow; } to { color: transparent; } } #battery.warning:not(.charging) { animation: blink-icon-yellow 1.5s infinite alternate; } @keyframes blink-icon-orange { from { color: orange; } to { color: transparent; } } #battery.low:not(.charging) { color: orange; animation: blink-icon-orange 0.8s infinite alternate; } @keyframes blink-icon-red { from { color: red; } to { color: transparent; } } #battery.critical:not(.charging) { animation: blink-icon-red 0.3s infinite alternate; } ''; }; }