From ccb081f4f40f71e5db09be082e69af9e25e84e41 Mon Sep 17 00:00:00 2001 From: Justine Smithies Date: Fri, 10 May 2024 19:49:57 +0100 Subject: Updates for using eww as the bar for sway --- .config/eww/eww.scss | 10 +- .config/eww/eww.yuck | 10 +- .config/eww/scripts/arch-updates.sh | 9 +- .config/eww/scripts/bar-toggle.sh | 9 +- .config/eww/scripts/brightnesscontrol | 14 +- .config/eww/scripts/calendar.sh | 2 +- .config/eww/scripts/idleinhibit.sh | 48 +--- .config/eww/scripts/scratchpad-indicator.sh | 9 +- .config/eww/scripts/start.sh | 13 +- .config/eww/scripts/void-updates.sh | 39 +++ .config/eww/scripts/volumecontrol | 77 +++--- .config/sway/config | 380 ++++++++++++++-------------- 12 files changed, 327 insertions(+), 293 deletions(-) create mode 100755 .config/eww/scripts/void-updates.sh (limited to '.config') diff --git a/.config/eww/eww.scss b/.config/eww/eww.scss index 6ac2238..e9588af 100644 --- a/.config/eww/eww.scss +++ b/.config/eww/eww.scss @@ -12,9 +12,9 @@ .bar { background-color: rgba(0, 0, 0, 0.7); - box-shadow: 2px 4px 2px 1px rgba(0, 0, 0, 0.5); - margin: 2px 10px 4px 10px; - border-radius: 5px; + // box-shadow: 2px 4px 2px 1px rgba(0, 0, 0, 0.5); + margin: 2px 10px 0px 10px; + border-radius: 0px; } // Styles on classes (see eww.yuck for more information) @@ -38,12 +38,12 @@ padding-right: 10px; } -.paru { +.xbps { color: #98971a; padding-right: 10px; } -.paru-empty { +.xbps-empty { color: #98971a; padding-right: 0px; } diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck index 85c00c8..9d1f4dc 100644 --- a/.config/eww/eww.yuck +++ b/.config/eww/eww.yuck @@ -92,15 +92,15 @@ (defwidget updates [] (box - :class "${matches(arch-updates, '^\s*$')?'paru-empty':'paru'}" + :class "${matches(void-updates, '^\s*$')?'xbps-empty':'xbps'}" :orientation "h" :space-evenly false :halign "end" :spacing 10 (button :class "" - :onclick "foot bash -c 'paru; ~/.config/eww/scripts/arch-updates.sh Refresh'&" - arch-updates) + :onclick "foot bash -c 'sudo xbps-install -Suv; ~/.config/eww/scripts/void-updates.sh Refresh'&" + void-updates) )) (defwidget scratchpad-indicator [] @@ -169,8 +169,8 @@ (defpoll idle :interval "1s" "scripts/idleinhibit.sh") -(defpoll arch-updates :interval "600s" - "scripts/arch-updates.sh") +(defpoll void-updates :interval "600s" + "scripts/void-updates.sh") (defpoll volume :interval "1s" "scripts/volumecontrol") diff --git a/.config/eww/scripts/arch-updates.sh b/.config/eww/scripts/arch-updates.sh index 62bfe4a..e3da71f 100755 --- a/.config/eww/scripts/arch-updates.sh +++ b/.config/eww/scripts/arch-updates.sh @@ -1,10 +1,9 @@ #!/bin/bash function CheckUpdates() { -updates="$(checkupdates;paru -Qum)" -arch="$(checkupdates | wc -l)" -aur="$(paru -Qum | wc -l)" -number=$((arch+aur)) +xbps-install -Mun 1> /tmp/void-updates +updates="$(cat /tmp/void-updates | awk '{ print $1 }')" +number=$(cat /tmp/void-updates | wc -l) if [ "$number" -gt 0 ]; then text=" $number" @@ -21,7 +20,7 @@ function RefreshUpdates() { } function Update() { - foot 'paru' + foot bash -c 'sudo xbps-install -Suv' RefreshUpdates } diff --git a/.config/eww/scripts/bar-toggle.sh b/.config/eww/scripts/bar-toggle.sh index aedc8fd..74b1819 100755 --- a/.config/eww/scripts/bar-toggle.sh +++ b/.config/eww/scripts/bar-toggle.sh @@ -1,8 +1,9 @@ #!/bin/bash -monitors=$(hyprctl monitors -j | jq '.[] | .id') -for i in ${monitors}; -do - active_monitor=$(hyprctl -j activeworkspace | grep 'monitorID' | tr -dc '0-9\n') +monitors=$(swaymsg -t get_outputs -r | jq -r -c '.[] | .name' | wc -l) + +for ((i = 0 ; i < $monitors ; i++)); do + echo $i + active_monitor=$(swaymsg -t get_outputs | jq 'map(.focused)|to_entries|.[]|select(.value)|.key') bar=$(eww active-windows | grep "bar$i") if [ "$active_monitor" == "$i" ] && [ "$bar" == "bar$i: bar$i" ]; then eww close bar$i diff --git a/.config/eww/scripts/brightnesscontrol b/.config/eww/scripts/brightnesscontrol index 1f66f9d..2b51c75 100755 --- a/.config/eww/scripts/brightnesscontrol +++ b/.config/eww/scripts/brightnesscontrol @@ -9,14 +9,15 @@ # https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a function send_notification { - icon=/usr/share/icons/Papirus-Dark/16x16/actions/brightnesssettings.svg - brightness=$(brightnessctl -P g) + icon=/usr/share/icons/Adwaita/symbolic/status/daytime-sunrise-symbolic.svg + brightness=$(brightnessctl g) + brightness=$((brightness *100 / 255 )) brightness=$(echo "$brightness" | awk '{print ($0-int($0)<0.499)?int($0):int($0)+1}') # Make the bar with the special character ─ (it's not dash -) # https://en.wikipedia.org/wiki/Box-drawing_character bar=$(seq -s "─" 0 $((brightness / 10 )) | sed 's/[0-9]//g') # Send the notification - notify-send -i "$icon" -r 5555 -u normal "$bar $brightness" + notify-send -i "$icon" --hint=string:x-canonical-private-synchronous:brightness -u normal "$bar $brightness" } case $1 in @@ -24,16 +25,17 @@ case $1 in # increase the backlight by 5% brightnessctl s +5% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; down) # decrease the backlight by 5% brightnessctl s 5%- send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; *) - brightness=$(brightnessctl -P g) + brightness=$(brightnessctl g) + brightness=$((brightness *100 / 255 )) brightness=$(echo "$brightness" | awk '{print ($0-int($0)<0.499)?int($0):int($0)+1}') icon="󰃞" printf "%s" "$icon $brightness" "%" diff --git a/.config/eww/scripts/calendar.sh b/.config/eww/scripts/calendar.sh index 3c6b16f..f077c59 100755 --- a/.config/eww/scripts/calendar.sh +++ b/.config/eww/scripts/calendar.sh @@ -3,7 +3,7 @@ # Calendar script function ShowCalendar() { - notify-send -i "calendar" " 📅 Calendar" "$(cal --color=always | sed "s/..7m//;s/..0m/<\/span><\/b>/")" -r 124 + notify-send --hint=string:x-canonical-private-synchronous:calendar -u normal -i "calendar" " 📅 Calendar" "$(cal --color=always | sed "s/..7m//;s/..0m/<\/span><\/b>/")" } function EditCalendar() { diff --git a/.config/eww/scripts/idleinhibit.sh b/.config/eww/scripts/idleinhibit.sh index 79f9ef0..f606ad5 100755 --- a/.config/eww/scripts/idleinhibit.sh +++ b/.config/eww/scripts/idleinhibit.sh @@ -1,42 +1,20 @@ #!/bin/bash # Swayidle toggle -# function toggle { -# if pgrep "swayidle" > /dev/null -# then -# pkill swayidle -# notify-send -r 5556 -u normal " Swayidle Inactive" -# else -# swayidle timeout 300 'swaylock -F -i ~/.cache/wallpaper --effect-blur 10x5 --clock --indicator' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' & -# notify-send -r 5556 -u normal " Swayidle Active" -# fi -# } -# -# case $1 in -# toggle) -# toggle -# ;; -# *) -# if pgrep "swayidle" > /dev/null -# then -# icon="" -# else -# icon="" -# fi -# printf "%s" "$icon " -# ;; -# esac - -# Hypridle toggle function toggle { - if pgrep "hypridle" > /dev/null + if pgrep "swayidle" > /dev/null then - pkill hypridle - notify-send -r 5556 -u normal " Hypridle Inactive" - else - hypridle & - notify-send -r 5556 -u normal " Hypridle Active" - fi + pkill swayidle + notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Inactive" +else + read -r wallpaper<~/.cache/wallpaper + export wallpaper=$( echo $wallpaper) + swayidle -w \ + timeout 300 'swaylock -f -i $wallpaper' \ + timeout 600 'wlopm --off \*;swaylock -F -i $wallpaper' resume 'wlopm --on \*' \ + before-sleep 'swaylock -f -i $wallpaper' & + notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Active" +fi } case $1 in @@ -44,7 +22,7 @@ case $1 in toggle ;; *) - if pgrep "hypridle" > /dev/null + if pgrep "swayidle" > /dev/null then icon="" else diff --git a/.config/eww/scripts/scratchpad-indicator.sh b/.config/eww/scripts/scratchpad-indicator.sh index b0911d9..8fd06f4 100755 --- a/.config/eww/scripts/scratchpad-indicator.sh +++ b/.config/eww/scripts/scratchpad-indicator.sh @@ -1,9 +1,8 @@ #!/bin/bash -# Scratchpad indicator for Hyprland +# Scratchpad indicator for Sway -output="$(hyprctl clients -j | jq -r '.[] | select(.workspace.id==-99) |""+.class+" : "+.title+""')" -number="$(hyprctl clients -j | jq -r '.[] | select(.workspace.id==-99) | (tostring)' | wc -l)" -file=~/.config/eww/eww.scss +output="$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]?)|recurse(.floating_nodes[]?)|select(.name == "__i3_scratch").floating_nodes[]|"`"+.name+"` - "+.app_id+" "+(.id|tostring)')" +number="$(swaymsg -r -t get_tree | jq -r 'recurse(.nodes[]) | first(select(.name=="__i3_scratch")) | .floating_nodes | length')" if [ "$number" -gt 0 ]; then text=" $number" @@ -21,7 +20,7 @@ function ShowInfo() { exit else tooltip="$(echo -e $tooltip)" - notify-send " Scratchpad" "$tooltip" -r 123 + notify-send --hint=string:x-canonical-private-synchronous:scratchpad -u normal " Scratchpad" "$tooltip" fi } diff --git a/.config/eww/scripts/start.sh b/.config/eww/scripts/start.sh index f464058..1e5c023 100755 --- a/.config/eww/scripts/start.sh +++ b/.config/eww/scripts/start.sh @@ -4,16 +4,9 @@ eww kill # start a bar for each monitor -monitors=$(hyprctl monitors -j | jq '.[] | .id') -# monitors=$(hyprctl monitors -j | jq '.[] | .id' | wc -l) +monitors=$(wlr-randr | grep "^[^ ]" | awk '{ print$1 }' | wc -l) -for monitor in ${monitors}; do - eww open bar${monitor} +for ((i = 0 ; i < $monitors ; i++)); do + eww open bar${i} done -# eww open bar0 -# if [ $monitors -gt 1 ]; then -# for ((i = 1 ; i <= $monitors ; i++)); do -# eww open bar${i} -# done -# fi diff --git a/.config/eww/scripts/void-updates.sh b/.config/eww/scripts/void-updates.sh new file mode 100755 index 0000000..b004735 --- /dev/null +++ b/.config/eww/scripts/void-updates.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +function CheckUpdates() { +xbps-install -Mun 1> /tmp/void-updates +updates="$(cat /tmp/void-updates | awk '{ print $1 }')" +number=$(cat /tmp/void-updates | wc -l) + +if [ "$number" -gt 0 ]; then + text=" $number" +else + text="" +fi + +echo "$text" +} + +function RefreshUpdates() { + value="$(CheckUpdates)" + eww update void-updates="$value" +} + +function Update() { + foot bash -c 'sudo xbps-install -Suv' + RefreshUpdates +} + +case "$1" in + Refresh) + RefreshUpdates + exit 0 + ;; + Update) + Update + exit 0 + ;; + *) + CheckUpdates + exit 0 +esac diff --git a/.config/eww/scripts/volumecontrol b/.config/eww/scripts/volumecontrol index 4d24d29..60a5b83 100755 --- a/.config/eww/scripts/volumecontrol +++ b/.config/eww/scripts/volumecontrol @@ -6,64 +6,79 @@ # volumecontrol mute function get_volume { - amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1 + # amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1 + pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -n 1 } function is_mute { - amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null + # amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null + pactl get-sink-mute @DEFAULT_SINK@ | grep 'Mute: yes' >> /dev/null } function send_notification { volume=$(get_volume) # Make the bar with the special character ─ (it's not dash -) # https://en.wikipedia.org/wiki/Box-drawing_character -if [ "$volume" = "0" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-muted.png" -notify-send -i "$icon_name" -r 5556 -u normal "$volume" - else - if [ "$volume" -lt "10" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-low.png" -notify-send -i "$icon_name" -r 5556 -u normal "$volume" - else - if [ "$volume" -lt "30" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-low.png" - else - if [ "$volume" -lt "70" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-medium.png" - else - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-high.png" - fi - fi - fi -fi + if [[ $volume == "100" ]]; then + icon="" + elif [[ $volume -ge "89" && $volume -le "100" ]]; then + icon="" + elif [[ $volume -ge "79" && $volume -le "90" ]]; then + icon="" + elif [[ $volume -ge "69" && $volume -le "80" ]]; then + icon="" + elif [[ $volume -ge "59" && $volume -le "70" ]]; then + icon="" + elif [[ $volume -ge "49" && $volume -le "60" ]]; then + icon="" + elif [[ $volume -ge "39" && $volume -le "50" ]]; then + icon="" + elif [[ $volume -ge "29" && $volume -le "40" ]]; then + icon="" + elif [[ $volume -ge "19" && $volume -le "30" ]]; then + icon="" + elif [[ $volume -ge "9" && $volume -le "20" ]]; then + icon="" + elif [[ $volume -gt "0" && $volume -le "10" ]]; then + icon="" + elif [[ $volume -eq "0" ]]; then + icon="" + # volume="M " + fi bar=$(seq -s "─" $(($volume/5)) | sed 's/[0-9]//g') # Send the notification -notify-send -i "$icon_name" -r 5556 -u normal "$bar $volume" +notify-send --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon $bar $volume" } case $1 in up) # Set the volume on (if it was muted) - amixer set Master on > /dev/null + # amixer set Master on > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 0 # Up the volume (+ 2%) - amixer sset Master 2%+ > /dev/null + # amixer sset Master 2%+ > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ +2% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; down) - amixer set Master on > /dev/null - amixer sset Master 2%- > /dev/null + # amixer set Master on > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 0 + # amixer sset Master 2%- > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ -2% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; mute) # Toggle mute - amixer set Master 1+ toggle > /dev/null + # amixer set Master 1+ toggle > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ toggle if is_mute ; then - notify-send -i "/usr/share/icons/Adwaita/16x16/legacy/audio-volume-muted.png" -r 5556 -u normal "$bar Audio Muted" + icon="󰝟" + notify-send --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon Audio Muted" else send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change fi ;; *) diff --git a/.config/sway/config b/.config/sway/config index fa5e485..400d700 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -1,46 +1,58 @@ -### Variables -# -# Logo key. Use Mod1 for Alt. -set $mod Mod4 -# Home row direction keys, like vim -set $left h -set $down j -set $up k -set $right l -# Your preferred terminal emulator -set $term foot -# Your preferred application launcher -# Note: pass the final command to swaymsg so that the resulting window can be opened -# on the original workspace that the command was run on. - -set $menu dmenu_path | fuzzel | xargs swaymsg exec -- - -# Wallpaper is set by imv Shift+W -# exec ~/.config/hypr/scripts/wallpaper.sh -set $wallpaper $(cat ~/.cache/wallpaper) - -# Start Polkit -exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +set { + ### Variables + # + # Logo key. Use Mod1 for Alt. + $mod Mod4 + # Home row direction keys, like vim + $left h + $down j + $up k + $right l + # Your preferred terminal emulator + $term foot + # Your preferred application launcher + # Note: pass the final command to swaymsg so that the resulting window can be opened + # on the original workspace that the command was run on. + $menu dmenu_path | fuzzel | xargs swaymsg exec -- + + # Wallpaper is set by lf BG or imv Shift+W + $wallpaper $(cat ~/.cache/wallpaper) +} -# Check clamshell mode on reload -# exec_always ~/.local/bin/clamshell-mode.sh +exec { + # Start Polkit + /usr/libexec/polkit-gnome/polkit-gnome-authentication-agent-1 -# exec_always bash -c "pkill kanshi; exec kanshi" + dbus-run-session pipewire + + # Start Dunst + mako + + # Start wlsunset + wlsunset -l 57.4 -L -1.9 -# Start Dunst -exec_always dunst + # At startup focus on workspace 1 + swaymsg "workspace 1;" -# Start wlsunset -exec wlsunset -l 57.4 -L -1.9 + ### Idle configuration + exec swayidle -w \ + timeout 300 'swaylock -f -i $wallpaper' \ + timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -f -i $wallpaper' + + # This will lock your screen after 300 seconds of inactivity, then turn off + # your displays after another 300 seconds, and turn your screens back on when + # resumed. It will also lock your screen before your computer goes to sleep. +} -# At startup focus on workspace 1 -exec swaymsg "workspace 1;" +exec_always { + ~/.config/eww/scripts/start.sh +} -# bindsym $mod+g exec env RUST_BACKTRACE=1 \ -# swayr switch-window >> /tmp/swayr.log 2>&1 +# Check clamshell mode on reload +# exec_always ~/.local/bin/clamshell-mode.sh -# Start swayr daemon -# exec env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1 +# exec_always bash -c "pkill kanshi; exec kanshi" # Hide mouse cursor after a period of inactivity. seat * hide_cursor 4000 @@ -48,8 +60,10 @@ seat * hide_cursor 4000 # Gaps Settings default_border pixel 2 -gaps top 4 -gaps inner 10 +gaps { + top 4 + inner 10 +} #client. @@ -62,7 +76,8 @@ client.unfocused "#666666" "#fff5e5" "#666666" "#000000" "#595 ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg $wallpaper fill +output { + * bg $wallpaper fill # # Example configuration: # @@ -70,22 +85,14 @@ output * bg $wallpaper fill # # You can get the names of your outputs by running: swaymsg -t get_outputs -output HDMI-A-1 pos 0 0 res 1920x1080 -output eDP-1 pos 1920 0 res 1920x1080 - -bindswitch --reload --locked lid:on output eDP-1 disable -bindswitch --reload --locked lid:off output eDP-1 enable - -### Idle configuration -# -exec swayidle -w \ - timeout 300 'swaylock -f -i $wallpaper --effect-blur 10x5 --clock --datestr "%a %d %b %Y" --indicator' \ - timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ - before-sleep 'swaylock -f -i $wallpaper --effect-blur 10x5 --clock ---datestr "%a %d %b %Y" -indicator' + HDMI-A-1 pos 0 0 res 1920x1080 + eDP-1 pos 1920 0 res 1920x1080 +} -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. +bindswitch { + --reload --locked lid:on output eDP-1 disable + --reload --locked lid:off output eDP-1 enable +} ### Input configuration # @@ -106,173 +113,157 @@ input "type:keyboard" { xkb_options grp:shift_caps_toggle } -### Key bindings -# -# Basics: -# +bindsym { + ### Key bindings + # Start a terminal - bindsym $mod+Return exec $term + $mod+Return exec $term # Kill focused window - bindsym $mod+Shift+q kill + $mod+Shift+q kill # Start your launcher - bindsym $mod+d exec $menu - - # 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 + $mod+d exec $menu # Reload the configuration file - bindsym $mod+Shift+c reload + $mod+Shift+c reload # Exit sway (logs you out of your Wayland 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' + $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' - bindsym XF86MonBrightnessUp exec ~/.local/bin/statusbar/brightnesscontrol up - bindsym XF86MonBrightnessDown exec ~/.local/bin/statusbar/brightnesscontrol down + XF86MonBrightnessUp exec ~/.local/bin/statusbar/brightnesscontrol up + XF86MonBrightnessDown exec ~/.local/bin/statusbar/brightnesscontrol down - bindsym XF86AudioRaiseVolume exec ~/.local/bin/statusbar/volumecontrol up - bindsym XF86AudioLowerVolume exec ~/.local/bin/statusbar/volumecontrol down - bindsym XF86AudioMute exec ~/.local/bin/statusbar/volumecontrol mute + XF86AudioRaiseVolume exec ~/.local/bin/statusbar/volumecontrol up + XF86AudioLowerVolume exec ~/.local/bin/statusbar/volumecontrol down + XF86AudioMute exec ~/.local/bin/statusbar/volumecontrol mute # Take a screenshot of the focused output and save it into screenshots - bindsym Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') -t jpeg ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg + Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') -t jpeg ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg # Take a screenshot of the selected region - bindsym $mod+Print exec grim -t jpeg -g "$(slurp)" ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg + $mod+Print exec grim -t jpeg -g "$(slurp)" ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg # Take a screenshot and save it to the clipboard - bindsym $mod+Shift+Print exec grim -g "$(slurp -d)" - | wl-copy + $mod+Shift+Print exec grim -g "$(slurp -d)" - | wl-copy # Open power menu - bindsym Shift+$mod+p exec ~/.local/bin/powermenu - bindsym Shift+$mod+z exec ~/.local/bin/emoji-menu -# -# Moving around: -# + Shift+$mod+p exec ~/.local/bin/powermenu + Shift+$mod+z exec ~/.local/bin/emoji-menu + + # 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 + $mod+$left focus left + $mod+$down focus down + $mod+$up focus up + $mod+$right focus right # Or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right + $mod+Left focus left + $mod+Down focus down + $mod+Up focus up + $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 + $mod+Shift+$left move left + $mod+Shift+$down move down + $mod+Shift+$up move up + $mod+Shift+$right move right # Ditto, with arrow 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 -# -# Workspaces: -# + $mod+Shift+Left move left + $mod+Shift+Down move down + $mod+Shift+Up move up + $mod+Shift+Right move right + + # Workspaces: + # Switch to workspace - # bindsym $mod+1 workspace number 1 - bindsym $mod+1 [workspace="^1$"] move workspace to output current; workspace number 1 - bindsym $mod+2 [workspace="^2$"] move workspace to output current; workspace number 2 - bindsym $mod+3 [workspace="^3$"] move workspace to output current; workspace number 3 - bindsym $mod+4 [workspace="^4$"] move workspace to output current; workspace number 4 - bindsym $mod+5 [workspace="^5$"] move workspace to output current; workspace number 5 - bindsym $mod+6 [workspace="^6$"] move workspace to output current; workspace number 6 - bindsym $mod+7 [workspace="^7$"] move workspace to output current; workspace number 7 - bindsym $mod+8 [workspace="^8$"] move workspace to output current; workspace number 8 - bindsym $mod+9 [workspace="^9$"] move workspace to output current; workspace number 9 - bindsym $mod+0 [workspace="^10$"] move workspace to output current; workspace number 10 - # 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 + # $mod+1 workspace number 1 + # $mod+1 [workspace="^1$"] move workspace to output current; workspace number 1 + # $mod+2 [workspace="^2$"] move workspace to output current; workspace number 2 + # $mod+3 [workspace="^3$"] move workspace to output current; workspace number 3 + # $mod+4 [workspace="^4$"] move workspace to output current; workspace number 4 + # $mod+5 [workspace="^5$"] move workspace to output current; workspace number 5 + # $mod+6 [workspace="^6$"] move workspace to output current; workspace number 6 + # $mod+7 [workspace="^7$"] move workspace to output current; workspace number 7 + # $mod+8 [workspace="^8$"] move workspace to output current; workspace number 8 + # $mod+9 [workspace="^9$"] move workspace to output current; workspace number 9 + # $mod+0 [workspace="^10$"] move workspace to output current; workspace number 10 + $mod+1 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 1" + $mod+2 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 2" + $mod+3 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 3" + $mod+4 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 4" + $mod+5 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 5" + $mod+6 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 6" + $mod+7 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 7" + $mod+8 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 8" + $mod+9 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 9" + $mod+0 exec sh -c "$HOME/.config/eww/scripts/dispatch.sh 10" # Move focused container to workspace - bindsym $mod+Shift+1 move container to workspace number 1 - bindsym $mod+Shift+2 move container to workspace number 2 - bindsym $mod+Shift+3 move container to workspace number 3 - bindsym $mod+Shift+4 move container to workspace number 4 - bindsym $mod+Shift+5 move container to workspace number 5 - bindsym $mod+Shift+6 move container to workspace number 6 - bindsym $mod+Shift+7 move container to workspace number 7 - bindsym $mod+Shift+8 move container to workspace number 8 - bindsym $mod+Shift+9 move container to workspace number 9 - bindsym $mod+Shift+0 move container to workspace number 10 + $mod+Shift+1 move container to workspace number 1 + $mod+Shift+2 move container to workspace number 2 + $mod+Shift+3 move container to workspace number 3 + $mod+Shift+4 move container to workspace number 4 + $mod+Shift+5 move container to workspace number 5 + $mod+Shift+6 move container to workspace number 6 + $mod+Shift+7 move container to workspace number 7 + $mod+Shift+8 move container to workspace number 8 + $mod+Shift+9 move container to workspace number 9 + $mod+Shift+0 move container to workspace number 10 # Note: workspaces can have any name you want, not just numbers. # We just use 1-10 as the default. -# Define outputs - # set $output-primary HDMI-A-1 - # set $output-secondary eDP-1 - -# workspace to displays - # workspace 1 output $output-primary - # workspace 2 output $output-primary - # workspace 3 output $output-primary - # workspace 4 output $output-primary - # workspace 5 output $output-primary - # - # workspace 6 output $output-primary - # workspace 7 output $output-primary - # workspace 8 output $output-primary - # workspace 9 output $output-primary - # workspace 10 output $output-secondary + # Layout stuff: -# -# Layout stuff: -# # You can "split" the current object of your focus with # $mod+b or $mod+v, for horizontal and vertical splits # respectively. - bindsym $mod+b splith - bindsym $mod+v splitv + $mod+b splith + $mod+v splitv # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split + $mod+s layout stacking + $mod+w layout tabbed + $mod+e layout toggle split # Make the current focus fullscreen - bindsym $mod+f fullscreen + $mod+f fullscreen # Toggle Waybar - bindsym $mod+x exec killall -SIGUSR1 waybar + $mod+x exec "~/.config/eww/scripts/bar-toggle.sh" # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle + $mod+Shift+space floating toggle # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle + $mod+space focus mode_toggle # Move focus to the parent container - bindsym $mod+a focus parent -# -# Scratchpad: -# + $mod+a focus parent + + # 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 + $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: -# + $mod+minus scratchpad show + + # Resizing containers: + $mod+r mode "resize" + + # Move workspace to output left or right + $mod+Control+Right move workspace to output right + $mod+Control+Left move workspace to output left + + # Move container to output left or right + $mod+Control+Shift+Right move container to output right + $mod+Control+Shift+Left move container to output left +} + mode "resize" { # left will shrink the containers width # right will grow the containers width @@ -293,35 +284,52 @@ mode "resize" { bindsym Return mode "default" bindsym Escape mode "default" } -bindsym $mod+r mode "resize" -# Move workspace to output left or right -bindsym $mod+Control+Right move workspace to output right -bindsym $mod+Control+Left move workspace to output left +# 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 -# Move container to output left or right -bindsym $mod+Control+Shift+Right move container to output right -bindsym $mod+Control+Shift+Left move container to output left +# Define outputs + # set $output-primary HDMI-A-1 + # set $output-secondary eDP-1 -# Window rules -for_window [app_id="mpv"] floating enable, resize set width 640 height 360, move position 1200 650, focus +# workspace to displays + # workspace 1 output $output-primary + # workspace 2 output $output-primary + # workspace 3 output $output-primary + # workspace 4 output $output-primary + # workspace 5 output $output-primary + # + # workspace 6 output $output-primary + # workspace 7 output $output-primary + # workspace 8 output $output-primary + # workspace 9 output $output-primary + # workspace 10 output $output-secondary focus_on_window_activation focus -# Assign applications to specific workspaces -for_window [app_id="kitty"] move window to workspace 2, focus -for_window [class="Spotify"] move window to workspace 6, focus -for_window [app_id="gimp-*"] move window to workspace 5, focus -for_window [app_id="newsboat"] move window to workspace 8, focus -for_window [app_id="nvim"] move window to workspace 3, focus -for_window [app_id="weechat"] move window to workspace 4, focus +# Window rules +for_window { + [app_id="mpv"] floating enable, resize set width 640 height 360, move position 1200 650, focus + + # Assign applications to specific workspaces + [app_id="kitty"] move window to workspace 2, focus + [class="Spotify"] move window to workspace 6, focus + [app_id="gimp-*"] move window to workspace 5, focus + [app_id="newsboat"] move window to workspace 8, focus + [app_id="nvim"] move window to workspace 3, focus + [app_id="weechat"] move window to workspace 4, focus +} # # Status Bar: # # Read `man 5 sway-bar` for more information about this section. bar { - swaybar_command waybar + # swaybar_command waybar } include /etc/sway/config.d/* -- cgit v1.2.3