diff --git a/users/guanranwang/home-manager/resources/dotfiles/config/bspwm/bspwmrc b/users/guanranwang/home-manager/resources/dotfiles/config/bspwm/bspwmrc new file mode 100644 index 0000000..b2b5559 --- /dev/null +++ b/users/guanranwang/home-manager/resources/dotfiles/config/bspwm/bspwmrc @@ -0,0 +1,12 @@ +#! /bin/sh + +pgrep -x sxhkd > /dev/null || sxhkd & +pgrep -x feh > /dev/null || feh --bg-fill /home/guanranwang/.local/share/backgrounds/wallpaper1.png + +bspc monitor -d I II III IV V VI VII VIII IX X +bspc config border_width 2 +bspc config window_gap 4 +bspc config focus_follows_pointer true +bspc config split_ratio 0.52 +bspc config borderless_monocle true +bspc config gapless_monocle true \ No newline at end of file diff --git a/users/guanranwang/home-manager/resources/dotfiles/config/sxhkd/sxhkdrc b/users/guanranwang/home-manager/resources/dotfiles/config/sxhkd/sxhkdrc new file mode 100644 index 0000000..80a217b --- /dev/null +++ b/users/guanranwang/home-manager/resources/dotfiles/config/sxhkd/sxhkdrc @@ -0,0 +1,169 @@ +# +# wm independent hotkeys +# + +# terminal emulator +super + Return + alacritty + +# file manager +super + e + xdg-open ~ + +# browser +super + w + xdg-open http:// + +# program launcher +super + d + rofi -show drun -show-icons -icon-theme Tela-dracula-dark + +# flameshot +super + shift + s + flameshot gui + + + +super + BackSpace + betterlockscreen -l + +# +# bspwm hotkeys +# + +# reload bspwm +super + shift + r + bspc wm -r + pkill -USR1 -x sxhkd + +# quit bspwm +control + alt + Delete + bspc quit + +# close window +super + q + bspc node -c + +# alternate between the tiled and monocle layout +super + m + bspc desktop -l next # wtf is this + +# send the newest marked node to the newest preselected node +super + y + bspc node newest.marked.local -n newest.!automatic.local # wtf is this + +# swap the current node and the biggest window +super + g + bspc node -s biggest.window # wtf is this + +# +# state/flags +# + +# set the window state +super + {a,shift + a,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} # huh + +# +# 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} + + + + +# brightness keys +XF86MonBrightnessUp + /home/guanranwang/.local/bin/wrapped-brightnessctl up + +XF86MonBrightnessDown + /home/guanranwang/.local/bin/wrapped-brightnessctl down + +# media keys +XF86AudioPrev + playerctl previous + +XF86AudioNext + playerctl next + +XF86AudioPlay + playerctl play-pause + +# volume keys +XF86AudioRaiseVolume + /home/guanranwang/.local/bin/wrapped-pamixer up + +XF86AudioLowerVolume + /home/guanranwang/.local/bin/wrapped-pamixer down + +XF86AudioMute + /home/guanranwang/.local/bin/wrapped-pamixer mute \ No newline at end of file diff --git a/users/guanranwang/home-manager/resources/wm/bspwm.nix b/users/guanranwang/home-manager/resources/wm/bspwm.nix index 0cf950b..0ea0132 100644 --- a/users/guanranwang/home-manager/resources/wm/bspwm.nix +++ b/users/guanranwang/home-manager/resources/wm/bspwm.nix @@ -1,9 +1,17 @@ {...}: { - # TODO + imports = [ + ./components/dunst.nix + ./components/feh.nix + ./components/picom.nix + ./components/polybar.nix + ./components/sxhkd.nix + ]; + xsession = { enable = true; windowManager.bspwm = { enable = true; + extraConfig = builtins.readFile ../dotfiles/config/bspwm/bspwmrc; }; }; } diff --git a/users/guanranwang/home-manager/resources/wm/components/feh.nix b/users/guanranwang/home-manager/resources/wm/components/feh.nix new file mode 100644 index 0000000..dccfbf4 --- /dev/null +++ b/users/guanranwang/home-manager/resources/wm/components/feh.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + home.packages = with pkgs; [feh]; +} diff --git a/users/guanranwang/home-manager/resources/wm/components/picom.nix b/users/guanranwang/home-manager/resources/wm/components/picom.nix new file mode 100644 index 0000000..023aaab --- /dev/null +++ b/users/guanranwang/home-manager/resources/wm/components/picom.nix @@ -0,0 +1,8 @@ +{...}: { + services.picom = { + enable = true; + }; + + # TODO: picom.conf -> home-manager options + xdg.configFile."picom/picom.conf".source = ../../dotfiles/config/picom/picom.conf; +} diff --git a/users/guanranwang/home-manager/resources/wm/components/polybar.nix b/users/guanranwang/home-manager/resources/wm/components/polybar.nix new file mode 100644 index 0000000..0a616a7 --- /dev/null +++ b/users/guanranwang/home-manager/resources/wm/components/polybar.nix @@ -0,0 +1,7 @@ +{...}: { + services.polybar = { + enable = true; + script = "polybar bar"; + extraConfig = builtins.readFile ../../dotfiles/config/polybar/config.ini; + }; +} diff --git a/users/guanranwang/home-manager/resources/wm/components/sxhkd.nix b/users/guanranwang/home-manager/resources/wm/components/sxhkd.nix new file mode 100644 index 0000000..8eb18a5 --- /dev/null +++ b/users/guanranwang/home-manager/resources/wm/components/sxhkd.nix @@ -0,0 +1,12 @@ +{...}: { + services.sxhkd = { + enable = true; + }; + + xdg.configFile = { + "sxhkd" = { + source = ../../dotfiles/config/sxhkd; + recursive = true; + }; + }; +}