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;
+}