diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc new file mode 100755 index 0000000..33a7572 --- /dev/null +++ b/.config/bspwm/bspwmrc @@ -0,0 +1,48 @@ +#! /bin/bash + +[ -z "$WALLPAPER" ] && export WALLPAPER="/mnt/win/d/Nextcloud/Pictures/Wallpapers/365242.jpg" + +pgrep -x sxhkd > /dev/null || sxhkd & +pgrep -x redshift > /dev/null || redshift & +pgrep -x picom > /dev/null || picom & + +$HOME/.config/polybar/launch.sh +xwallpaper --zoom $WALLPAPER +xsetroot -cursor_name left_ptr & +wpg -s "$WALLPAPER" +xrdb -merge "$HOME/.cache/wal/colors.Xresources" +setxkbmap -model evdev -layout us -variant altgr-intl + +bspc monitor DP-4 -d I II III IV V +bspc monitor HDMI-0 -d VI VII VIII IX X + +bspc config border_width 2 +bspc config window_gap 12 + +bspc config split_ratio 0.5 +bspc config borderless_monocle true +bspc config gapless_monocle true + +# Default to float +bspc rule -a \* state=floating + +# +# Define rules for all other windows +# + +# Terminal / Kitty +bspc rule -a kitty state=tiled + +# Firefox +bspc rule -a Firefox state=tiled +bspc rule -a "Firefox:Save Image" state=floating + +# Discord => Workspace 7 +bspc rule -a discord state=tiled desktop=VII + +# Steam => Workspace 4 + +bspc rule -a Steam state=tiled desktop=IV + +# sxiv => Fullscreen +bspc rule -a Sxiv state=fullscreen diff --git a/.config/polybar/config b/.config/polybar/config new file mode 100644 index 0000000..e000d74 --- /dev/null +++ b/.config/polybar/config @@ -0,0 +1,238 @@ +;========================================================== +; + +; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ +; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ +; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ +; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ +; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ +; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ +; +; +; To learn more about how to configure Polybar +; go to https://github.com/polybar/polybar +; +; The README contains a lot of information +; +;========================================================== + +[colors] +background = ${xrdb:color0:#222} +foreground = ${xrdb:color7:#555} + +background-alt = ${xrdb:color1:#222} +foreground-alt = ${xrdb:color7:#555} + +primary = ${xrdb:color1:#222} +secondary = ${xrdb:color2:#222} +alert = ${xrdb:color3:#222} + +[bar/main] +monitor = ${env:MONITOR:} +width = 100% +height = 28 +fixed-center = false + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +border-size = 4 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 1 + +font-0 = JetBrains Mono:pixelsize=10:style=Bold;1 + +modules-left = bspwm date +modules-center = xwindow +modules-right = filesystem pulseaudio memory cpu eth powermenu + +separator = | + +tray-position = right +tray-padding = 2 +tray-background = ${colors.xcolor4} + +cursor-click = pointer +cursor-scroll = ns-resize + +wm-restack = bspwm + +[module/xwindow] +type = internal/xwindow +label = %title:0:50:...% + +format-underline = ${colors.secondary} + +[module/filesystem] +type = internal/fs +interval = 25 + +mount-0 = / +mount-1 = /mnt/win/c +mount-2 = /mnt/win/d +mount-3 = /mnt/win/e + +label-mounted = %{F#739E81}%mountpoint%%{F-}: %percentage_used%% +label-unmounted = %mountpoint% not mounted +label-unmounted-foreground = ${colors.foreground-alt} + +[module/bspwm] +type = internal/bspwm + +label-focused = %index% +label-focused-background = ${colors.background-alt} +label-focused-underline = ${colors.primary} +label-focused-padding = 2 + +label-occupied = %index% +label-occupied-padding = 2 + +label-urgent = %index%! +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +label-empty = %index% +label-empty-foreground = ${colors.foreground-alt} +label-empty-padding = 2 + +; Separator in between workspaces +; label-separator = | + +[module/mpd] +type = internal/mpd +format-online = + +icon-prev =  +icon-stop =  +icon-play =  +icon-pause =  +icon-next =  + +label-song-maxlen = 25 +label-song-ellipsis = true + +[module/cpu] +type = internal/cpu +interval = 2 +format-prefix = " " +format-prefix-foreground = ${colors.foreground-alt} +format-underline = ${colors.secondary} +label = %percentage:2%% + +[module/memory] +type = internal/memory +interval = 2 +format-prefix = " " +format-prefix-foreground = ${colors.foreground-alt} +format-underline = ${colors.secondary} +label = %percentage_used%% + +[module/eth] +type = internal/network +interface = enp6s0 +interval = 3.0 + +format-connected-underline = ${colors.secondary} +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.foreground-alt} +label-connected = %local_ip% + +format-disconnected = +;format-disconnected = +;format-disconnected-underline = ${self.format-connected-underline} +;label-disconnected = %ifname% disconnected +;label-disconnected-foreground = ${colors.foreground-alt} + +[module/date] +type = internal/date +interval = 1 + +date = +date-alt = " %Y-%m-%d" + +time = %H:%M +time-alt = %H:%M:%S + +format-prefix =  +format-prefix-foreground = ${colors.foreground-alt} +;format-underline = ${colors.secondary} + +label = %date% %time% + +[module/pulseaudio] +type = internal/pulseaudio + +format-volume = +label-volume = VOL %percentage%% +label-volume-foreground = ${root.foreground} + +label-muted = 🔇 muted +label-muted-foreground = #666 + +bar-volume-width = 10 +bar-volume-foreground-0 = ${colors.primary} +bar-volume-foreground-1 = ${colors.primary} +bar-volume-foreground-2 = ${colors.primary} +bar-volume-foreground-3 = ${colors.primary} +bar-volume-foreground-4 = ${colors.primary} +bar-volume-foreground-5 = ${colors.primary} +bar-volume-foreground-6 = ${colors.primary} +bar-volume-gradient = false +bar-volume-indicator = | +bar-volume-indicator-font = 2 +bar-volume-fill = ─ +bar-volume-fill-font = 2 +bar-volume-empty = ─ +bar-volume-empty-font = 2 +bar-volume-empty-foreground = ${colors.foreground-alt} + +[module/powermenu] +type = custom/menu + +expand-right = true + +format-spacing = 1 + +label-open =  +label-open-foreground = ${colors.secondary} +label-close =  cancel +label-close-foreground = ${colors.secondary} +label-separator = | +label-separator-foreground = ${colors.foreground-alt} + +menu-0-0 = reboot +menu-0-0-exec = menu-open-1 +menu-0-1 = power off +menu-0-1-exec = menu-open-2 + +menu-1-0 = cancel +menu-1-0-exec = menu-open-0 +menu-1-1 = reboot +menu-1-1-exec = sudo reboot + +menu-2-0 = power off +menu-2-0-exec = sudo poweroff +menu-2-1 = cancel +menu-2-1-exec = menu-open-0 + +[settings] +screenchange-reload = true +;compositing-background = xor +;compositing-background = screen +;compositing-foreground = source +;compositing-border = over +;pseudo-transparency = false + +[global/wm] +margin-top = 5 +margin-bottom = 5 + +; vim:ft=dosini diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh new file mode 100755 index 0000000..dbf900d --- /dev/null +++ b/.config/polybar/launch.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +pkill polybar + +if type "xrandr"; then + for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do + MONITOR=$m polybar --reload main & + done +else + polybar --reload main & +fi + +echo "Polybar launched." diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc new file mode 100644 index 0000000..0d581fb --- /dev/null +++ b/.config/sxhkd/sxhkdrc @@ -0,0 +1,117 @@ +# wm independent hotkeys + +# terminal emulator +super + Return + kitty + +# program launcher +super + space + dmenu_run + +# make sxhkd reload its configuration files: +super + Escape + pkill -USR1 -x sxhkd + +# bspwm hotkeys + +# quit/restart bspwm +super + alt + {q,r} + bspc {quit,wm -r} + +# close and kill +super + {_,shift + }w + 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 window 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 +# + +# 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} diff --git a/.fonts/JetBrainsMono-Regular.ttf b/.fonts/JetBrainsMono-Regular.ttf new file mode 100644 index 0000000..8da8aa4 Binary files /dev/null and b/.fonts/JetBrainsMono-Regular.ttf differ diff --git a/.fonts/rodin.otf b/.fonts/rodin.otf new file mode 100644 index 0000000..b7d98ee Binary files /dev/null and b/.fonts/rodin.otf differ