aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author alemi <[email protected]>2025-11-21 00:37:34 +0100
committer alemi <[email protected]>2025-11-21 00:37:34 +0100
commit8c37c85154de815760276764f3751d87f74b3b7d (patch)
tree8a5f3e7374db9db35f38bea35a5106126e736d3a
parentaef23862b8edbdea3b3349fe71c10e000143af73 (diff)
feat: wayland configHEADmain
-rw-r--r--.config/gtklock/config.ini5
-rw-r--r--.config/gtklock/style.css5
-rw-r--r--.config/kanshi/config22
-rw-r--r--.config/sway/config408
-rw-r--r--.config/swayidle/config6
-rw-r--r--.config/swaync/config.json99
-rw-r--r--.config/swaync/style.css574
-rw-r--r--.config/waybar/config.jsonc125
-rw-r--r--.config/waybar/style.css266
-rw-r--r--.config/wofi/config7
-rw-r--r--.config/wofi/prompt-style.css12
-rw-r--r--.config/wofi/style.css9
12 files changed, 1538 insertions, 0 deletions
diff --git a/.config/gtklock/config.ini b/.config/gtklock/config.ini
new file mode 100644
index 0000000..10be267
--- /dev/null
+++ b/.config/gtklock/config.ini
@@ -0,0 +1,5 @@
+[main]
+background=/home/alemi/media/pics/bg/bg.jpg
+idle-hide=true
+idle-timeout=10
+start-hidden=true
diff --git a/.config/gtklock/style.css b/.config/gtklock/style.css
new file mode 100644
index 0000000..3e15610
--- /dev/null
+++ b/.config/gtklock/style.css
@@ -0,0 +1,5 @@
+#window-box {
+ background-color: rgba(32, 31, 41, 0.5);
+ border-radius: 2em;
+ padding: 5em;
+}
diff --git a/.config/kanshi/config b/.config/kanshi/config
new file mode 100644
index 0000000..e767259
--- /dev/null
+++ b/.config/kanshi/config
@@ -0,0 +1,22 @@
+output "ASUSTek COMPUTER INC ASUS VG249 0x0003E5C2" {
+ position 0,180
+ scale 1
+ alias $DOCK
+}
+
+output "Chimei Innolux Corporation 0x1239 Unknown" {
+ position 1920,0
+ scale 1
+ alias $INTERNAL
+}
+
+profile docked {
+ output $DOCK enable
+ output $INTERNAL enable
+}
+
+profile laptop {
+ output $INTERNAL enable
+}
diff --git a/.config/sway/config b/.config/sway/config
new file mode 100644
index 0000000..3419ab9
--- /dev/null
+++ b/.config/sway/config
@@ -0,0 +1,408 @@
+# Import the most important environment variables into the D-Bus and systemd
+# user environments (e.g. required for screen sharing and Pinentry prompts):
+exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway
+exec_always systemctl --user start sway-session.target
+xwayland disable
+
+
+set $mod Mod4
+set $alt Mod1
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below.
+font pango:FiraCode Nerd Font Mono 0.1
+# font pango:Droid Mono 8
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# start a terminal
+# bindsym $mod+Return exec i3-sensible-terminal
+bindsym $mod+Return exec kitty -1
+# bindsym $mod+Shift+Return open
+
+# kill focused window
+bindsym $mod+Shift+q kill
+
+# macro to quickly change monitor setup
+#bindsym $mod+Shift+h exec --no-startup-id bash ~/.screenlayout/res-picker.sh
+#bindsym $mod+Shift+a exec bash ~/.i3/layout-picker.sh
+
+# start dmenu (a program launcher)
+#bindsym $mod+d exec dmenu_run
+#bindsym $mod+d exec --no-startup-id rofi -show combi ~/.config/rofi/config
+bindsym $mod+space exec --no-startup-id wofi
+
+bindsym $mod+Shift+k fullscreen disable; floating enable; opacity set 0.3; sticky enable; move position 90ppt 90ppt;
+bindsym $mod+k opacity set 1.0; sticky disable; floating disable
+
+# bind "STAMP" / "PRINT" button to flameshot
+bindsym Print exec --no-startup-id grim -g "$(slurp)" - | wl-copy
+bindsym $mod+Shift+s exec --no-startup-id grim -g "$(slurp)" - | wl-copy
+
+bindsym $alt+space exec --no-startup-id swaync-client -t
+
+
+# bind "WIN+SHIFT+L" to xlock
+
+# bind "WIN+SHIFT+M" to list memos
+#bindsym $mod+Shift+m exec --no-startup-id /home/alemi/.local/bin/memo list --notify
+
+# bind "WIN+BACKSPACE" to force disconnect in Path of Exile
+#bindsym $mod+BackSpace exec --no-startup-id /home/alemi/.local/bin/poedisconnect.sh
+
+bindsym Control+space exec --no-startup-id swaync-latest --hide-last
+
+bindsym $mod+Control+l exec --no-startup-id gtklock
+bindsym $mod+Shift+l exec --no-startup-id gtklock
+
+# bind "WIN+End" to show notification context
+bindsym $mod+End exec --no-startup-id /usr/bin/dunstctl context
+
+# There also is the (new) i3-dmenu-desktop which only displays applications
+# shipping a .desktop file. It is a wrapper around dmenu, so you need that
+# installed.
+# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
+
+# change focus
+#bindsym $mod+j focus left
+#bindsym $mod+k focus down
+#bindsym $mod+l focus up
+#bindsym $mod+semicolon focus right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+#bindsym $mod+Shift+j move left
+#bindsym $mod+Shift+k move down
+#bindsym $mod+Shift+l move up
+#bindsym $mod+Shift+semicolon move right
+
+# send to other screen
+bindsym $mod+Shift+Prior move workspace to output left
+bindsym $mod+Shift+Next move workspace to output right
+bindsym $mod+Shift+Tab move workspace to output right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# split in horizontal orientation
+bindsym $mod+h split h
+
+# split in vertical orientation
+bindsym $mod+v split v
+
+# enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+bindsym $mod+F11 fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+tab focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+#bindsym $mod+d focus child
+
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
+set $ws0 "19:0"
+set $ws1 "1:1"
+set $ws2 "3:2"
+set $ws3 "5:3"
+set $ws4 "7:4"
+set $ws5 "9:5"
+set $ws6 "11:6"
+set $ws7 "13:7"
+set $ws8 "15:8"
+set $ws9 "17:9"
+set $ws10 "20:0+"
+set $ws11 "2:1+"
+set $ws12 "4:2+"
+set $ws13 "6:3+"
+set $ws14 "8:4+"
+set $ws15 "10:5+"
+set $ws16 "12:6+"
+set $ws17 "14:7+"
+set $ws18 "16:8+"
+set $ws19 "18:9+"
+
+# switch to workspace
+bindsym $mod+1 workspace $ws1
+bindsym $mod+2 workspace $ws2
+bindsym $mod+3 workspace $ws3
+bindsym $mod+4 workspace $ws4
+bindsym $mod+5 workspace $ws5
+bindsym $mod+6 workspace $ws6
+bindsym $mod+7 workspace $ws7
+bindsym $mod+8 workspace $ws8
+bindsym $mod+9 workspace $ws9
+bindsym $mod+0 workspace $ws0
+bindsym $mod+$alt+1 workspace $ws11
+bindsym $mod+$alt+2 workspace $ws12
+bindsym $mod+$alt+3 workspace $ws13
+bindsym $mod+$alt+4 workspace $ws14
+bindsym $mod+$alt+5 workspace $ws15
+bindsym $mod+$alt+6 workspace $ws16
+bindsym $mod+$alt+7 workspace $ws17
+bindsym $mod+$alt+8 workspace $ws18
+bindsym $mod+$alt+9 workspace $ws19
+bindsym $mod+$alt+0 workspace $ws10
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8
+bindsym $mod+Shift+9 move container to workspace $ws9
+bindsym $mod+Shift+0 move container to workspace $ws0
+bindsym $mod+$alt+Shift+1 move container to workspace $ws11
+bindsym $mod+$alt+Shift+2 move container to workspace $ws12
+bindsym $mod+$alt+Shift+3 move container to workspace $ws13
+bindsym $mod+$alt+Shift+4 move container to workspace $ws14
+bindsym $mod+$alt+Shift+5 move container to workspace $ws15
+bindsym $mod+$alt+Shift+6 move container to workspace $ws16
+bindsym $mod+$alt+Shift+7 move container to workspace $ws17
+bindsym $mod+$alt+Shift+8 move container to workspace $ws18
+bindsym $mod+$alt+Shift+9 move container to workspace $ws19
+bindsym $mod+$alt+Shift+0 move container to workspace $ws10
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'"
+
+# Brightness Control
+bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl -e set '+5%'
+bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl -e set '5%-'
+
+bindsym XF86AudioRaiseVolume exec --no-startup-id amixer sset 'Master' 5%+
+bindsym XF86AudioLowerVolume exec --no-startup-id amixer sset 'Master' 5%-
+bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id amixer sset 'Master' 1%+
+bindsym Shift+XF86AudioLowerVolume exec --no-startup-id amixer sset 'Master' 1%-
+bindsym XF86AudioMute exec --no-startup-id amixer sset 'Master' toggle
+bindsym XF86AudioMicMute exec --no-startup-id amixer sset 'Capture' toggle
+
+# Music controls
+bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
+bindsym XF86AudioPause exec --no-startup-id playerctl pause
+bindsym XF86AudioNext exec --no-startup-id playerctl next
+bindsym XF86AudioPrev exec --no-startup-id playerctl previous
+
+#
+bindsym XF86Display exec --no-startup-id wdisplays
+bindsym XF86Tools exec --no-startup-id nemo
+bindsym XF86Favorites exec --no-startup-id notify-send -u low -t 30000 fortune "$(fortune)"
+
+# These two always toggle bluetooth and wifi
+bindsym XF86WLAN exec --no-startup-id notify-send "Toggled WiFi"
+bindsym XF86Bluetooth exec --no-startup-id notify-send "Toggled Bluetooth"
+
+# Extra
+bindsym XF86HomePage workspace $ws1
+bindsym XF86Search workspace $ws9
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym j resize shrink width 5 px or 5 ppt
+ bindsym k resize grow height 5 px or 5 ppt
+ bindsym l resize shrink height 5 px or 5 ppt
+ bindsym semicolon resize grow width 5 px or 5 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym Left resize shrink width 25 px or 5 ppt
+ bindsym Down resize grow height 25 px or 5 ppt
+ bindsym Up resize shrink height 25 px or 5 ppt
+ bindsym Right resize grow width 25 px or 5 ppt
+
+ # same bindings, but for the arrow keys and by 1 px
+ bindsym Shift+Left resize shrink width 5 px or 1 ppt
+ bindsym Shift+Down resize grow height 5 px or 1 ppt
+ bindsym Shift+Up resize shrink height 5 px or 1 ppt
+ bindsym Shift+Right resize grow width 5 px or 1 ppt
+
+ bindsym Ctrl+Left resize shrink width 250 px or 50 ppt
+ bindsym Ctrl+Down resize grow height 250 px or 50 ppt
+ bindsym Ctrl+Up resize shrink height 250 px or 50 ppt
+ bindsym Ctrl+Right resize grow width 250 px or 50 ppt
+
+ # back to normal: Enter or Escape or $mod+r
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym $mod+r mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+set $mode_gaps Gaps [o|i]
+set $mode_gaps_outer Outer Gaps [+|0|-]
+set $mode_gaps_inner Inner Gaps [+|0|-]
+
+mode "$mode_gaps" {
+ bindsym o mode "$mode_gaps_outer"
+ bindsym i mode "$mode_gaps_inner"
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+mode "$mode_gaps_inner" {
+ bindsym plus gaps inner current plus 5
+ bindsym minus gaps inner current minus 5
+ bindsym 0 gaps inner current set 0
+
+ bindsym Shift+plus gaps inner all plus 5
+ bindsym Shift+minus gaps inner all minus 5
+ bindsym Shift+0 gaps inner all set 0
+
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+mode "$mode_gaps_outer" {
+ bindsym plus gaps outer current plus 5
+ bindsym minus gaps outer current minus 5
+ bindsym 0 gaps outer current set 0
+
+ bindsym Shift+plus gaps outer all plus 5
+ bindsym Shift+minus gaps outer all minus 5
+ bindsym Shift+0 gaps outer all set 0
+
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+bindsym $mod+g mode "$mode_gaps"
+
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+# exec_always --no-startup-id $HOME/.config/polybar/launch.sh
+
+bar {
+ swaybar_command waybar
+}
+
+#bar {
+# swaybar_command swaybar
+# font pango:Hack Nerd Font 9
+# strip_workspace_numbers yes
+# status_command i3blocks
+# position top
+# colors {
+# background #000000BF
+# statusline #FFFFFFFF
+# separator #666666FF
+# focused_workspace #BF616AFF #333333BF #BF616AFF
+# active_workspace #81A1C1FF #000000BF #81A1C1FF
+# inactive_workspace #000000BF #000000BF #BF616AFF
+# urgent_workspace #EBCB8BFF #BF616ABF #FFFFFFFF
+# binding_mode #EBCB8BFF #333333BF #EBCB8BFF
+# }
+#}
+
+# Start Compton for transparent background
+# exec --no-startup-id picom # --experimental-backends
+# Start Geoclue because I want to be a cool kid
+# exec --no-startup-id /usr/lib/geoclue-2.0/demos/agent
+# Start Dunst -- I would rather enable a systemd unit but it cannot be installed for some reason
+# exec --no-startup-id /usr/bin/dunst
+# set background
+exec --no-startup-id swaybg -i /home/alemi/media/pics/bg/bg.jpg
+exec --no-startup-id swayidle -C /home/alemi/.config/swayidle/config
+exec --no-startup-id nwg-dock -d -hd 0 -i 35 -nows -p bottom -mb 5
+
+# Gaps configuration
+gaps inner 20
+gaps outer 5
+
+# disable window borders
+default_border normal 0
+default_floating_border normal 0
+# for_window [class="^kitty"] border pixel 1
+for_window [class="Mumble"] floating enable
+for_window [class="Klavaro.*"] floating enable
+for_window [class="Steam"] floating enable
+
+for_window [class=".*"] inhibit_idle fullscreen
+for_window [app_id=".*"] inhibit_idle fullscreen
+
+for_window [window_role="pop-up"] floating enable
+for_window [window_role="Pop-up"] floating enable
+for_window [window_role="bubble"] floating enable
+for_window [window_role="Bubble"] floating enable
+for_window [window_role="dialog"] floating enable
+for_window [window_role="Dialog"] floating enable
+for_window [window_type="dialog"] floating enable
+for_window [window_type="Dialog"] floating enable
+for_window [class="dialog"] floating enable
+for_window [class="Dialog"] floating enable
+for_window [window_role="task_dialog"] floating enable
+for_window [window_type="menu"] floating enable
+for_window [window_role="About"] floating enable
+
+for_window [app_id="org.mozilla.Thunderbird"] floating enable
+for_window [app_id="org.mozilla.Thunderbird" title="^Mozilla Thunderbird.*$"] floating disable
+for_window [app_id="org.mozilla.Thunderbird" title="^Write.*$"] floating disable
+
+# color
+# set_from_resource #2f343f i3wm.color0 #2f343f
+# set_from_resource #d8dee8 i3wm.color7 #d8dee8
+# set_from_resource #bf616a i3wm.color1 #bf616a
+# set_from_resource #ebcb8b i3wm.color3 #ebcb8b
+# set_from_resource #81a1c1 i3wm.color5 #81a1c1
+# set #101010F2 #101010F2
+
+# class border backgr. text indicator child_border
+client.focused #bf616a #bf616a #d8dee8 #ebcb8b #bf616a
+client.focused_inactive #101010F2 #101010F2 #d8dee8 #2f343f #101010F2
+client.unfocused #101010F2 #101010F2 #d8dee8 #2f343f #101010F2
+client.urgent #2f343f #2f343f #d8dee8 #2f343f #101010F2
+client.placeholder #101010F2 #2f343f #d8dee8 #2f343f #101010F2
+client.background #101010F2
+
+input type:keyboard {
+ xkb_layout us
+}
+
+input type:touchpad {
+ accel_profile adaptive
+ click_method clickfinger
+ drag enabled
+ dwt disabled
+ dwtp disabled
+ natural_scroll disabled
+ scroll_factor 1.0
+ scroll_method two_finger
+ tap disabled
+}
+
+input type:pointer {
+ accel_profile flat
+ pointer_accel 0.01
+}
diff --git a/.config/swayidle/config b/.config/swayidle/config
new file mode 100644
index 0000000..6d92c21
--- /dev/null
+++ b/.config/swayidle/config
@@ -0,0 +1,6 @@
+timeout 10 /home/alemi/.local/bin/idle/screen-off-if-locked.sh resume 'swaymsg "output * dpms on"'
+timeout 300 /home/alemi/.local/bin/idle/lock-if-not-locked.sh
+timeout 290 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"'
+timeout 900 /home/alemi/.local/bin/idle/sleep-if-not-plugged.sh
+lock /home/alemi/.local/bin/idle/lock-if-not-locked.sh
+before-sleep /home/alemi/.local/bin/idle/lock-if-not-locked.sh
diff --git a/.config/swaync/config.json b/.config/swaync/config.json
new file mode 100644
index 0000000..4905632
--- /dev/null
+++ b/.config/swaync/config.json
@@ -0,0 +1,99 @@
+{
+ "$schema": "/etc/xdg/swaync/configSchema.json",
+ "ignore-gtk-theme": true,
+ "positionX": "right",
+ "positionY": "top",
+ "layer": "overlay",
+ "control-center-layer": "top",
+ "layer-shell": true,
+ "layer-shell-cover-screen": true,
+ "cssPriority": "user",
+ "control-center-margin-top": 5,
+ "control-center-margin-bottom": 0,
+ "control-center-margin-right": 5,
+ "control-center-margin-left": 0,
+ "notification-2fa-action": true,
+ "notification-inline-replies": false,
+ "notification-body-image-height": 100,
+ "notification-body-image-width": 200,
+ "timeout": 10,
+ "timeout-low": 5,
+ "timeout-critical": 0,
+ "fit-to-screen": false,
+ "relative-timestamps": true,
+ "control-center-width": 400,
+ "control-center-height": 800,
+ "notification-window-width": 400,
+ "keyboard-shortcuts": true,
+ "notification-grouping": true,
+ "image-visibility": "always",
+ "transition-time": 200,
+ "hide-on-clear": false,
+ "hide-on-action": true,
+ "text-empty": "no notifications",
+ "script-fail-notify": true,
+ "scripts": {
+ "example-script": {
+ "exec": "echo 'Do something...'",
+ "urgency": "Normal"
+ },
+ "example-action-script": {
+ "exec": "echo 'Do something actionable!'",
+ "urgency": "Normal",
+ "run-on": "action"
+ }
+ },
+ "notification-visibility": {
+ "example-name": {
+ "state": "muted",
+ "urgency": "Low",
+ "app-name": "Spotify"
+ }
+ },
+ "widgets": [
+ "inhibitors",
+ "title",
+ "notifications",
+ "dnd"
+ ],
+ "widget-config": {
+ "notifications": {
+ "vexpand": true
+ },
+ "inhibitors": {
+ "text": "Inhibitors",
+ "button-text": "Clear All",
+ "clear-all-button": true
+ },
+ "title": {
+ "text": "notifications",
+ "clear-all-button": true,
+ "button-text": "clear"
+ },
+ "dnd": {
+ "text": "do not disturb"
+ },
+ "label": {
+ "max-lines": 5,
+ "text": "Label Text"
+ },
+ "mpris": {
+ "blacklist": [],
+ "autohide": false,
+ "show-album-art": "always",
+ "loop-carousel": false
+ },
+ "buttons-grid": {
+ "buttons-per-row": 7,
+ "actions": [
+ {
+ "label": "wifi",
+ "type": "toggle",
+ "active": true,
+ "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'",
+ "update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"
+ }
+ ]
+ }
+ }
+}
diff --git a/.config/swaync/style.css b/.config/swaync/style.css
new file mode 100644
index 0000000..c4cc244
--- /dev/null
+++ b/.config/swaync/style.css
@@ -0,0 +1,574 @@
+:root {
+ --cc-bg: rgba(0, 0, 0, 0.9);
+ --noti-border-color: rgba(191, 97, 106, 0.9);
+ --noti-bg: 0, 0, 0;
+ --noti-bg-alpha: 0.9;
+ --noti-bg-darker: rgb(38, 38, 38);
+ --noti-bg-hover: rgb(32, 31, 41);
+ --noti-bg-focus: rgba(68, 68, 68, 0.6);
+ --noti-close-bg: rgb(78, 78, 78);
+ --noti-close-bg-hover: rgb(94, 94, 94);
+ --text-color: rgb(255, 255, 255);
+ --text-color-disabled: rgb(150, 150, 150);
+ --bg-selected: rgb(191, 97, 106);
+ --notification-icon-size: 64px;
+ --notification-app-icon-size: calc(var(--notification-icon-size) / 3);
+ --notification-group-icon-size: 32px;
+ --border: 2px solid var(--noti-border-color);
+ --border-radius: 15px;
+ --notification-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3),
+ 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3);
+ --font-size-body: 15px;
+ --font-size-summary: 16px;
+ /* Deprecated variables (because of their typos). Keeeping them around for backwards compatibility. */
+ --hover-tranistion: background 0.15s ease-in-out;
+ --group-collapse-tranistion: opacity 100ms ease-in-out;
+ --hover-transition: var(--hover-tranistion);
+ --group-collapse-transition: var(--group-collapse-tranistion);
+}
+
+/* Fallback for older CSS themes */
+/* Fallback for older CSS themes */
+@define-color cc-bg rgba(46, 46, 46, 0.7);
+@define-color noti-border-color rgba(255, 255, 255, 0.15);
+@define-color noti-bg rgba(48, 48, 48, 0.8);
+@define-color noti-bg-opaque rgb(48, 48, 48);
+@define-color noti-bg-darker rgb(38, 38, 38);
+@define-color noti-bg-hover rgb(56, 56, 56);
+@define-color noti-bg-hover-opaque rgb(56, 56, 56);
+@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
+@define-color noti-close-bg rgba(255, 255, 255, 0.1);
+@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
+@define-color text-color rgb(255, 255, 255);
+@define-color text-color-disabled rgb(150, 150, 150);
+@define-color bg-selected rgb(0, 128, 255);
+notificationwindow, blankwindow, blankwindow {
+ background: transparent;
+}
+
+.close-button {
+ /* The notification Close Button */
+ background: var(--noti-close-bg);
+ color: var(--text-color);
+ text-shadow: none;
+ padding: 0;
+ border-radius: 100%;
+ margin-top: 8px;
+ margin-right: 8px;
+ box-shadow: none;
+ border: none;
+ min-width: 24px;
+ min-height: 24px;
+}
+
+.close-button:hover {
+ box-shadow: none;
+ background: var(--noti-close-bg-hover);
+ transition: var(--hover-tranistion);
+ border: none;
+}
+
+.notification-row {
+ background: none;
+ outline: none;
+}
+
+.notification-row:focus {
+ background: var(--noti-bg-focus);
+}
+
+.notification-row .notification-background {
+ padding: 6px 12px;
+}
+
+.notification-row .notification-background .notification {
+ /* The actual notification */
+ border-radius: var(--border-radius);
+ border: var(--border);
+ padding: 0;
+ transition: var(--hover-tranistion);
+ background: rgba(var(--noti-bg), var(--noti-bg-alpha));
+}
+
+.notification-row .notification-background .notification.low {
+ /* Low Priority Notification */
+ border-color: var(--noti-close-bg);
+}
+
+.notification-row .notification-background .notification.normal {
+ /* Normal Priority Notification */
+}
+
+.notification-row .notification-background .notification.critical {
+ background: repeating-linear-gradient(
+ 45deg,
+ rgba(var(--noti-bg), 0.9),
+ rgba(var(--noti-bg), 0.9) 10px,
+ rgba(38, 38, 38, 0.9) 10px,
+ rgba(38, 38, 38, 0.9) 20px
+ );
+}
+
+.notification-row .notification-background .notification .notification-default-action {
+ /* The large action that also displays the notification summary and body */
+ padding: 4px;
+ margin: 0;
+ box-shadow: none;
+ background: transparent;
+ border: none;
+ color: var(--text-color);
+ transition: var(--hover-tranistion);
+ border-radius: var(--border-radius);
+}
+
+.notification-row .notification-background .notification .notification-default-action:hover {
+ -gtk-icon-filter: none;
+ background: var(--noti-bg-hover);
+}
+
+.notification-row .notification-background .notification .notification-default-action:not(:only-child) {
+ /* When alternative actions are visible */
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content {
+ background: transparent;
+ border-radius: var(--border-radius);
+ padding: 0;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .image {
+ /* Notification Primary Image */
+ -gtk-icon-filter: none;
+ -gtk-icon-size: var(--notification-icon-size);
+ border-radius: 100px;
+ /* Size in px */
+ margin: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon {
+ /* Notification app icon (only visible when the primary image is set) */
+ -gtk-icon-filter: none;
+ -gtk-icon-size: var(--notification-app-icon-size);
+ -gtk-icon-shadow: 0 1px 4px black;
+ margin: 6px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box label {
+ /* Fixes base GTK 4 CSS setting a filter of opacity 50% for some odd reason */
+ filter: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary {
+ /* Notification summary/title */
+ font-size: var(--font-size-summary);
+ font-weight: bold;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time {
+ /* Notification time-ago */
+ font-size: var(--font-size-summary);
+ font-weight: bold;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+ margin-right: 30px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body {
+ /* Notification body */
+ font-size: var(--font-size-body);
+ font-weight: normal;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content progressbar {
+ /* The optional notification progress bar */
+ margin-top: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .body-image {
+ /* The "extra" optional bottom notification image */
+ margin-top: 4px;
+ background-color: white;
+ -gtk-icon-filter: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply {
+ /* The inline reply section */
+ margin-top: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry {
+ background: var(--noti-bg-darker);
+ color: var(--text-color);
+ caret-color: var(--text-color);
+ border: var(--border);
+ border-radius: var(--border-radius);
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
+ margin-left: 4px;
+ background: rgba(var(--noti-bg), var(--noti-bg-alpha));
+ border: var(--border);
+ border-radius: var(--border-radius);
+ color: var(--text-color);
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled {
+ background: initial;
+ color: var(--text-color-disabled);
+ border: var(--border);
+ border-color: transparent;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover {
+ background: var(--noti-bg-hover);
+}
+
+.notification-row .notification-background .notification .notification-alt-actions {
+ background: none;
+ border-bottom-left-radius: var(--border-radius);
+ border-bottom-right-radius: var(--border-radius);
+ padding: 4px;
+}
+
+.notification-row .notification-background .notification .notification-action {
+ /* The alternative actions below the default action */
+ margin: 4px;
+ padding: 0;
+}
+
+.notification-row .notification-background .notification .notification-action > button {
+ border-radius: var(--border-radius);
+ color: var(--text-color);
+}
+
+.notification-group {
+ /* Styling only for Grouped Notifications */
+ transition: opacity 100ms ease-in-out;
+ /* The groups close button */
+ outline-color: #BF616A;
+}
+
+.notification-group:focus {
+ background: var(--noti-bg);
+}
+
+.notification-group.low {
+ /* Low Priority Group */
+}
+
+.notification-group.normal {
+ /* Low Priority Group */
+}
+
+.notification-group.critical {
+ /* Low Priority Group */
+}
+
+.notification-group .notification-group-close-button .close-button {
+ margin: 12px 20px;
+}
+
+.notification-group .notification-group-buttons, .notification-group .notification-group-headers {
+ margin: 0 16px;
+ color: var(--text-color);
+}
+
+.notification-group .notification-group-headers {
+ /* Notification Group Headers */
+}
+
+.notification-group .notification-group-headers .notification-group-icon {
+ color: var(--text-color);
+ -gtk-icon-size: var(--notification-group-icon-size);
+}
+
+.notification-group .notification-group-headers .notification-group-header {
+ color: var(--text-color);
+}
+
+.notification-group .notification-group-buttons {
+ /* Notification Group Buttons */
+}
+
+.notification-group.collapsed {
+ background-color: rgba(var(--noti-bg), 1);
+ /* When another group is expanded, lower the opacity of the collapsed ones */
+}
+
+.notification-group.collapsed.not-expanded {
+ opacity: 0.4;
+}
+
+.notification-group.collapsed .notification-row .notification {
+ background-color: rgba(var(--noti-bg), 1);
+}
+
+.notification-group.collapsed .notification-row:not(:last-child) {
+ /* Top notification in stack */
+ /* Set lower stacked notifications opacity to 0 */
+}
+
+.notification-group.collapsed .notification-row:not(:last-child) .notification-action,
+.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action {
+ opacity: 0;
+}
+
+.notification-group.collapsed:hover .notification-row:not(:only-child) .notification {
+ background-color: var(--noti-bg-hover);
+}
+
+.control-center {
+ /* The Control Center which contains the old notifications + widgets */
+ background: var(--cc-bg);
+ color: var(--text-color);
+ border-radius: var(--border-radius);
+}
+
+.control-center .control-center-list-placeholder {
+ /* The placeholder when there are no notifications */
+ opacity: 0.5;
+}
+
+.control-center .control-center-list {
+ /* List of notifications */
+ background: transparent;
+}
+
+.control-center .control-center-list .notification {
+ box-shadow: var(--notification-shadow);
+}
+
+.control-center .control-center-list .notification .notification-default-action,
+.control-center .control-center-list .notification .notification-action {
+ transition: var(--group-collapse-tranistion), var(--hover-tranistion);
+}
+
+.control-center .control-center-list .notification .notification-default-action:hover,
+.control-center .control-center-list .notification .notification-action:hover {
+ background-color: var(--noti-bg-hover);
+}
+
+.blank-window {
+ /* Window behind control center and on all other monitors */
+ background: transparent;
+}
+
+.floating-notifications {
+ background: transparent;
+}
+
+.floating-notifications .notification {
+ box-shadow: none;
+}
+
+/*** Widgets ***/
+.widget {
+ margin: 8px;
+ padding: 8px;
+ border-radius: var(--border-radius);
+}
+
+/* Title widget */
+.widget-title > label {
+ margin-right: 8px;
+ font-size: 1.5rem;
+}
+
+.widget-title > button {
+ margin-left: 8px;
+ border-radius: var(--border-radius);
+}
+
+/* DND widget */
+.widget-dnd label {
+ color: var(--text-color);
+ margin-right: 8px;
+ font-size: 1.1rem;
+}
+
+.widget-dnd switch {
+ border-radius: var(--border-radius);
+ margin-left: 8px;
+}
+
+.widget-dnd switch:checked {
+ background-color: #bf616a;
+}
+
+.widget-dnd switch slider {
+ border-radius: var(--border-radius);
+}
+
+/* Label widget */
+.widget-label > label {
+ font-size: 1.1rem;
+}
+
+/* Mpris widget */
+:root {
+ --mpris-album-art-overlay: rgba(0, 0, 0, 0.55);
+ --mpris-button-hover: rgba(0, 0, 0, 0.5);
+ --mpris-album-art-icon-size: 96px;
+ --mpris-album-art-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
+}
+
+.widget-mpris {
+ padding: 0;
+ /* The parent to all players */
+}
+
+.widget-mpris .widget-mpris-player {
+ margin: 16px 20px;
+ border-radius: var(--border-radius);
+ box-shadow: var(--mpris-album-art-shadow);
+}
+
+.widget-mpris .widget-mpris-player .mpris-background {
+ filter: blur(10px);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay {
+ padding: 16px;
+ background-color: var(--mpris-album-art-overlay);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay button:hover {
+ /* The media player buttons (play, pause, next, etc...) */
+ background: var(--noti-bg-hover);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
+ border-radius: var(--border-radius);
+ box-shadow: var(--mpris-album-art-shadow);
+ -gtk-icon-size: var(--mpris-album-art-icon-size);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title {
+ font-weight: bold;
+ font-size: 1.25rem;
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle {
+ font-size: 1.1rem;
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay > box > button {
+ /* Change player control buttons */
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay > box > button:hover {
+ background-color: var(--mpris-button-hover);
+}
+
+.widget-mpris > box > button {
+ /* Change player side buttons */
+}
+
+.widget-mpris > box > button:disabled {
+ /* Change player side buttons insensitive */
+}
+
+/* Buttons widget */
+.widget-buttons-grid flowboxchild > button {
+ border-radius: var(--border-radius);
+}
+
+.widget-buttons-grid flowboxchild > button.toggle:checked {
+ /* style given to the active toggle button */
+}
+
+/* Menubar widget */
+.widget-menubar {
+ /* The revealer buttons */
+ /* .AnyName { Name defined in config after #
+ background-color: rgba(var(--noti-bg), 1.0);
+ padding: 8px;
+ margin: 8px;
+ border-radius: 12px;
+ }
+
+ .AnyName>button {
+ background: transparent;
+ border: none;
+ }
+
+ .AnyName>button:hover {
+ background-color: var(--noti-bg-hover);
+ } */
+}
+
+.widget-menubar > .menu-button-bar {
+ /* The left button container */
+ /* The right button container */
+ /* The left and right button container */
+}
+
+.widget-menubar > .menu-button-bar > .start {
+ margin-left: 8px;
+}
+
+.widget-menubar > .menu-button-bar > .end {
+ margin-right: 8px;
+}
+
+.widget-menubar > .menu-button-bar > .widget-menubar-container button {
+ border-radius: var(--border-radius);
+ margin: 0 4px;
+}
+
+.widget-menubar > revealer * {
+ margin-top: 8px;
+}
+
+.widget-menubar > revealer * button {
+ border-radius: var(--border-radius);
+ margin: 8px;
+ margin-top: 0;
+}
+
+.widget-menubar > revealer * button:last-child {
+ margin-bottom: 0;
+}
+
+/* Volume widget */
+:root {
+ --widget-volume-row-icon-size: 24px;
+}
+
+/* Each row app icon */
+.widget-volume row image {
+ -gtk-icon-size: var(--widget-volume-row-icon-size);
+}
+
+.per-app-volume {
+ background-color: var(--noti-bg-alt);
+ margin: 8px;
+ margin-bottom: 0;
+ border-radius: var(--border-radius);
+}
+
+/* Slider widget */
+.widget-slider label {
+ font-size: inherit;
+}
+
+/* Backlight widget */
+/* Inhibitors widget */
+.widget-inhibitors > label {
+ margin-right: 8px;
+ font-size: 1.5rem;
+}
+
+.widget-inhibitors > button {
+ margin-left: 8px;
+ border-radius: var(--border-radius);
+}
diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
new file mode 100644
index 0000000..e0f2865
--- /dev/null
+++ b/.config/waybar/config.jsonc
@@ -0,0 +1,125 @@
+{
+ "layer": "top",
+ "modules-left": ["sway/workspaces", "sway/mode", "sway/window"],
+ "modules-center": [],
+ "modules-right": [
+ "bluetooth",
+ "network",
+ "disk",
+ "memory",
+ "cpu",
+ "wireplumber",
+ "backlight",
+ "battery",
+ "clock",
+ "privacy",
+ "idle_inhibitor",
+ "custom/notifications",
+ "custom/power"
+ ],
+ "sway/workspaces": {
+ "disable-scroll": true,
+ "format": "{name}"
+ },
+ "sway/window": {},
+ "bluetooth": {
+ "format": " {status}",
+ "format-off": " OFF",
+ "format-on": " ON",
+ "format-connected": " {device_alias}",
+ "tooltip-format": "status: {status}\nconnections: {num_connections}\n[>] {controller_alias} ({controller_address_type}): {controller_address}\n[<] {device_alias} ({device_address_type}): {device_address}\n\n{device_enumerate}",
+ "on-click": "/home/alemi/.local/bin/toggles/bluetooth.sh",
+ "on-click-right": "blueman-manager"
+ },
+ "network": {
+ "interval": 10,
+ "interface": "wlp3s0",
+ "format": "⇅ ...",
+ "format-ethernet": "⇄ {ipaddr}",
+ "format-wifi": "⇅ {ipaddr} ({bandwidthTotalBytes})",
+ "format-disabled": "⇅ OFF",
+ "tooltip-format": "connecting...",
+ "tooltip-format-ethernet": "{ifname}",
+ "tooltip-format-disabled": "eth disconnected, wifi disabled",
+ "tooltip-format-wifi": "{ifname}: {essid}\nstrength: {signalStrength}\nfrequency: {frequency}GHz",
+ "on-click": "/home/alemi/.local/bin/toggles/wifi.sh",
+ "on-click-right": "nm-connection-editor"
+ },
+ "disk": {
+ "format": "🖬 {free}",
+ "tooltip-format": "{used} / {total} used ({percentage_used}%)\n{free} available ({percentage_free}%)",
+ "on-click-right": "baobab"
+ },
+ "memory": {
+ "format": "🖿 {avail}GiB",
+ "tooltip-format": "{used}GiB / {total}GiB used ({percentage}%)\n{avail}GiB available",
+ "on-click-right": "nemo"
+ },
+ "cpu": {
+ "interval": 5,
+ "format": "⚒ {usage}% ({avg_frequency}GHz)",
+ "on-click-right": "gnome-system-monitor"
+ },
+ "wireplumber": {
+ "interval": 60,
+ "format": "♪ {volume}%",
+ "on-click": "amixer sset 'Master' toggle",
+ "on-click-right": "pavucontrol",
+ "on-click-middle": "amixer sset 'Capture' toggle"
+ },
+ "backlight": {
+ "interval": 60,
+ "format": "☼ {percent}%",
+ "tooltip-format": "brightness: {percent}%",
+ "on-click-right": "wdisplays"
+ },
+ "battery": {
+ "interval": 15,
+ "format": "{icon} {capacity}%",
+ "format-icons": ["", "", "", "", ""],
+ "on-click": "gnome-power-statistics",
+ "on-click-right": "sysprof"
+ },
+ "clock": {
+ "interval": 1,
+ "format": "⏲ {:%a, %d %b - %H:%M.%S}",
+ "tooltip-format": "{tz_list}",
+ "timezones": [
+ "Europe/Rome",
+ "America/Chicago"
+ ],
+ "on-click-right": "gnome-clocks"
+ },
+ "privacy": {
+ "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
+ }
+ ]
+ },
+ "idle_inhibitor": {
+ "format": "🗲"
+ },
+ "custom/notifications": {
+ "on-click": "swaync-client --toggle-panel",
+ "tooltip-format": "show notifications center",
+ "format": " ▼ "
+ },
+ "custom/power": {
+ "format": " ⏻ ",
+ "on-click": "/home/alemi/.local/bin/toggles/power.sh"
+ }
+}
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..88e7e9b
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,266 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: Hack;
+ font-size: 14px;
+ transition-duration: 100ms;
+}
+
+window#waybar {
+ background-color: rgba(0, 0, 0, 0.75);
+ 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 #BF616A;
+}
+
+#workspaces button {
+ padding: 0 10px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused, #workspaces button.active {
+ background-color: rgba(191, 97, 106, 0.5);
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#workspaces button.urgent {
+ background-color: #BF616A;
+}
+
+#mode {
+ background-color: rgba(235, 203, 139, 0.5);
+ box-shadow: inset 0 -3px #EBCB8B;
+}
+
+#window {
+ padding-left: 20px;
+ padding-right: 20px;
+ color: #848291;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#power-profiles-daemon,
+#bluetooth,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#window,
+#workspaces {
+ margin: 0 4px;
+}
+
+/* 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:hover {
+ box-shadow: inset 0 -3px #64727D;
+}
+
+#battery:hover {
+ box-shadow: inset 0 -3px #EBCB8B;
+}
+
+#battery.charging, #battery.plugged {
+ box-shadow: inset 0 -3px #81A1C1;
+ background-color: rgba(129, 161, 193, 0.5);
+}
+
+#battery.critical:not(.charging) {
+ box-shadow: inset 0 -3px #BF616A;
+ background-color: rgba(191, 97, 106, 0.5);
+}
+
+label:focus {
+ background-color: #000000;
+}
+
+#cpu:hover {
+ box-shadow: inset 0 -3px #84508C;
+}
+
+#memory:hover {
+ box-shadow: inset 0 -3px #05979A;
+}
+
+#disk:hover {
+ box-shadow: inset 0 -3px #AF875F;
+}
+
+#backlight:hover {
+ box-shadow: inset 0 -3px #D4D2CF;
+}
+
+#bluetooth:hover {
+ box-shadow: inset 0 -3px #5B6EA3;
+}
+
+#bluetooth.off {
+ background-color: rgba(191, 97, 106, 0.5);
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#bluetooth.connected {
+ background-color: rgba(91, 110, 163, 0.5);
+ box-shadow: inset 0 -3px #5B6EA3;
+}
+
+#network:hover {
+ box-shadow: inset 0 -3px #2E8757;
+}
+
+#network.disconnected {
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#network.disabled {
+ background-color: rgba(191, 97, 106, 0.5);
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#wireplumber:hover {
+ box-shadow: inset 0 -3px #EBBC8B;
+}
+
+#wireplumber.source-muted {
+ box-shadow: inset 0 -3px #EBBC8B;
+}
+
+#wireplumber.muted {
+ background-color: rgba(235, 203, 139, 0.5);
+ box-shadow: inset 0 -3px #EBBC8B;
+}
+
+#temperature {
+ background-color: #f0932b;
+}
+
+#temperature.critical {
+ background-color: #eb4d4b;
+}
+
+#tray {
+ background-color: #2980b9;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+#idle_inhibitor:hover {
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#idle_inhibitor.activated {
+ background-color: rgba(191, 97, 106, 0.5);
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad.empty {
+ background-color: transparent;
+}
+
+#privacy {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+
+#privacy-item {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+#privacy-item.screenshare {
+ background-color: rgba(191, 97, 106, 0.5);
+ box-shadow: inset 0 -3px #BF616A;
+}
+
+#privacy-item.audio-in {
+ background-color: rgba(235, 203, 139, 0.5);
+ box-shadow: inset 0 -3px #EBCB8B;
+}
+
+#privacy-item.audio-out {
+ background-color: rgba(129, 161, 193, 0.5);
+ box-shadow: inset 0 -3px #81A1C1;
+}
+
+#custom-notifications:hover {
+ box-shadow: inset 0 -3px #ADA9A1;
+}
+
+#custom-power:hover {
+ background-color: rgba(32, 31, 41, 0.8);
+ box-shadow: inset 0 -3px #FFFFFF;
+}
diff --git a/.config/wofi/config b/.config/wofi/config
new file mode 100644
index 0000000..ad78786
--- /dev/null
+++ b/.config/wofi/config
@@ -0,0 +1,7 @@
+mode=drun
+prompt=search applications...
+allow_images=true
+allow_markup=true
+gtk_dark=true
+key_expand=Tab
+single_click=true
diff --git a/.config/wofi/prompt-style.css b/.config/wofi/prompt-style.css
new file mode 100644
index 0000000..935b730
--- /dev/null
+++ b/.config/wofi/prompt-style.css
@@ -0,0 +1,12 @@
+* {
+ font-size: 15pt;
+ background-color: rgba(0, 0, 0, 1);
+}
+#window {
+ background-color: rgba(0, 0, 0, 1);
+}
+
+#selected {
+ background-color: rgba(0, 0, 0, 0);
+ color: rgba(0, 0, 0, 0);
+}
diff --git a/.config/wofi/style.css b/.config/wofi/style.css
new file mode 100644
index 0000000..1a7f4f6
--- /dev/null
+++ b/.config/wofi/style.css
@@ -0,0 +1,9 @@
+#window {
+ background-color: rgba(32, 31, 41, 0.9);
+}
+
+#input {
+ background-color: rgba(32, 31, 41, 0.9);
+ padding: 1em;
+ border: 2px solid rgba(191, 97, 106, 0.9);
+}