diff --git a/stow/.config/waybar/config.jsonc b/stow/.config/waybar/config.jsonc index 21128e4..fc1772e 100644 --- a/stow/.config/waybar/config.jsonc +++ b/stow/.config/waybar/config.jsonc @@ -1,194 +1,215 @@ -// -*- mode: jsonc -*- +// waybar taken from: https://github.com/gmr458/.dotfiles/tree/main/waybar/.config/waybar + { - "layer": "top", // Waybar at top layer - "position": "left", // Waybar position (top|bottom|left|right) - // "height": 30, // Waybar height (to be removed for auto height) - "width": 15, // Waybar width - "spacing": 4, // Gaps between modules (4px) - // Choose the order of the modules + "layer": "top", + "position": "left", + "width": 24, + "margin-top": 0, + "margin-bottom": 0, + "margin-left": 0, + "margin-right": 0, + "spacing": 0, + "gtk-layer-shell": true, "modules-left": [ - "hyprland/workspaces" -// "custom/media" + "custom/notification", + // "backlight/slider", + "backlight", + "pulseaudio/slider", + "pulseaudio#audio", + "network" +// "bluetooth" ], -// "modules-center": [ -// "hyprland/window" -// ], - "modules-right": [ -// "mpd", -// "idle_inhibitor", -// "pulseaudio", -// "power-profiles-daemon", -// "cpu", -// "memory", -// "temperature", -// "backlight", -// "keyboard-state", -// "sway/language", - "network", - "wireplumber", - "battery", - "tray", - "clock" - ], - // Modules configuration - // "sway/workspaces": { - // "disable-scroll": true, - // "all-outputs": true, - // "warp-on-scroll": false, - // "format": "{name}: {icon}", - // "format-icons": { - // "1": "", - // "2": "", - // "3": "", - // "4": "", - // "5": "", - // "urgent": "", - // "focused": "", - // "default": "" - // } - // }, - "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}" - }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", - "interval": 5, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { + "custom/notification": { + "tooltip": false, "format": "{icon}", "format-icons": { - "activated": "", - "deactivated": "" - } + "notification": "󱅫", + "none": "󰂚", + "dnd-notification": "󰂛", + "dnd-none": "󰂛", + "inhibited-notification": "󱅫", + "inhibited-none": "󰂚", + "dnd-inhibited-notification": "󰂛", + "dnd-inhibited-none": "󰂛" + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "escape": true }, - "tray": { - // "icon-size": 21, - "spacing": 10 + // "backlight/slider": { + // "min": 1, + // "max": 100, + // "orientation": "vertical" + // }, + "backlight": { + "format": "{icon}", + "format-icons": ["󰃟"], + "on-scroll-up": "brightnessctl set +5%", + "on-scroll-down": "brightnessctl set 5%-", + "on-click": "", + "tooltip": true, + "tooltip-format": "{percent}%" }, - "clock": { - // "timezone": "America/New_York", - "format": "{:%H\n%M}", - "format-alt": "{:%Y-%m-%d}" + "pulseaudio/slider": { + "min": 0, + "max": 100, + "orientation": "vertical" }, - "cpu": { - "format": "{usage}% ", + "pulseaudio#audio": { + "format": "{icon}", + "format-bluetooth": "󰂯\n{icon}", + "format-bluetooth-muted": "󰂯\n󰖁", + "format-muted": "󰖁", + "format-icons": { + "headphone": "󰋋", + "hands-free": "󰋋", + "headset": "󰋋", + "phone": "", + "portable": "", + "car": "", + "default": ["󰕿", "󰖀", "󰕾"] + }, + "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle", + "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%", + "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%", + "tooltip": true, + "tooltip-format": "{icon} {desc} {volume}%" + }, + "pulseaudio#microphone": { + "format": "{format_source}", + "format-source": "󰍬 {volume}%", + "format-source-muted": "󰍭 {volume}%", + "on-click": "pactl set-source-mute @DEFAULT_SOURCE@ toggle", + "on-scroll-up": "pactl set-source-volume @DEFAULT_SOURCE@ +1%", + "on-scroll-down": "pactl set-source-volume @DEFAULT_SOURCE@ -1%", + "max-volume": 100, "tooltip": false }, + "network": { + "interval": 1, + "interface": "wlo1", + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], + "format-wifi": "{icon}", + "format-disconnected": "", + "on-click": "nm-connection-editor", + "tooltip": true, + "tooltip-format": "󰢮 {ifname}\n󰩟 {ipaddr}/{cidr}\n{icon} {essid}\n󱑽 {signalStrength}% {signaldBm} dBm {frequency} MHz\n󰞒 {bandwidthDownBytes}\n󰞕 {bandwidthUpBytes}" + }, + "bluetooth": { + "format-disabled": "", + "format-off": "", + "format-on": "󰂯", + "format-connected": "󰂯", + "format-connected-battery": "󰂯", + "tooltip-format-connected": "{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias} 󰂄{device_battery_percentage}% {device_address}", + "on-click": "blueman-manager", + "tooltip": true + }, + "modules-center": [ + "hyprland/workspaces", + "hyprland/submap", + "sway/workspaces", + "sway/mode" + ], + "hyprland/workspaces": { + "format": "{icon}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "default": "1" + }, + "on-click": "activate" + }, + "hyprland/submap": { + "format": "{}", + "tooltip": false + }, + "hyprland/window": { + "format": " {:.40} ", + "separate-outputs": false + }, + "sway/workspaces": { + "format": "{icon}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "default": "1" + }, + "on-click": "activate" + }, + "sway/mode": { + "format": "{}", + "tooltip": false + }, + "wlr/taskbar": { + "format": "{icon}", + "active-first": true + }, + "modules-right": [ + // "pulseaudio#microphone", + // "battery" + "tray", + "memory", + "cpu", + "clock" + ], + "tray": { + "icon-size": 14, + "spacing": 8 + }, + "cpu": { + "format": "󰻠", + "on-click": "", + "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": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] + "format": "󰍛", + "tooltip-format": "󰍛 Total: {total:0.1f}GB, Avail: {avail:0.1f}GB, Used: {used:0.1f}GB ({percentage}%)\n󰓡 Total: {swapTotal:0.1f}GB, Avail: {swapAvail:0.1f}GB, Used: {swapUsed:0.1f}GB ({swapPercentage}%)", + "on-click": "", + "tooltip": true }, "battery": { "states": { - // "good": 95, "warning": 30, "critical": 15 }, - "format": "{icon}", - "format-full": "{icon}", - "format-charging": "", - "format-plugged": "", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] + "format": "{icon} {capacity}%", + "format-charging": "󰂄 {capacity}%", + "format-plugged": "󱘖 {capacity}%", + "format-icons": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + "on-click": "", + "tooltip": false }, - "wireplumber": { - "format": "{icon}", - "format-muted": "", - "tooltip-format": "{volume}% on {node_name}", - "on-click": "helvum", - "max-volume": 100, - "scroll-step": 1, - "format-icons": ["", "", ""] - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - //"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}" - "format-wifi": "", - "format-ethernet": "", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "", - "format-disconnected": "⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" - }, - "custom/media": { - "format": "{icon} {text}", - "return-type": "json", - "max-length": 40, - "format-icons": { - "spotify": "", - "default": "🎜" - }, - "escape": true, - "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder - // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name - }, - "custom/power": { - "format" : "⏻ ", - "tooltip": false, - "menu": "on-click", - "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder - "menu-actions": { - "shutdown": "shutdown", - "reboot": "reboot", - "suspend": "systemctl suspend", - "hibernate": "systemctl hibernate" - } + "clock": { + "interval": 1, + "format": "󰥔\n{:%I\n%M\n}", + "format-alt": "󰣆\n{:%d\n%m\n%y\n󰥔\n%I\n%M\n}", + "tooltip": true, + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "format": { + "today": "{}" + } + } } } diff --git a/stow/.config/waybar/style.css b/stow/.config/waybar/style.css index e4c48fd..3799565 100644 --- a/stow/.config/waybar/style.css +++ b/stow/.config/waybar/style.css @@ -1,159 +1,204 @@ -@define-color text #c0caf5; -@define-color background #24283b; -@define-color backgroundalt #181b29; +@define-color white #F2F2F2; +@define-color black #000203; +@define-color text #BECBCB; +@define-color lightgray #686868; +@define-color darkgray #353535; +@define-color red #F38BA8; -@define-color black #1d202f; -@define-color red #f7768e; -@define-color green #9ece6a; -@define-color yellow #e0af68; -@define-color blue #7aa2f7; -@define-color purple #bb9af7; -@define-color cyan #7dcfff; -@define-color gray #a9b1d6; +@define-color black-transparent-1 rgba(0, 0, 0, 0.1); +@define-color black-transparent-2 rgba(0, 0, 0, 0.2); +@define-color black-transparent-3 rgba(0, 0, 0, 0.3); +@define-color black-transparent-4 rgba(0, 0, 0, 0.4); +@define-color black-transparent-5 rgba(0, 0, 0, 0.5); +@define-color black-transparent-6 rgba(0, 0, 0, 0.6); +@define-color black-transparent-7 rgba(0, 0, 0, 0.7); +@define-color black-transparent-8 rgba(0, 0, 0, 0.8); +@define-color black-transparent-9 rgba(0, 0, 0, 0.9); +@define-color black-solid rgba(0, 0, 0, 1.0); * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 16px; + font-family: + Iosevka, + Material Design Icons Desktop; + font-size: 13px; + padding: 0; + margin: 0; } window#waybar { - background-color: @background; + background-color: @black-transparent-9; color: @text; - transition-property: background-color; - transition-duration: .5s; -} - -window#waybar.hidden { - opacity: 0.2; -} - -/* -window#waybar.empty { - background-color: transparent; -} -window#waybar.solo { - background-color: #FFFFFF; -} -*/ - -button { - /* Use box-shadow instead of border so the text isn't offset */ - box-shadow: inset 0 -3px transparent; - /* Avoid rounded borders under each button name */ - border: none; border-radius: 0; } -/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ -button:hover { - background: inherit; - box-shadow: @backgroundalt; +tooltip { + background: @black-solid; + border: 1px solid @darkgray; + border-radius: 0; } - -/* you can set a style on hover for any module like this */ -#pulseaudio:hover { - background-color: #a37800; -} - -#workspaces button { - padding: 0 5px; - background-color: transparent; - color: #ffffff; -} - -#workspaces button:hover { - background: rgba(0, 0, 0, 0.2); - color: @red; -} - -#workspaces button.focused { - background-color: #64727D; - box-shadow: inset 0 -3px #ffffff; -} - -#workspaces button.urgent { - background-color: @yellow; -} - -#clock, -#battery, -#cpu, -#memory, -#disk, -#temperature, -#backlight, -#network, -#pulseaudio, -#wireplumber, -#custom-media, -#tray, -#mode, -#idle_inhibitor, -#scratchpad, -#power-profiles-daemon, -#mpd { - padding: 0 10px; - color: #ffffff; +tooltip label { + color: @text; } #workspaces { +} + +#workspaces button { + background-color: transparent; + color: @lightgray; + transition: all 0.3s ease; +} + +#workspaces button:hover { + box-shadow: inherit; + text-shadow: inherit; + background: transparent; + border: 1px solid rgba(0, 0, 0, 0); + color: @white; + transition: all 0.3s ease; +} + +#workspaces button.focused, +#workspaces button.active { + color: @white; + transition: all 0.3s ease; + animation: colored-gradient 10s ease infinite; +} + +#workspaces button.urgent { + background-color: @red; + color: @black; + transition: all 0.3s ease; +} + +/* -------------------------------------------------------------------------------- */ + +#submap, +#mode, +#tray, +#cpu, +#memory, +#backlight, +#pulseaudio.audio, +#pulseaudio.microphone, +#network.wlo1, +#network.eno1, +#bluetooth, +#battery, +#clock, +#mpd, +#custom-media, +#custom-notification { + background-color: transparent; + color: @text; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 0; + margin-right: 0; + border-radius: 20px; + transition: all 0.3s ease; +} + +#submap { + border: 0; +} + +/* -------------------------------------------------------------------------------- */ + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces button, +.modules-left > widget:first-child > #tray, +.modules-left > widget:first-child > #cpu, +.modules-left > widget:first-child > #memory, +.modules-left > widget:first-child > #backlight, +.modules-left > widget:first-child > #pulseaudio.audio, +.modules-left > widget:first-child > #pulseaudio.microphone, +.modules-left > widget:first-child > #network.wlo1, +.modules-left > widget:first-child > #network.eno1, +.modules-left > widget:first-child > #bluetooth, +.modules-left > widget:first-child > #battery, +.modules-left > widget:first-child > #clock, +.modules-left > widget:first-child > #custom-notification { + margin-top: 4px; +} + +.modules-right > widget:last-child > #workspaces button, +.modules-right > widget:last-child > #tray, +.modules-right > widget:last-child > #cpu, +.modules-right > widget:last-child > #memory, +.modules-right > widget:last-child > #backlight, +.modules-right > widget:last-child > #pulseaudio.audio, +.modules-right > widget:last-child > #pulseaudio.microphone, +.modules-right > widget:last-child > #network.wlo1, +.modules-right > widget:last-child > #network.eno1, +.modules-right > widget:last-child > #bluetooth, +.modules-right > widget:last-child > #battery, +.modules-right > widget:last-child > #clock, +.modules-right > widget:last-child > #custom-notification { margin-bottom: 4px; } -/* If workspaces is the leftmost module, omit left margin */ -.modules-left > widget:first-child > #workspaces { - margin-left: 0; +/* -------------------------------------------------------------------------------- */ + +#tray { + background-color: transparent; + padding: 1px 5px; +} +#tray menu { + padding: 2px; + border-radius: 0; } -/* If workspaces is the rightmost module, omit right margin */ -.modules-right > widget:last-child > #workspaces { - margin-right: 0; +/* -------------------------------------------------------------------------------- */ + +#backlight-slider { + margin-top: 10px; } -#clock { - color: @blue; - padding-bottom: 4px; +#backlight-slider slider { + min-height: 0px; + min-width: 0px; + opacity: 0; + background-image: none; + border: none; + box-shadow: none; +} +#backlight-slider trough { + min-height: 80px; + min-width: 10px; + border-radius: 5px; + background-color: black; +} +#backlight-slider highlight { + min-width: 6px; + border: 1px solid @text; + border-radius: 5px; + background-color: @text; } -#wireplumber { - color: @yellow; - font-size: 26px; +/* -------------------------------------------------------------------------------- */ + +#pulseaudio-slider { + margin-top: 6px; } -#network { - color: @cyan; - font-size: 23px; +#pulseaudio-slider slider { + min-height: 0px; + min-width: 0px; + opacity: 0; + background-image: none; + border: none; + box-shadow: none; } - -#battery { - color: @text; - font-size: 23px; +#pulseaudio-slider trough { + min-height: 80px; + min-width: 5px; + border-radius: 5px; + background-color: black; } -#battery.charging, #battery.plugged { - color: #26A65B; -} - -@keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } -} - -/* Using steps() instead of linear as a timing function to limit cpu usage */ -#battery.critical:not(.charging) { - color: @red; - background-color: @backgroundalt; - font-size: 23px; - - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: steps(12); - animation-iteration-count: infinite; - animation-direction: alternate; -} - -#custom-power { - color: @red; +#pulseaudio-slider highlight { + min-width: 5px; + border: 1px solid @text; + border-radius: 5px; + background-color: @text; }