{ pkgs, config, ... }: let terminalExec = "${pkgs.lib.getExe config.defaultPrograms.terminal} -e"; in { programs.waybar = { enable = true; settings = [{ modules-left = [ "sway/workspaces" ]; modules-right = [ "pulseaudio" "bluetooth" "network" "cpu" "memory" "disk" "battery" "tray" "sway/language" "clock" ]; "sway/workspaces" = { enable-bar-scroll = true; disable-scroll-wraparound = true; smooth-scrolling-threshold = 2.0; }; pulseaudio = { format = "{volume}% {icon} {format_source}"; format-bluetooth = "{volume}% {icon}īŠ” {format_source}"; format-muted = "{volume}% 🔇 {format_source}"; format-source = "{volume}% 🎤"; format-source-muted = "{volume}% 🙊"; format-icons = [ "🔈" "🔊" ]; on-click = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; on-click-right = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; on-click-middle = "exec pavucontrol"; on-scroll-up = ""; on-scroll-down = ""; }; network = { format-wifi = "{essid} ({signalStrength}%) "; format-ethernet = "{ipaddr}/{cidr} "; tooltip-format = "{ifname} via {gwaddr}"; format-linked = "{ifname} (No IP)"; format-disconnected = "Disconnected ⚠"; format-alt = "{ifname}: {ipaddr}/{cidr}"; on-click-right = "exec ${terminalExec} nmtui"; }; bluetooth = { format = "đŸ”ĩđŸĻˇ {status}"; format-disabled = ""; # hide module format-connected = "đŸ”ĩđŸĻˇ {num_connections}"; tooltip-format = "{controller_alias} {controller_address}"; tooltip-format-connected = '' {controller_alias} {controller_address} {device_enumerate}''; tooltip-format-enumerate-connected = "{device_alias} {device_address}"; on-click = "exec blueman-manager"; on-click-right = "exec bluetoothctl disconnect"; }; cpu = { format = "{usage}% 📈"; }; memory = { format = "{used:0.1f}GB/{total:0.1f}GB 💾"; }; disk = { format = "{used} đŸ’Ŋ"; path = "/"; }; battery = { states = { good = 95; warning = 20; critical = 10; }; format = "{capacity}% {icon}"; format-charging = "{capacity}% ⚡"; format-plugged = "{capacity}% 🔌"; # format-alt = "{time} {icon}"; format-icons = [ "đŸĒĢ" "🔋" ]; on-click = ""; }; tray = { icon-size = 20; spacing = 5; }; "sway/language" = { format = "{shortDescription}"; tooltip-format = "{long}"; on-click = ''swaymsg input "*" xkb_switch_layout next''; }; clock = { interval = 1; format = "{:L%H:%M:%S %a %F}"; locale = "fr_CA.utf8"; # TODO fix this; I don't want it to be hardcoded but rather tied to i18n.defaultLocale tooltip-format = '' {:L%Y %B} {calendar}''; }; }]; style = '' * { font-family: Rubik, "OpenMoji Color", sans-serif; font-size: 12pt; min-height: 20pt; } '' + '' window#waybar { background: rgba(34, 34, 34, 1); color: white; } '' + '' #workspaces button { padding: 0 3px; background: rgba(34, 34, 34, 1); border-style: hidden; border-radius: 0; color: white; } '' + '' #workspaces button.focused { background: rgba(40, 85, 119, 1); } .modules-right label, .modules-right box { border-left: 1px solid #d3d3d3; padding-left: 5px; padding-right: 5px; } '' + '' #battery.warning:not(.charging) { background: rgba(140, 0, 0, 1); } #battery.critical:not(.charging) { background: #ffffff; color: black; } '' + '' #language { min-width: 30px; } '' + ""; }; wayland.windowManager.sway.config.bars = [{ command = "${pkgs.lib.getExe config.programs.waybar.package}"; position = "top"; fonts = config.wayland.windowManager.sway.config.fonts; }]; }