From ab55d3ff3c4b7af5364ee7ae11fcfdebcb0a4b3e Mon Sep 17 00:00:00 2001 From: doryan Date: Mon, 20 Jan 2025 03:08:15 +0400 Subject: [PATCH] feat(polybar, bspwm, sxhkd): separate configs for Laptop and PC --- Laptop/bspwm/bspwmrc | 33 ++++ {polybar => Laptop/polybar}/calendar | 0 {polybar => Laptop/polybar}/config.ini | 2 - Laptop/sxhkd/sxhkdrc | 146 ++++++++++++++++ {bspwm => PC/bspwm}/bspwmrc | 9 +- PC/polybar/calendar | 32 ++++ PC/polybar/config.ini | 220 +++++++++++++++++++++++++ {sxhkd => PC/sxhkd}/sxhkdrc | 0 bspwm/log | 0 polybar/launch.sh | 13 -- 10 files changed, 437 insertions(+), 18 deletions(-) create mode 100755 Laptop/bspwm/bspwmrc rename {polybar => Laptop/polybar}/calendar (100%) rename {polybar => Laptop/polybar}/config.ini (99%) create mode 100644 Laptop/sxhkd/sxhkdrc rename {bspwm => PC/bspwm}/bspwmrc (88%) create mode 100755 PC/polybar/calendar create mode 100644 PC/polybar/config.ini rename {sxhkd => PC/sxhkd}/sxhkdrc (100%) delete mode 100644 bspwm/log delete mode 100755 polybar/launch.sh diff --git a/Laptop/bspwm/bspwmrc b/Laptop/bspwm/bspwmrc new file mode 100755 index 0000000..9dacfaf --- /dev/null +++ b/Laptop/bspwm/bspwmrc @@ -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 & diff --git a/polybar/calendar b/Laptop/polybar/calendar similarity index 100% rename from polybar/calendar rename to Laptop/polybar/calendar diff --git a/polybar/config.ini b/Laptop/polybar/config.ini similarity index 99% rename from polybar/config.ini rename to Laptop/polybar/config.ini index 31e8677..fe9e06a 100644 --- a/polybar/config.ini +++ b/Laptop/polybar/config.ini @@ -346,5 +346,3 @@ content = " " content-foreground = ${colors.primary} click-left = ~/.config/rofi/power/launch.sh - - diff --git a/Laptop/sxhkd/sxhkdrc b/Laptop/sxhkd/sxhkdrc new file mode 100644 index 0000000..120bfb4 --- /dev/null +++ b/Laptop/sxhkd/sxhkdrc @@ -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 + diff --git a/bspwm/bspwmrc b/PC/bspwm/bspwmrc similarity index 88% rename from bspwm/bspwmrc rename to PC/bspwm/bspwmrc index 31f09bf..d52c06a 100755 --- a/bspwm/bspwmrc +++ b/PC/bspwm/bspwmrc @@ -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& diff --git a/PC/polybar/calendar b/PC/polybar/calendar new file mode 100755 index 0000000..19c2f86 --- /dev/null +++ b/PC/polybar/calendar @@ -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|$TODAY|1") + FOOT="\n ~ calendar 󰸗 " + 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 diff --git a/PC/polybar/config.ini b/PC/polybar/config.ini new file mode 100644 index 0000000..a8d9495 --- /dev/null +++ b/PC/polybar/config.ini @@ -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 = + +label-volume = %percentage%% + +label-muted = 󰝟 muted + +click-right = ~/.config/rofi/volume/launch.sh + +; Only applies if 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 = 󰲛 disconnected + +[module/wlan] +inherit = network-base +interface-type = wireless + +ramp-signal-foreground = ${colors.primary} + +format-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 = + +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 =