diff options
| author | 2025-11-21 00:37:34 +0100 | |
|---|---|---|
| committer | 2025-11-21 00:37:34 +0100 | |
| commit | 8c37c85154de815760276764f3751d87f74b3b7d (patch) | |
| tree | 8a5f3e7374db9db35f38bea35a5106126e736d3a | |
| parent | aef23862b8edbdea3b3349fe71c10e000143af73 (diff) | |
| -rw-r--r-- | .config/gtklock/config.ini | 5 | ||||
| -rw-r--r-- | .config/gtklock/style.css | 5 | ||||
| -rw-r--r-- | .config/kanshi/config | 22 | ||||
| -rw-r--r-- | .config/sway/config | 408 | ||||
| -rw-r--r-- | .config/swayidle/config | 6 | ||||
| -rw-r--r-- | .config/swaync/config.json | 99 | ||||
| -rw-r--r-- | .config/swaync/style.css | 574 | ||||
| -rw-r--r-- | .config/waybar/config.jsonc | 125 | ||||
| -rw-r--r-- | .config/waybar/style.css | 266 | ||||
| -rw-r--r-- | .config/wofi/config | 7 | ||||
| -rw-r--r-- | .config/wofi/prompt-style.css | 12 | ||||
| -rw-r--r-- | .config/wofi/style.css | 9 |
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" { + mode [email protected] + position 0,180 + scale 1 + alias $DOCK +} + +output "Chimei Innolux Corporation 0x1239 Unknown" { + mode [email protected] + 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); +} |
