diff --git a/sway/.config/sway/config b/sway/.config/sway/config index 90947e3..0ee9c7f 100644 --- a/sway/.config/sway/config +++ b/sway/.config/sway/config @@ -210,6 +210,8 @@ bindsym $mod+r mode "resize" # Read `man 5 sway-bar` for more information about this section. bar { position bottom + swaybar_command waybar + # When the status_command prints a new line to stdout, swaybar updates. # The default just shows the current date and time. diff --git a/waybar/.config/waybar/config.jsonc b/waybar/.config/waybar/config.jsonc new file mode 100644 index 0000000..4bd3e5a --- /dev/null +++ b/waybar/.config/waybar/config.jsonc @@ -0,0 +1,214 @@ +// -*- mode: jsonc -*- +{ + "layer": "bottom", // Waybar at top layer + "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 30, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + "reload_on_style_change": true, + // Choose the order of the modules + "modules-left": [ + "sway/workspaces", + "sway/mode", + "sway/scratchpad", + ], + "modules-center": [ + ], + "modules-right": [ + "idle_inhibitor", + "custom/ddcbrightness", + "pulseaudio", + "network", + "bluetooth", + "cpu", + "memory", + "temperature", + "battery", + "clock", + "privacy", + "tray", + "systemd-failed-units" + ], + // Modules configuration + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "warp-on-scroll": false, + "format": "{icon} {name}", + "format-icons": { + "1": "󰦑", + "2": "", + "3": "󰞋", + "7": "", + "8": "", + "10": "󰇴", + "urgent": "", + "focused": "", + "default": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "custom/ddcbrightness": { + "format": "{icon} {percentage}%", + "format-icons": ["󰛩", "󱩎", "󱩏", "󱩐", "󱩑", "󱩒", "󱩓", "󱩔", "󱩕", "󱩖", "󰛨"], + "return-type": "json", + "exec": "ddcutil getvcp 10 | grep -oP 'current.*?=\\s*\\K[0-9]+' | { read x; echo '{\"percentage\":'${x}'}'; }", + "on-scroll-up": "ddcutil setvcp 10 + 10", + "on-scroll-down": "ddcutil setvcp 10 - 10", + "interval": 1, + "tooltip": false + }, + "tray": { + // "icon-size": 21, + "spacing": 10, + // "icons": { + // "blueman": "bluetooth", + // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" + // } + }, + "bluetooth": { + "format": " {status}", + "format-connected": " {device_alias}", + "format-connected-battery": " {device_alias} ({device_battery_percentage}%)", + // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\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}%" + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{calendar}", + "format": "{:%Y-%m-%dT%H:%M:%S}", + "on-click": "mode", + "calendar": { + "mode" : "year", + "mode-mon-col" : 3, + "weeks-pos" : "right", + "on-scroll" : 1, + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": " {}%" + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{icon} {temperatureC}°C", + "format-icons": ["", "", ""], + "tooltip": false + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}% ({time})", + "format-full": "{icon} {capacity}%", + "format-charging": "󰂄 {capacity}% ({time})", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "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}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": "{icon} {volume}% {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": " {volume}%", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "privacy": { + "icon-spacing": 4, + "icon-size": 18, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24 + }, + { + "type": "audio-out", + "tooltip": true, + "tooltip-icon-size": 24 + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 24 + } + ] + }, + "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" + } + }, + "systemd-failed-units": { + "hide-on-ok": false, // Do not hide if there is zero failed units. + "format": " {nr_failed_system}/{nr_failed_user}", + "format-ok": "", + "system": true, // Monitor failed systemwide units. + "user": true // Ignore failed user units. + } +} diff --git a/waybar/.config/waybar/style.css b/waybar/.config/waybar/style.css new file mode 100644 index 0000000..2fd9d7b --- /dev/null +++ b/waybar/.config/waybar/style.css @@ -0,0 +1,288 @@ +window#waybar { + background: #000; + color: #FFF; +} + +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: "Fira Code Nerd Font"; +} + +window#waybar { + background-color: transparent; + color: #ffffff; + 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; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +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: inset 0 -3px #ffffff; +} + +/* 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; + padding: 0 10px; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: rgba(255, 255, 255, 0.2); + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#custom-ddcbrightness, +#idle_inhibitor, +#mpd { + padding: 0 10px; + color: #ffffff; +} + +#window, +#workspaces { + margin: 0 10px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { +} + +#battery { +} + +#battery.charging, #battery.plugged { +} + +@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) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#power-profiles-daemon { +} + +#power-profiles-daemon.performance { +} + +#power-profiles-daemon.balanced { +} + +#power-profiles-daemon.power-saver { +} + +label:focus { + background-color: #000000; +} + +#cpu { +} + +#memory { +} + +#disk { +} + +#backlight { +} + +#network { +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { +} + +#pulseaudio.muted { +} + +#wireplumber { +} + +#wireplumber.muted { +} + +#custom-media { +} + +#custom-media.custom-spotify { +} + +#custom-media.custom-vlc { +} + +#temperature { +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { +} + +#idle_inhibitor.activated { + background-color: rgba(255, 255, 255, 0.2); +} + +#mpd { +} + +#mpd.disconnected { +} + +#mpd.stopped { +} + +#mpd.paused { +} + +#language { +} + +#keyboard-state { +} + +#keyboard-state > label { +} + +#keyboard-state > label.locked { +} + +#scratchpad { +} + +#scratchpad.empty { + background-color: transparent; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; +} + +#privacy-item.screenshare { +} + +#privacy-item.audio-in { +} + +#privacy-item.audio-out { +} + +#bluetooth.disabled, #bluetooth.off { + color: rgba(255, 255, 255, 0.7); +} + +#systemd-failed-units.ok { +} + +#systemd-failed-units.degraded { + color: #f53c3c; +}