diff --git a/nixos/desktop/picom.nix b/nixos/desktop/picom.nix index 8aa1506e..6da83570 100644 --- a/nixos/desktop/picom.nix +++ b/nixos/desktop/picom.nix @@ -3,11 +3,4 @@ imports = [ ./common.nix ]; - services.picom = { - enable = true; - shadow = true; - fade = true; - activeOpacity = 1.0; - inactiveOpacity = 1.0; - }; } diff --git a/nixos/desktop/plasma.nix b/nixos/desktop/plasma.nix index 901da41f..b126d6f5 100644 --- a/nixos/desktop/plasma.nix +++ b/nixos/desktop/plasma.nix @@ -3,7 +3,6 @@ imports = [ ./common.nix ./xserver.nix - ./picom.nix ]; # Enable the X11 windowing system. services.xserver.enable = true; diff --git a/nixos/desktop/xfce.nix b/nixos/desktop/xfce.nix new file mode 100644 index 00000000..cc00f410 --- /dev/null +++ b/nixos/desktop/xfce.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + imports = [ + ./common.nix + ./xserver.nix + ]; + services.xserver = { + enable = true; + desktopManager.xterm.enable = false; + desktopManager.xfce = { + enable = true; + enableXfwm = false; + }; + windowManager.bspwm.enable = true; + displayManager.sddm.enable = true; + displayManager.defaultSession = "xfce+bspwm"; + }; +} diff --git a/nixos/home-manager/env/bspwm.nix b/nixos/home-manager/env/bspwm.nix new file mode 100644 index 00000000..0adca218 --- /dev/null +++ b/nixos/home-manager/env/bspwm.nix @@ -0,0 +1,17 @@ +{ ... }: +{ + xsession.windowManager.bspwm = { + enable = true; + settings = { + window_gap = 12; + border_width = 2; + split_ratio = 0.5; + borderless_monocle = true; + gapless_monocle = true; + pointer_modifier = "mod1"; + pointer_action1 = "move"; + pointer_action2 = "resize_side"; + pointer_action3 = "resize_corner"; + }; + }; +} diff --git a/nixos/home-manager/env/default.nix b/nixos/home-manager/env/default.nix index ff15d2d1..8b6abd71 100644 --- a/nixos/home-manager/env/default.nix +++ b/nixos/home-manager/env/default.nix @@ -1,6 +1,6 @@ { ... }: { imports = [ - ./i3.nix + ./xfce.nix ]; } diff --git a/nixos/home-manager/env/picom.nix b/nixos/home-manager/env/picom.nix new file mode 100644 index 00000000..12ce906a --- /dev/null +++ b/nixos/home-manager/env/picom.nix @@ -0,0 +1,24 @@ +{ ... }: +{ + services.picom = { + enable = true; + shadow = true; + fade = true; + activeOpacity = 1.0; + inactiveOpacity = 0.8; + settings = { + blur = { + # requires: https://github.com/ibhagwan/picom + # method = "dual_kawase"; + method = "kernel"; + strength = 7; + deviation = 1.0; + kernel = "11x11gaussian"; + background = false; + background-frame = false; + background-fixed = false; + kern = "3x3box"; + }; + }; + }; +} diff --git a/nixos/home-manager/env/polybar.nix b/nixos/home-manager/env/polybar.nix new file mode 100644 index 00000000..45a36640 --- /dev/null +++ b/nixos/home-manager/env/polybar.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + services.polybar.enable = true; +} diff --git a/nixos/home-manager/env/rofi.nix b/nixos/home-manager/env/rofi.nix index 2b65507b..2681c8d4 100644 --- a/nixos/home-manager/env/rofi.nix +++ b/nixos/home-manager/env/rofi.nix @@ -4,6 +4,5 @@ enable = true; location = "right"; pass.enable = true; - #theme = "$HOME/.dotfiles/nixos/home-manager/env/config/rofi/catppuccin-macchiato.rasi"; }; } diff --git a/nixos/home-manager/env/sxhkd.nix b/nixos/home-manager/env/sxhkd.nix new file mode 100644 index 00000000..c52902f2 --- /dev/null +++ b/nixos/home-manager/env/sxhkd.nix @@ -0,0 +1,94 @@ +{ ... }: +{ + services.sxhkd = { + enable = true; + keybindings = { + "super + w" = "firefox"; + # terminal emulator + "super + Return" = "kitty"; + "super + t" = "al-terminal"; + "alt + shift + Return" = "al-terminal"; + # file manager + "super + f" = "kitty -e ranger"; + "super + shift + f" = "al-filemanager"; + # program launcher + "super + @space" = "rofi_run -r"; + "alt + p" = "rofi_run -r"; + #to change tabs ig + # Switch to recent window + "alt + Tab" = "bspc node -f last.local"; + # make sxhkd reload its configuration files: + "super + shift + r" = "pkill -USR1 -x sxhkd"; + # quit bspwm normally + "super + x" = "rofi_run -l"; + # Send the window to another edge of the screen + "super + {_,shift + }{Left,Down,Up,Right}" = "bspc node -{f,s} {west,south,north,east}"; + # close and kill + "super + {_,shift + }q" = "bspc node -{c,k}"; + # alternate between the tiled and monocle layout + #super + shift + m + "alt + Return" = "bspc desktop -l next"; + # if the current node is automatic, send it to the last manual, otherwise pull the last leaf + "super + y" = "bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused"; + # swap the current node and the biggest node + "super + g" = "bspc node -s biggest"; + # + # state/flags + # + # set the window state + #super + {t,shift + t,s,f} + # bspc node -t {tiled,pseudo_tiled,floating,fullscreen} + "alt + f" = "bspc node -t \"~\"{floating,tiled}"; + # set the node flags + "super + ctrl + {x,y,z}" = "bspc node -g {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 node in the current desktop + "super + {_,shift + }c" = "bspc node -f {next,prev}.local"; + # 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 + "space + shift + {Left,Down,Up,Right}" = "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} + ## Move floating windows + "alt + shift + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}"; + # volume control keys + "XF86AudioMute" = "pamixer -t"; + "XF86AudioRaiseVolume" = "pamixer -i 2"; + "XF86AudioLowerVolume" = "pamixer -d 2"; + "XF86MonBrightnessUp" = "xbacklight +10"; + "XF86MonBrightnessDown" = "xbacklight -10"; + # screenshot + "Print" = "flameshot gui"; + }; + }; +} diff --git a/nixos/home-manager/env/xfce.nix b/nixos/home-manager/env/xfce.nix new file mode 100644 index 00000000..56717ac3 --- /dev/null +++ b/nixos/home-manager/env/xfce.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: +{ + imports = [ + ./bspwm.nix + ./sxhkd.nix + ./picom.nix + ./rofi.nix + ./polybar.nix + ]; + home.packages = with pkgs; [ + xfce.thunar + ranger + ]; +}