feat(polybar, bspwm, sxhkd): separate configs for Laptop and PC

This commit is contained in:
doryan 2025-01-20 03:08:15 +04:00
parent 2c8637d547
commit ab55d3ff3c
10 changed files with 437 additions and 18 deletions

33
Laptop/bspwm/bspwmrc Executable file
View File

@ -0,0 +1,33 @@
#!/bin/sh
pgrep -x sxhkd > /dev/null || sxhkd &
pgrep -x polybar > /dev/null || polybar &
bspc config border_width 3
bspc config window_gap 5
bspc config pointer_modifier super
bspc config focus_follows_pointer true
bspc config pointer_follows_focus false
bspc config pointer_motion_interval 5
bspc config pointer_modifier mod4
bspc config pointer_action1 move
bspc config pointer_action2 resize_side
bspc config pointer_action3 resize_corner
bspc rule -a scratch sticky=on state=floating focus=on
bspc config split_ratio 0.52
bspc config active_border_color "#E0A3B6"
bspc config normal_border_color "#8393A1"
bspc config focused_border_color "#93D4C5"
xhost +si:localuser:$USER &
xmodmap ~/.Xmodmap
picom &
feh --bg-fill ~/.bg/bg_5.png &
dunst &
xmousepasteblock &
xsetroot -cursor_name left_ptr &

View File

@ -346,5 +346,3 @@ content = " "
content-foreground = ${colors.primary}
click-left = ~/.config/rofi/power/launch.sh

146
Laptop/sxhkd/sxhkdrc Normal file
View File

@ -0,0 +1,146 @@
#
# wm independent hotkeys
#
# make screenshot
Print
flameshot gui
# terminal emulator
super + Return
tabbed -r 2 st -w ''
# program launcher
super + d
~/.config/rofi/launcher/launch.sh
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
#
# bspwm hotkeys
#
# quit/restart bspwm
super + alt + {q,r}
bspc {quit & pkill pipewire & pkill pipewire-pulse,wm -r}
alt + shift + l
betterlockscreen -l dim
# close and kill
super + {q, shift + q}
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# send the newest marked node to the newest preselected node
super + y
bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
super + g
bspc node -s biggest.window
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous win dow in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
{XF86AudioLowerVolume, XF86AudioRaiseVolume}
pactl set-sink-volume @DEFAULT_SINK@ {-,+}5%
XF86AudioMute
pactl set-sink-mute @DEFAULT_SINK@ toggle
super + ctrl + XF86TouchpadToggle
touchpad_toggle.sh
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
#
# rofi applets
#
super + P
~/.config/rofi/power/launch.sh

View File

@ -1,5 +1,8 @@
#!/bin/sh
pgrep -x sxhkd > /dev/null || sxhkd &
pgrep -x polybar > /dev/null || polybar &
bspc monitor DVI-I-1 -d I II III IV V
bspc monitor HDMI-1 -d VI VII VIII IX X
@ -23,11 +26,11 @@ bspc config active_border_color "#E0A3B6"
bspc config normal_border_color "#8393A1"
bspc config focused_border_color "#93D4C5"
xhost +si:localuser:$USER &
xmodmap ~/.Xmodmap &
picom &
feh --bg-fill ~/.bg/bg_5.png ~/.bg/bg_5.png &
pipewire -v 2>/home/doryan/.config/bspwm/log&
dunst &
xmousepasteblock &
xsetroot -cursor_name left_ptr &
pgrep -x sxhkd > /dev/null || sxhkd &
pgrep -x polybar > /dev/null || polybar 2>/home/doryan/.config/bspwm/log&

32
PC/polybar/calendar Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
send_notification() {
TODAY=$(date '+%-d')
HEAD=$(cal "$1" | head -n1)
BODY=$(cal "$1" | tail -n7 | sed -z "s|$TODAY|<u><b>$TODAY</b></u>|1")
FOOT="\n<i> ~ calendar</i> 󰸗 "
dunstify -h string:x-canonical-private-synchronous:calendar \
"$HEAD" "$BODY$FOOT" -u NORMAL
}
handle_action() {
echo "$DIFF" > "$TMP"
if [ "$DIFF" -ge 0 ]; then
send_notification "+$DIFF months"
else
send_notification "$((-DIFF)) months ago"
fi
}
TMP=${XDG_RUNTIME_DIR:-/tmp}/"$UID"_calendar_notification_month
touch "$TMP"
DIFF=$(<"$TMP")
case $1 in
"curr") DIFF=0;;
"next") DIFF=$((DIFF+1));;
"prev") DIFF=$((DIFF-1));;
esac
handle_action

