Initial commit
This commit is contained in:
commit
75df859eeb
21 changed files with 1123 additions and 0 deletions
49
check-pkg
Normal file
49
check-pkg
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
packages=(
|
||||||
|
gnome-themes-extra
|
||||||
|
autotiling
|
||||||
|
blueman
|
||||||
|
bluez
|
||||||
|
bluez-utils
|
||||||
|
dconf-editor
|
||||||
|
eog
|
||||||
|
file-roller
|
||||||
|
gnome-keyring
|
||||||
|
grim
|
||||||
|
groff
|
||||||
|
mako
|
||||||
|
network-manager-applet
|
||||||
|
networkmanager
|
||||||
|
noto-fonts-emoji
|
||||||
|
nwg-bar
|
||||||
|
nwg-displays
|
||||||
|
papirus-icon-theme
|
||||||
|
pavucontrol
|
||||||
|
pipewire-alsa
|
||||||
|
pipewire-pulse
|
||||||
|
playerctl
|
||||||
|
qt5-wayland
|
||||||
|
seahorse
|
||||||
|
slurp
|
||||||
|
sway
|
||||||
|
swaybg
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
ttf-liberation
|
||||||
|
ttf-nerd-fonts-symbols-2048-em
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
xdg-user-dirs
|
||||||
|
xfce4-appfinder
|
||||||
|
xfce4-terminal
|
||||||
|
xfconf
|
||||||
|
xorg-server
|
||||||
|
xorg-xkill
|
||||||
|
xorg-xprop
|
||||||
|
xorg-xwayland
|
||||||
|
)
|
||||||
|
|
||||||
|
for pkg in "${packages[@]}"; do
|
||||||
|
pacman -Qi "$pkg" >/dev/null 2>&1 || echo "$pkg"
|
||||||
|
done
|
23
config/mako/config
Normal file
23
config/mako/config
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
anchor=top-center
|
||||||
|
sort=-time
|
||||||
|
layer=overlay
|
||||||
|
background-color=#4b5162
|
||||||
|
width=300
|
||||||
|
height=500
|
||||||
|
padding=10
|
||||||
|
border-size=0
|
||||||
|
border-color=#285577
|
||||||
|
border-radius=5
|
||||||
|
font=Liberation Sans 12
|
||||||
|
icons=1
|
||||||
|
max-icon-size=64
|
||||||
|
default-timeout=5000
|
||||||
|
ignore-timeout=1
|
||||||
|
|
||||||
|
[urgency=high]
|
||||||
|
border-color=#bf616a
|
||||||
|
default-timeout=0
|
||||||
|
|
||||||
|
[category=mpd]
|
||||||
|
default-timeout=2000
|
||||||
|
group-by=category
|
22
config/nwg-bar/bar.json
Normal file
22
config/nwg-bar/bar.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"label": "Lock",
|
||||||
|
"exec": "swaylock -f -i $HOME/.config/sway/wallpapers/lockscreen_wallpaper.jpg",
|
||||||
|
"icon": "/home/prurigro/.config/nwg-bar/icons/system-lock-screen.svg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Logout",
|
||||||
|
"exec": "swaymsg exit",
|
||||||
|
"icon": "/home/prurigro/.config/nwg-bar/icons/system-log-out.svg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Reboot",
|
||||||
|
"exec": "systemctl reboot",
|
||||||
|
"icon": "/home/prurigro/.config/nwg-bar/icons/system-reboot.svg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Shutdown",
|
||||||
|
"exec": "systemctl -i poweroff",
|
||||||
|
"icon": "/home/prurigro/.config/nwg-bar/icons/system-shutdown.svg"
|
||||||
|
}
|
||||||
|
]
|
1
config/nwg-bar/icons/system-lock-screen.svg
Normal file
1
config/nwg-bar/icons/system-lock-screen.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" version="1" stroke="#262c37" xmlns="http://www.w3.org/2000/svg"><path style="fill:#262c37" d="M8 2.975c-1.612 0-3 1.274-3 2.857v1.143h-.49c-.282 0-.51.25-.51.527v3.973c0 .277.228.5.51.5h6.98c.282 0 .51-.223.51-.5V7.502c0-.277-.229-.545-.51-.527H11V5.832c0-1.583-1.389-2.857-3-2.857zm0 .888c1.175 0 2 .819 2 1.887v1.113H6V5.75c0-1.069.825-1.887 2-1.887zm-.002 4.6A1.037 1.037 0 0 1 9.035 9.5a1.037 1.037 0 0 1-1.037 1.037A1.037 1.037 0 0 1 6.961 9.5a1.037 1.037 0 0 1 1.037-1.037z"/></svg>
|
After Width: | Height: | Size: 516 B |
1
config/nwg-bar/icons/system-log-out.svg
Normal file
1
config/nwg-bar/icons/system-log-out.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" version="1" stroke="#262c37" xmlns="http://www.w3.org/2000/svg"><path d="M8 3a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5Zm0 1a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4Zm0 2 1.486 1.025L11 8l-1.514.975L8 10l.012-1H6.5C6.223 9 6 8.554 6 8s.223-1 .5-1h1.512z" style="fill:#262c37"/></svg>
|
After Width: | Height: | Size: 340 B |
1
config/nwg-bar/icons/system-reboot.svg
Normal file
1
config/nwg-bar/icons/system-reboot.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" version="1" stroke="#262c37" xmlns="http://www.w3.org/2000/svg"><path d="M11.874 5.552q.336.525.524 1.157Q12.6 7.34 12.6 8q0 .955-.363 1.789t-.996 1.466q-.618.619-1.452.982T8 12.6v1.722l-2.287-2.314L8 9.722v1.721q.713 0 1.345-.269t1.09-.726q.47-.47.74-1.103.268-.619.268-1.345 0-.444-.107-.847-.108-.404-.296-.767zM8 4.557q-.713 0-1.345.269t-1.103.74q-.457.47-.726 1.089-.27.632-.27 1.345 0 .444.095.847.108.404.31.767l-.835.834q-.336-.525-.538-1.143Q3.4 8.673 3.4 8q0-.941.363-1.775.363-.848.982-1.466.632-.633 1.466-.996T8 3.4V1.68l2.286 2.313L8 6.278Z" aria-label="" style="font-size:13.7728px;line-height:1.25;letter-spacing:0;word-spacing:0;fill:#262c37;stroke-width:.344321"/></svg>
|
After Width: | Height: | Size: 719 B |
1
config/nwg-bar/icons/system-shutdown.svg
Normal file
1
config/nwg-bar/icons/system-shutdown.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" version="1" stroke="#262c37" xmlns="http://www.w3.org/2000/svg"><path d="M8 3a5 5 0 0 0-5 5 5 5 0 0 0 5 5 5 5 0 0 0 5-5 5 5 0 0 0-5-5zm0 1a4 4 0 0 1 4 4 4 4 0 0 1-4 4 4 4 0 0 1-4-4 4 4 0 0 1 4-4z"/><path d="M8 6c-.554 0-1 .223-1 .5v3c0 .277.446.5 1 .5s1-.223 1-.5v-3c0-.277-.446-.5-1-.5z"/></svg>
|
After Width: | Height: | Size: 324 B |
39
config/nwg-bar/style.css
Normal file
39
config/nwg-bar/style.css
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
window {
|
||||||
|
background-color: rgba (0, 0, 0, 0.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Outer bar container, takes all the window width/height */
|
||||||
|
#outer-box {
|
||||||
|
margin: 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner bar container, surrounds buttons */
|
||||||
|
#inner-box {
|
||||||
|
background-color: @theme_base_color;
|
||||||
|
border-radius: 10px;
|
||||||
|
border-style: none;
|
||||||
|
border-width: 1px;
|
||||||
|
border-color: rgba (156, 142, 122, 0.7);
|
||||||
|
padding: 5px;
|
||||||
|
margin: 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
button, image {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin: 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
button:focus {
|
||||||
|
background-color: rgba (255, 255, 255, 0.1)
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: rgba (255, 255, 255, 0.1)
|
||||||
|
}
|
253
config/sway/config
Normal file
253
config/sway/config
Normal file
|
@ -0,0 +1,253 @@
|
||||||
|
# Sway Configuration
|
||||||
|
#
|
||||||
|
# Read `man 5 sway` for a complete reference.
|
||||||
|
|
||||||
|
# Disable xwayland
|
||||||
|
#xwayland disable
|
||||||
|
|
||||||
|
# Font
|
||||||
|
font Liberation Mono 12
|
||||||
|
|
||||||
|
# Background
|
||||||
|
output "*" bg ~/.config/sway/wallpapers/wallpaper.jpg fill
|
||||||
|
|
||||||
|
# Logo key. Use Mod1 for Alt.
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# Direction keys
|
||||||
|
set $left Left
|
||||||
|
set $down Down
|
||||||
|
set $up Up
|
||||||
|
set $right Right
|
||||||
|
|
||||||
|
# Your preferred terminal emulator
|
||||||
|
set $term xfce4-terminal
|
||||||
|
|
||||||
|
# Keyboard
|
||||||
|
input "1:1:AT_Translated_Set_2_keyboard" {
|
||||||
|
xkb_layout us,ca
|
||||||
|
xkb_variant ,multix
|
||||||
|
xkb_options grp:shifts_toggle
|
||||||
|
}
|
||||||
|
|
||||||
|
# Touchpad
|
||||||
|
input type:touchpad {
|
||||||
|
dwt enabled
|
||||||
|
tap disabled
|
||||||
|
natural_scroll enabled
|
||||||
|
tap_button_map lrm
|
||||||
|
click_method clickfinger
|
||||||
|
}
|
||||||
|
|
||||||
|
# Screen Lock
|
||||||
|
exec swayidle -w \
|
||||||
|
timeout 300 'swaylock -f -i $HOME/.config/sway/wallpapers/lockscreen_wallpaper.jpg' \
|
||||||
|
timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||||
|
before-sleep 'swaylock -f -c 000000'
|
||||||
|
|
||||||
|
# Autostart
|
||||||
|
exec systemctl start --user gnome-keyring-daemon
|
||||||
|
exec blueman-applet
|
||||||
|
exec nm-applet --indicator
|
||||||
|
exec --no-startup-id mako
|
||||||
|
exec $HOME/.config/sway/scripts/inactive-windows-transparency.py
|
||||||
|
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
exec autotiling
|
||||||
|
|
||||||
|
# GTK Theme
|
||||||
|
set $gnome-schema org.gnome.desktop.interface
|
||||||
|
|
||||||
|
exec_always {
|
||||||
|
gsettings set $gnome-schema gtk-theme 'Adwaita-dark'
|
||||||
|
gsettings set $gnome-schema icon-theme 'Papirus-Dark'
|
||||||
|
}
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
|
||||||
|
#
|
||||||
|
# Misc:
|
||||||
|
#
|
||||||
|
|
||||||
|
# Start a terminal
|
||||||
|
bindsym Ctrl+Alt+t exec $term
|
||||||
|
|
||||||
|
# Start a file manager
|
||||||
|
bindsym Ctrl+Alt+f exec thunar
|
||||||
|
|
||||||
|
# Kill focused window
|
||||||
|
bindsym $mod+w kill
|
||||||
|
|
||||||
|
# Start your launcher
|
||||||
|
bindsym $mod+space exec xfce4-appfinder
|
||||||
|
|
||||||
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
|
# Resize them with right mouse button + $mod.
|
||||||
|
# Despite the name, also works for non-floating windows.
|
||||||
|
# Change normal to inverse to use left mouse button for resizing and right
|
||||||
|
# mouse button for dragging.
|
||||||
|
floating_modifier $mod normal
|
||||||
|
|
||||||
|
# Reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# Lock screen
|
||||||
|
bindsym $mod+l exec swaylock -f -i $HOME/.config/sway/wallpapers/lockscreen_wallpaper.jpg
|
||||||
|
|
||||||
|
# Show options to lock, logout, reboot or shutdown
|
||||||
|
bindsym Ctrl+Alt+Delete exec nwg-bar -t bar.json
|
||||||
|
|
||||||
|
# Media
|
||||||
|
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
|
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||||
|
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||||
|
bindcode 248 exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
|
bindsym XF86AudioNext exec playerctl next
|
||||||
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
|
|
||||||
|
# Brightness controls
|
||||||
|
#bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||||
|
#bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bindsym Print exec $HOME/.config/sway/scripts/grimshot.sh save output
|
||||||
|
bindsym Shift+Print exec $HOME/.config/sway/scripts/grimshot.sh save active
|
||||||
|
bindsym Ctrl+Print exec $HOME/.config/sway/scripts/grimshot.sh save area
|
||||||
|
|
||||||
|
#
|
||||||
|
# Moving around:
|
||||||
|
#
|
||||||
|
|
||||||
|
# Move your focus around
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
|
||||||
|
# Move the focused window with the same, but add Shift
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
|
||||||
|
#
|
||||||
|
# Workspaces:
|
||||||
|
#
|
||||||
|
|
||||||
|
# Switch to next/previous workspace
|
||||||
|
bindsym $mod+p workspace prev
|
||||||
|
bindsym $mod+n workspace next
|
||||||
|
|
||||||
|
# Switch to a particular workspace
|
||||||
|
bindsym $mod+1 workspace number 1
|
||||||
|
bindsym $mod+2 workspace number 2
|
||||||
|
bindsym $mod+3 workspace number 3
|
||||||
|
bindsym $mod+4 workspace number 4
|
||||||
|
bindsym $mod+5 workspace number 5
|
||||||
|
bindsym $mod+6 workspace number 6
|
||||||
|
bindsym $mod+7 workspace number 7
|
||||||
|
bindsym $mod+8 workspace number 8
|
||||||
|
bindsym $mod+9 workspace number 9
|
||||||
|
bindsym $mod+0 workspace number 10
|
||||||
|
|
||||||
|
# Move focused container and switch to a particular workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace number 10; workspace number 10
|
||||||
|
|
||||||
|
# Note: workspaces can have any name you want, not just numbers.
|
||||||
|
# We just use 1-10 as the default.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Layout stuff:
|
||||||
|
#
|
||||||
|
|
||||||
|
default_border pixel 2
|
||||||
|
default_floating_border normal 2
|
||||||
|
gaps inner 20
|
||||||
|
|
||||||
|
# You can "split" the current object of your focus with
|
||||||
|
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||||
|
# respectively.
|
||||||
|
bindsym $mod+h splith
|
||||||
|
bindsym $mod+v splitv
|
||||||
|
|
||||||
|
# Switch the current container between different layout styles
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+t layout tabbed
|
||||||
|
bindsym $mod+Shift+s layout toggle split
|
||||||
|
bindsym $mod+Shift+t layout toggle split
|
||||||
|
|
||||||
|
# Make the current focus fullscreen
|
||||||
|
bindsym $mod+f fullscreen
|
||||||
|
|
||||||
|
# Toggle the current focus between tiling and floating mode
|
||||||
|
bindsym $mod+Return floating toggle
|
||||||
|
|
||||||
|
# Swap focus between the tiling area and the floating area
|
||||||
|
bindsym Alt+Tab focus mode_toggle
|
||||||
|
|
||||||
|
#
|
||||||
|
# Scratchpad:
|
||||||
|
#
|
||||||
|
|
||||||
|
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||||
|
# You can send windows there and get them back later.
|
||||||
|
# Move the currently focused window to the scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
|
||||||
|
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||||
|
# If there are multiple scratchpad windows, this command cycles through them.
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
|
#
|
||||||
|
# Resizing containers:
|
||||||
|
#
|
||||||
|
|
||||||
|
mode "resize" {
|
||||||
|
# left will shrink the containers width
|
||||||
|
# right will grow the containers width
|
||||||
|
# up will shrink the containers height
|
||||||
|
# down will grow the containers height
|
||||||
|
bindsym $left resize shrink width 10px
|
||||||
|
bindsym $down resize grow height 10px
|
||||||
|
bindsym $up resize shrink height 10px
|
||||||
|
bindsym $right resize grow width 10px
|
||||||
|
|
||||||
|
# Return to default mode
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Rules
|
||||||
|
#
|
||||||
|
|
||||||
|
for_window [app_id="blueman-manager"] floating enable, resize set width 680 height 400, move position center
|
||||||
|
for_window [app_id="xfce4-appfinder"] floating enable, resize set width 680 height 480, move position center
|
||||||
|
for_window [app_id="eog"] floating enable, move position center
|
||||||
|
for_window [app_id="org.gnome.Calculator"] floating enable, move position center
|
||||||
|
for_window [app_id="nm-connection-editor"] floating enable, move position center
|
||||||
|
for_window [app_id="org.keepassxc.KeePassXC"] floating enable, move position center
|
||||||
|
for_window [app_id="pavucontrol"] floating enable, resize set width 680 height 400, move position center
|
||||||
|
for_window [class="^.*"] inhibit_idle fullscreen
|
||||||
|
for_window [app_id="^.*"] inhibit_idle fullscreen
|
||||||
|
|
||||||
|
#
|
||||||
|
# Status Bar:
|
||||||
|
#
|
||||||
|
|
||||||
|
bar {
|
||||||
|
swaybar_command waybar
|
||||||
|
}
|
||||||
|
|
||||||
|
include /etc/sway/config.d/*
|
7
config/sway/config.d/50-systemd-user.conf
Normal file
7
config/sway/config.d/50-systemd-user.conf
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment
|
||||||
|
# See FS#63021
|
||||||
|
# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal.
|
||||||
|
|
||||||
|
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||||
|
exec hash dbus-update-activation-environment 2>/dev/null && \
|
||||||
|
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
130
config/sway/scripts/autoname-workspaces.py
Executable file
130
config/sway/scripts/autoname-workspaces.py
Executable file
|
@ -0,0 +1,130 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# This script requires i3ipc-python package (install it from a system package manager
|
||||||
|
# or pip).
|
||||||
|
# It adds icons to the workspace name for each open window.
|
||||||
|
# Set your keybindings like this: set $workspace1 workspace number 1
|
||||||
|
# Add your icons to WINDOW_ICONS.
|
||||||
|
# Based on https://github.com/maximbaz/dotfiles/blob/master/bin/i3-autoname-workspaces
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import i3ipc
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
|
||||||
|
WINDOW_ICONS = {
|
||||||
|
"firefox": "",
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFAULT_ICON = ""
|
||||||
|
|
||||||
|
|
||||||
|
def icon_for_window(window):
|
||||||
|
app_id = window.app_id
|
||||||
|
if app_id is not None and len(app_id) > 0:
|
||||||
|
app_id = app_id.lower()
|
||||||
|
if app_id in WINDOW_ICONS:
|
||||||
|
return WINDOW_ICONS[app_id]
|
||||||
|
logging.info("No icon available for window with app_id: %s" % str(app_id))
|
||||||
|
else:
|
||||||
|
# xwayland support
|
||||||
|
class_name = window.window_class
|
||||||
|
if len(class_name) > 0:
|
||||||
|
class_name = class_name.lower()
|
||||||
|
if class_name in WINDOW_ICONS:
|
||||||
|
return WINDOW_ICONS[class_name]
|
||||||
|
logging.info(
|
||||||
|
"No icon available for window with class_name: %s" % str(class_name)
|
||||||
|
)
|
||||||
|
return DEFAULT_ICON
|
||||||
|
|
||||||
|
|
||||||
|
def rename_workspaces(ipc):
|
||||||
|
for workspace in ipc.get_tree().workspaces():
|
||||||
|
name_parts = parse_workspace_name(workspace.name)
|
||||||
|
icon_tuple = ()
|
||||||
|
for w in workspace:
|
||||||
|
if w.app_id is not None or w.window_class is not None:
|
||||||
|
icon = icon_for_window(w)
|
||||||
|
if not ARGUMENTS.duplicates and icon in icon_tuple:
|
||||||
|
continue
|
||||||
|
icon_tuple += (icon,)
|
||||||
|
name_parts["icons"] = " ".join(icon_tuple) + " "
|
||||||
|
new_name = construct_workspace_name(name_parts)
|
||||||
|
ipc.command('rename workspace "%s" to "%s"' % (workspace.name, new_name))
|
||||||
|
|
||||||
|
|
||||||
|
def undo_window_renaming(ipc):
|
||||||
|
for workspace in ipc.get_tree().workspaces():
|
||||||
|
name_parts = parse_workspace_name(workspace.name)
|
||||||
|
name_parts["icons"] = None
|
||||||
|
new_name = construct_workspace_name(name_parts)
|
||||||
|
ipc.command('rename workspace "%s" to "%s"' % (workspace.name, new_name))
|
||||||
|
ipc.main_quit()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_workspace_name(name):
|
||||||
|
return re.match(
|
||||||
|
"(?P<num>[0-9]+):?(?P<shortname>\w+)? ?(?P<icons>.+)?", name
|
||||||
|
).groupdict()
|
||||||
|
|
||||||
|
|
||||||
|
def construct_workspace_name(parts):
|
||||||
|
new_name = str(parts["num"])
|
||||||
|
if parts["shortname"] or parts["icons"]:
|
||||||
|
new_name += ":"
|
||||||
|
|
||||||
|
if parts["shortname"]:
|
||||||
|
new_name += parts["shortname"]
|
||||||
|
|
||||||
|
if parts["icons"]:
|
||||||
|
new_name += " " + parts["icons"]
|
||||||
|
|
||||||
|
return new_name
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="This script automatically changes the workspace name in sway depending on your open applications."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--duplicates",
|
||||||
|
"-d",
|
||||||
|
action="store_true",
|
||||||
|
help="Set it when you want an icon for each instance of the same application per workspace.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--logfile",
|
||||||
|
"-l",
|
||||||
|
type=str,
|
||||||
|
default="/tmp/sway-autoname-workspaces.log",
|
||||||
|
help="Path for the logfile.",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
global ARGUMENTS
|
||||||
|
ARGUMENTS = args
|
||||||
|
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
filename=ARGUMENTS.logfile,
|
||||||
|
filemode="w",
|
||||||
|
format="%(message)s",
|
||||||
|
)
|
||||||
|
|
||||||
|
ipc = i3ipc.Connection()
|
||||||
|
|
||||||
|
for sig in [signal.SIGINT, signal.SIGTERM]:
|
||||||
|
signal.signal(sig, lambda signal, frame: undo_window_renaming(ipc))
|
||||||
|
|
||||||
|
def window_event_handler(ipc, e):
|
||||||
|
if e.change in ["new", "close", "move"]:
|
||||||
|
rename_workspaces(ipc)
|
||||||
|
|
||||||
|
ipc.on("window", window_event_handler)
|
||||||
|
|
||||||
|
rename_workspaces(ipc)
|
||||||
|
|
||||||
|
ipc.main()
|
154
config/sway/scripts/grimshot.sh
Executable file
154
config/sway/scripts/grimshot.sh
Executable file
|
@ -0,0 +1,154 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
## Grimshot: a helper for screenshots within sway
|
||||||
|
## Requirements:
|
||||||
|
## - `grim`: screenshot utility for wayland
|
||||||
|
## - `slurp`: to select an area
|
||||||
|
## - `swaymsg`: to read properties of current window
|
||||||
|
## - `wl-copy`: clipboard utility
|
||||||
|
## - `jq`: json utility to parse swaymsg output
|
||||||
|
## - `notify-send`: to show notifications
|
||||||
|
## Those are needed to be installed, if unsure, run `grimshot check`
|
||||||
|
##
|
||||||
|
## See `man 1 grimshot` or `grimshot usage` for further details.
|
||||||
|
|
||||||
|
getTargetDirectory() {
|
||||||
|
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && \
|
||||||
|
. ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
|
||||||
|
|
||||||
|
echo ${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR:-$HOME}}
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" = "--notify" ]; then
|
||||||
|
NOTIFY=yes
|
||||||
|
shift 1
|
||||||
|
else
|
||||||
|
NOTIFY=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
ACTION=${1:-usage}
|
||||||
|
SUBJECT=${2:-screen}
|
||||||
|
FILE=${3:-$(getTargetDirectory)/$(date -Ins).png}
|
||||||
|
|
||||||
|
if [ "$ACTION" != "save" ] && [ "$ACTION" != "copy" ] && [ "$ACTION" != "check" ]; then
|
||||||
|
echo "Usage:"
|
||||||
|
echo " grimshot [--notify] (copy|save) [active|screen|output|area|window] [FILE|-]"
|
||||||
|
echo " grimshot check"
|
||||||
|
echo " grimshot usage"
|
||||||
|
echo ""
|
||||||
|
echo "Commands:"
|
||||||
|
echo " copy: Copy the screenshot data into the clipboard."
|
||||||
|
echo " save: Save the screenshot to a regular file or '-' to pipe to STDOUT."
|
||||||
|
echo " check: Verify if required tools are installed and exit."
|
||||||
|
echo " usage: Show this message and exit."
|
||||||
|
echo ""
|
||||||
|
echo "Targets:"
|
||||||
|
echo " active: Currently active window."
|
||||||
|
echo " screen: All visible outputs."
|
||||||
|
echo " output: Currently active output."
|
||||||
|
echo " area: Manually select a region."
|
||||||
|
echo " window: Manually select a window."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
notify() {
|
||||||
|
notify-send -t 3000 -a grimshot "$@"
|
||||||
|
}
|
||||||
|
notifyOk() {
|
||||||
|
[ "$NOTIFY" = "no" ] && return
|
||||||
|
|
||||||
|
TITLE=${2:-"Screenshot"}
|
||||||
|
MESSAGE=${1:-"OK"}
|
||||||
|
notify "$TITLE" "$MESSAGE"
|
||||||
|
}
|
||||||
|
notifyError() {
|
||||||
|
if [ $NOTIFY = "yes" ]; then
|
||||||
|
TITLE=${2:-"Screenshot"}
|
||||||
|
MESSAGE=${1:-"Error taking screenshot with grim"}
|
||||||
|
notify -u critical "$TITLE" "$MESSAGE"
|
||||||
|
else
|
||||||
|
echo $1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
MSG=${1:-Bye}
|
||||||
|
notifyError "Error: $MSG"
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
COMMAND=$1
|
||||||
|
if command -v "$COMMAND" > /dev/null 2>&1; then
|
||||||
|
RESULT="OK"
|
||||||
|
else
|
||||||
|
RESULT="NOT FOUND"
|
||||||
|
fi
|
||||||
|
echo " $COMMAND: $RESULT"
|
||||||
|
}
|
||||||
|
|
||||||
|
takeScreenshot() {
|
||||||
|
FILE=$1
|
||||||
|
GEOM=$2
|
||||||
|
OUTPUT=$3
|
||||||
|
if [ ! -z "$OUTPUT" ]; then
|
||||||
|
grim -o "$OUTPUT" "$FILE" || die "Unable to invoke grim"
|
||||||
|
elif [ -z "$GEOM" ]; then
|
||||||
|
grim "$FILE" || die "Unable to invoke grim"
|
||||||
|
else
|
||||||
|
grim -g "$GEOM" "$FILE" || die "Unable to invoke grim"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$ACTION" = "check" ] ; then
|
||||||
|
echo "Checking if required tools are installed. If something is missing, install it to your system and make it available in PATH..."
|
||||||
|
check grim
|
||||||
|
check slurp
|
||||||
|
check swaymsg
|
||||||
|
check wl-copy
|
||||||
|
check jq
|
||||||
|
check notify-send
|
||||||
|
exit
|
||||||
|
elif [ "$SUBJECT" = "area" ] ; then
|
||||||
|
GEOM=$(slurp -d)
|
||||||
|
# Check if user exited slurp without selecting the area
|
||||||
|
if [ -z "$GEOM" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
WHAT="Area"
|
||||||
|
elif [ "$SUBJECT" = "active" ] ; then
|
||||||
|
FOCUSED=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]?, .floating_nodes[]?) | select(.focused)')
|
||||||
|
GEOM=$(echo "$FOCUSED" | jq -r '.rect | "\(.x),\(.y) \(.width)x\(.height)"')
|
||||||
|
APP_ID=$(echo "$FOCUSED" | jq -r '.app_id')
|
||||||
|
WHAT="$APP_ID window"
|
||||||
|
elif [ "$SUBJECT" = "screen" ] ; then
|
||||||
|
GEOM=""
|
||||||
|
WHAT="Screen"
|
||||||
|
elif [ "$SUBJECT" = "output" ] ; then
|
||||||
|
GEOM=""
|
||||||
|
OUTPUT=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused)' | jq -r '.name')
|
||||||
|
WHAT="$OUTPUT"
|
||||||
|
elif [ "$SUBJECT" = "window" ] ; then
|
||||||
|
GEOM=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)
|
||||||
|
# Check if user exited slurp without selecting the area
|
||||||
|
if [ -z "$GEOM" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
WHAT="Window"
|
||||||
|
else
|
||||||
|
die "Unknown subject to take a screen shot from" "$SUBJECT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ACTION" = "copy" ] ; then
|
||||||
|
takeScreenshot - "$GEOM" "$OUTPUT" | wl-copy --type image/png || die "Clipboard error"
|
||||||
|
notifyOk "$WHAT copied to buffer"
|
||||||
|
else
|
||||||
|
if takeScreenshot "$FILE" "$GEOM" "$OUTPUT"; then
|
||||||
|
TITLE="Screenshot of $SUBJECT"
|
||||||
|
MESSAGE=$(basename "$FILE")
|
||||||
|
notifyOk "$MESSAGE" "$TITLE"
|
||||||
|
echo $FILE
|
||||||
|
else
|
||||||
|
notifyError "Error taking screenshot with grim"
|
||||||
|
fi
|
||||||
|
fi
|
69
config/sway/scripts/inactive-windows-transparency.py
Executable file
69
config/sway/scripts/inactive-windows-transparency.py
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# This script requires i3ipc-python package (install it from a system package manager
|
||||||
|
# or pip).
|
||||||
|
# It makes inactive windows transparent. Use `transparency_val` variable to control
|
||||||
|
# transparency strength in range of 0…1 or use the command line argument -o.
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import i3ipc
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
def on_window_focus(inactive_opacity, ipc, event):
|
||||||
|
global prev_focused
|
||||||
|
global prev_workspace
|
||||||
|
|
||||||
|
focused_workspace = ipc.get_tree().find_focused()
|
||||||
|
|
||||||
|
if focused_workspace == None:
|
||||||
|
return
|
||||||
|
|
||||||
|
focused = event.container
|
||||||
|
workspace = focused_workspace.workspace().num
|
||||||
|
|
||||||
|
if focused.id != prev_focused.id: # https://github.com/swaywm/sway/issues/2859
|
||||||
|
focused.command("opacity 1")
|
||||||
|
if workspace == prev_workspace:
|
||||||
|
prev_focused.command("opacity " + inactive_opacity)
|
||||||
|
prev_focused = focused
|
||||||
|
prev_workspace = workspace
|
||||||
|
|
||||||
|
|
||||||
|
def remove_opacity(ipc):
|
||||||
|
for workspace in ipc.get_tree().workspaces():
|
||||||
|
for w in workspace:
|
||||||
|
w.command("opacity 1")
|
||||||
|
ipc.main_quit()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
transparency_val = "0.95"
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="This script allows you to set the transparency of unfocused windows in sway."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--opacity",
|
||||||
|
"-o",
|
||||||
|
type=str,
|
||||||
|
default=transparency_val,
|
||||||
|
help="set opacity value in range 0...1",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
ipc = i3ipc.Connection()
|
||||||
|
prev_focused = None
|
||||||
|
prev_workspace = ipc.get_tree().find_focused().workspace().num
|
||||||
|
|
||||||
|
for window in ipc.get_tree():
|
||||||
|
if window.focused:
|
||||||
|
prev_focused = window
|
||||||
|
else:
|
||||||
|
window.command("opacity " + args.opacity)
|
||||||
|
for sig in [signal.SIGINT, signal.SIGTERM]:
|
||||||
|
signal.signal(sig, lambda signal, frame: remove_opacity(ipc))
|
||||||
|
ipc.on("window::focus", partial(on_window_focus, args.opacity))
|
||||||
|
ipc.main()
|
BIN
config/sway/wallpapers/lockscreen_wallpaper.jpg
Normal file
BIN
config/sway/wallpapers/lockscreen_wallpaper.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 121 KiB |
BIN
config/sway/wallpapers/wallpaper.jpg
Normal file
BIN
config/sway/wallpapers/wallpaper.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 560 KiB |
24
config/swaylock/config
Normal file
24
config/swaylock/config
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# indicator
|
||||||
|
# no-unlock-indicator
|
||||||
|
# daemonize
|
||||||
|
indicator-caps-lock
|
||||||
|
# datestr=%A
|
||||||
|
image=$HOME/.config/sway/swaylock.png
|
||||||
|
scaling=fill
|
||||||
|
font=UbuntuMono
|
||||||
|
font-size=20
|
||||||
|
|
||||||
|
# Ring
|
||||||
|
indicator-radius=115
|
||||||
|
# line-uses-ring
|
||||||
|
line-color=#3b4252
|
||||||
|
text-color=#d8dee9
|
||||||
|
inside-color=#2e344098
|
||||||
|
inside-ver-color=#5e81ac
|
||||||
|
line-ver-color=#5e81ac
|
||||||
|
ring-ver-color=#5e81ac98
|
||||||
|
ring-color=#4c566a
|
||||||
|
key-hl-color=#5e81ac
|
||||||
|
separator-color=#4c566a
|
||||||
|
layout-text-color=#eceff4
|
||||||
|
line-wrong-color=#d08770
|
14
config/systemd/user/gnome-keyring-daemon.service
Normal file
14
config/systemd/user/gnome-keyring-daemon.service
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description=GNOME Keyring daemon
|
||||||
|
|
||||||
|
Requires=gnome-keyring-daemon.socket
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
StandardError=journal
|
||||||
|
ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components="pkcs11,secrets,ssh" --control-directory=%t/keyring
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
Also=gnome-keyring-daemon.socket
|
||||||
|
WantedBy=default.target
|
93
config/waybar/config
Normal file
93
config/waybar/config
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
// "layer": "top", // Waybar at top layer
|
||||||
|
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||||
|
// "height": 30, // Waybar height (to be removed for auto height)
|
||||||
|
"margin": "20 20 0 20",
|
||||||
|
// "width": 1280, // Waybar width
|
||||||
|
// Choose the order of the modules
|
||||||
|
"modules-left": ["sway/workspaces", "sway/window"],
|
||||||
|
"modules-center": ["clock"],
|
||||||
|
"modules-right": ["backlight", "battery", "custom/mem", "pulseaudio", "tray"],
|
||||||
|
|
||||||
|
//***************************
|
||||||
|
//* Modules configuration *
|
||||||
|
//***************************
|
||||||
|
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
|
||||||
|
"persistent_workspaces": {
|
||||||
|
"1": [],
|
||||||
|
"2": [],
|
||||||
|
"3": [],
|
||||||
|
"4": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"sway/window": {
|
||||||
|
"max-length": 80
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
// "timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format": "{:%a, %d %b, %I:%M %p}"
|
||||||
|
},
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"reverse-scrolling": 0,
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": "婢 {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "0% ",
|
||||||
|
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["奄", "奔", "墳"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
"min-length": 8
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/mem": {
|
||||||
|
"format": "{} ",
|
||||||
|
"interval": 3,
|
||||||
|
"exec": "free -h | awk '/Mem:/{printf $3}'",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
|
||||||
|
"backlight": {
|
||||||
|
"device": "intel_backlight",
|
||||||
|
"format": "{percent}% {icon}",
|
||||||
|
"format-icons": ["","","","", "", "", ""],
|
||||||
|
"min-length": 7
|
||||||
|
},
|
||||||
|
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
"format-icons": ["🪫", "🪫", "🪫", "🔋", "🔋", "🔋", "🔋", "🔋", "🔋", "🔋"],
|
||||||
|
"on-update": "$HOME/.config/waybar/scripts/battery.sh"
|
||||||
|
},
|
||||||
|
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 16,
|
||||||
|
"spacing": 8
|
||||||
|
}
|
||||||
|
}
|
13
config/waybar/scripts/battery.sh
Executable file
13
config/waybar/scripts/battery.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CRIT=${1:-15}
|
||||||
|
|
||||||
|
while read -r capacity; do
|
||||||
|
stat="$(cat "${capacity/capacity/status}")"
|
||||||
|
perc="$(cat "$capacity")"
|
||||||
|
bat="$(cut --delimiter='/' -f5 <<< "$capacity")"
|
||||||
|
|
||||||
|
if (( perc <= CRIT )) && [[ "$stat" = 'Discharging' ]]; then
|
||||||
|
notify-send --urgency=critical 'Battery Low' "Current charge of $bat: $perc%"
|
||||||
|
fi
|
||||||
|
done < <(find /sys/class/power_supply/*/ -type f -name capacity)
|
186
config/waybar/style.css
Normal file
186
config/waybar/style.css
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
/* `otf-font-awesome` is required to be installed for icons */
|
||||||
|
font-family: Liberation Mono;
|
||||||
|
min-height: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
margin-right: 8px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
transition: none;
|
||||||
|
color: #7c818c;
|
||||||
|
background: transparent;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||||
|
#workspaces button:hover {
|
||||||
|
transition: none;
|
||||||
|
box-shadow: inherit;
|
||||||
|
text-shadow: inherit;
|
||||||
|
border-radius: inherit;
|
||||||
|
color: #3c384a;
|
||||||
|
background: #7c818c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.persistent {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: white;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.empty #window {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px 10px 10px 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-mem {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #26A65B;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
background-color: #ffbe61;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
color: #ffffff;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #3c384a;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
43
packages
Normal file
43
packages
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
gnome-themes-extra
|
||||||
|
autotiling
|
||||||
|
blueman
|
||||||
|
bluez
|
||||||
|
bluez-utils
|
||||||
|
dconf-editor
|
||||||
|
eog
|
||||||
|
file-roller
|
||||||
|
gnome-keyring
|
||||||
|
grim
|
||||||
|
groff
|
||||||
|
mako
|
||||||
|
network-manager-applet
|
||||||
|
networkmanager
|
||||||
|
noto-fonts-emoji
|
||||||
|
nwg-bar
|
||||||
|
nwg-displays
|
||||||
|
papirus-icon-theme
|
||||||
|
pavucontrol
|
||||||
|
pipewire-alsa
|
||||||
|
pipewire-pulse
|
||||||
|
playerctl
|
||||||
|
qt5-wayland
|
||||||
|
seahorse
|
||||||
|
slurp
|
||||||
|
sway
|
||||||
|
swaybg
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
thunar
|
||||||
|
thunar-volman
|
||||||
|
ttf-liberation
|
||||||
|
ttf-nerd-fonts-symbols-2048-em
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
xdg-user-dirs
|
||||||
|
xfce4-appfinder
|
||||||
|
xfce4-terminal
|
||||||
|
xfconf
|
||||||
|
xorg-server
|
||||||
|
xorg-xkill
|
||||||
|
xorg-xprop
|
||||||
|
xorg-xwayland
|
Loading…
Reference in a new issue