220
PC/polybar/config.ini Normal file
View File

@ -0,0 +1,220 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
;
;==========================================================
[colors]
background = #333333
background-alt = #2E2E2E
foreground = #8C8C8C
primary = #93D4C5
secondary = #E0A3B6
alert = #E7A063
disabled = #9DA991
[bar/example]
width = 100%
height = 22pt
; dpi = 96
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 2pt
padding-left = 0
padding-right = 1
module-margin = 1
font-0 = "FiraCode Nerd Font Propo:size=10;2"
modules-left = xworkspaces
modules-center = xwindow
modules-right = pulseaudio xkeyboard wlan eth date calendar powermenu
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
; wm-restack = generic
wm-restack = bspwm
; wm-restack = i3
; override-redirect = true
; This module is not active by default (to enable it, add it to one of the
; modules-* list above).
; Please note that only a single tray can exist at any time. If you launch
; multiple bars with this module, only a single one will show it, the others
; will produce a warning. Which bar gets the module is timing dependent and can
; be quite random.
; For more information, see the documentation page for this module:
; https://polybar.readthedocs.io/en/stable/user/modules/tray.html
[module/systray]
type = internal/tray
format-margin = 8pt
tray-spacing = 16pt
[module/xworkspaces]
type = internal/xworkspaces
label-active = %name%
label-active-background = ${colors.background-alt}
label-active-underline= ${colors.primary}
label-active-padding = 1
label-occupied = %name%
label-occupied-padding = 1
label-urgent = %name%
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
label-empty = %name%
label-empty-foreground = ${colors.disabled}
label-empty-padding = 1
[module/xwindow]
type = internal/xwindow
label = %title:0:60:...%
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
label-mounted = %{F#89A989}%mountpoint%%{F-} %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.disabled}
[module/pulseaudio]
type = internal/pulseaudio
ramp-volume-foreground = ${colors.primary}
format-volume = <ramp-volume> <label-volume>
label-volume = %percentage%%
label-muted = 󰝟 muted
click-right = ~/.config/rofi/volume/launch.sh
; Only applies if <ramp-volume> is used
ramp-volume-0 = 󰕿
ramp-volume-1 = 󰖀
ramp-volume-2 = 󰕾
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
label-layout = %layout%
label-layout-foreground = ${colors.primary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-foreground = ${colors.background}
label-indicator-background = ${colors.secondary}
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.primary}
label = %percentage_used:2%%
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.primary}
label = %percentage:2%%
[network-base]
type = internal/network
interval = 5
format-disconnected = <label-disconnected>
label-disconnected = 󰲛 disconnected
[module/wlan]
inherit = network-base
interface-type = wireless
ramp-signal-foreground = ${colors.primary}
format-connected = <ramp-signal> <label-connected>
label-connected = %essid% %local_ip%
ramp-signal-0 = 󰤭
ramp-signal-1 = 󰤯
ramp-signal-2 = 󰤟
ramp-signal-3 = 󰤢
ramp-signal-4 = 󰤥
ramp-signal-5 = 󰤨
[module/eth]
inherit = network-base
interface-type = wired
format-connected = <label-connected>
format-connected-prefix = "󰛳 "
format-connected-prefix-foreground = ${colors.primary}
label-connected = %local_ip%
label-connected-foreground = ${colors.foreground}
[module/date]
type = internal/date
interval = 1
date = %H:%M
label = %date%
label-foreground = ${colors.primary}
[module/calendar]
type = custom/script
label = %output:0:15:...%
format-prefix = "󱁳 "
format-prefix-foreground = ${colors.primary}
format = <label>
exec = date "+%d %b %Y"
click-left = ~/.config/polybar/calendar curr
scroll-up = ~/.config/polybar/calendar next
scroll-down = ~/.config/polybar/calendar prev
[settings]
screenchange-reload = true
pseudo-transparency = true
[module/powermenu]
type = custom/text
content = " "
content-foreground = ${colors.primary}
click-left = ~/.config/rofi/power/launch.sh

View File

View File

@ -1,13 +0,0 @@
#!/bin/zsh
# Terminate already running bar instances
# If all your bars have ipc enabled, you can use
polybar-msg cmd quit
# Otherwise you can use the nuclear option:
# killall -q polybar
# Launch bar1 and bar2
echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log
polybar example | tee -a /tmp/polybar1.log & disown
echo "Bars launched..."