diff options
Diffstat (limited to 'home-manager/homeModules')
| -rw-r--r-- | home-manager/homeModules/default.nix | 1 | ||||
| -rw-r--r-- | home-manager/homeModules/emacs/config.org | 58 | ||||
| -rw-r--r-- | home-manager/homeModules/exwm.nix | 61 |
3 files changed, 120 insertions, 0 deletions
diff --git a/home-manager/homeModules/default.nix b/home-manager/homeModules/default.nix index f81393b..05cb946 100644 --- a/home-manager/homeModules/default.nix +++ b/home-manager/homeModules/default.nix @@ -13,5 +13,6 @@ ./waybar.nix ./fuzzel.nix ./stylix.nix + ./exwm.nix ]; } diff --git a/home-manager/homeModules/emacs/config.org b/home-manager/homeModules/emacs/config.org index d3cc7b9..5ca1f04 100644 --- a/home-manager/homeModules/emacs/config.org +++ b/home-manager/homeModules/emacs/config.org @@ -6,6 +6,7 @@ * Table Of Contents :toc: - [[#progs-to-load-first][Progs to load first]] - [[#elpaca][elpaca]] + - [[#exwm][Exwm]] - [[#from-minimal-emacsd][From minimal-emacs.d]] - [[#no-littering][No littering]] - [[#save-history][Save history]] @@ -110,6 +111,63 @@ :config (add-hook 'after-init-hook 'benchmark-init/deactivate)) #+end_src +** Exwm +#+begin_src emacs-lisp + ;; (use-package exwm + ;; :ensure nil + ;; :custom + ;; ;; Set the initial workspace number. + ;; (exwm-workspace-number 2) + ;; (exwm-workspace-show-all-buffers t) + ;; :hook + ;; (after-init . exwm-init) + ;; ;; Make class name the buffer name. + ;; (exwm-update-class . (lambda () (exwm-workspace-rename-buffer exwm-class-name))) + ;; :config + ;; (defmacro my/map-command (name) + ;; `(lambda () + ;; (interactive) + ;; (start-process-shell-command ,name nil ,name))) + ;; + ;; ;; Global keybindings. + ;; (setq exwm-input-global-keys + ;; `(([?\s-r] . exwm-reset) ;; s-r: Reset (to line-mode). + ;; ([?\s-w] . exwm-workspace-switch) ;; s-w: Switch workspace. + ;; ([?\s-&] . (lambda (cmd) ;; s-&: Launch application. + ;; (interactive (list (read-shell-command "$ "))) + ;; (start-process-shell-command cmd nil cmd))) + ;; ([?\s-z] . ,(my/map-command "boomer")) + ;; ([XF86Go] . ,(my/map-command (expand-file-name "switch_sink.py" + ;; exwm--my-scripts))) + ;; ([cancel] . ,(my/map-command (expand-file-name "toggle_vpn.sh" + ;; exwm--my-scripts))) + ;; ([XF86AudioLowerVolume] . ,(my/map-command "wpctl set-volume @DEFAULT_SINK@ 5%-")) + ;; ([XF86AudioRaiseVolume] . ,(my/map-command "wpctl set-volume @DEFAULT_SINK@ 5%+")) + ;; ([XF86AudioMute] . ,(my/map-command "wpctl set-mute @DEFAULT_SINK@ toggle")) + ;; ;; s-N: Switch to certain workspace. + ;; ,@(mapcar (lambda (i) + ;; `(,(kbd (format "s-%d" i)) . + ;; (lambda () + ;; (interactive) + ;; (exwm-workspace-switch-create ,i)))) + ;; (number-sequence 0 9)))) + ;; ;; Enable EXWM + ;; (display-battery-mode) + ;; + ;; (defvar my-prev-battery nil) + ;; (defun my/battery-notification (data) + ;; (when (and my-prev-battery + ;; (equal (alist-get ?L data) "off-line") + ;; (< (string-to-number (alist-get ?p data)) 10) + ;; (>= (string-to-number (alist-get ?p my-prev-battery)) 10)) + ;; (my/map-command (string-join '("notify-send 'Battery is low' " "97.4")))) + ;; (setq my-prev-battery data)) + ;; (add-to-list 'battery-update-functions 'my/battery-notification) + ;; + ;; (display-time-mode) + ;; (set-face-attribute 'default nil :height 113) + ;; (exwm-enable)) +#+end_src ** From minimal-emacs.d *** Misc #+begin_src emacs-lisp diff --git a/home-manager/homeModules/exwm.nix b/home-manager/homeModules/exwm.nix new file mode 100644 index 0000000..bc5d79c --- /dev/null +++ b/home-manager/homeModules/exwm.nix @@ -0,0 +1,61 @@ +{ lib, pkgs, config, ... }: +{ + imports = [ + ./picom.nix + ./dunst.nix + ]; + + options = { + exwm.enable = lib.mkEnableOption " enable exwm"; + }; + + config = lib.mkIf config.exwm.enable { + picom.enable = true; + dunst.enable = true; + + programs.emacs = { + extraPackages = epkgs: with epkgs; [ exwm ]; + extraConfig = '' + (setq exwm--my-scripts "${./attachments/hypr-scripts}") + ''; + }; + services = { + # Screenshotting. + flameshot.enable = true; + + # Screen locking. + screen-locker = { + enable = true; + lockCmd = "${pkgs.i3lock-fancy}/bin/i3lock-fancy -p -t ''"; + inactiveInterval = 20; + }; + }; + home.file.xinitrc = { + text = '' + # Disable access control for the current user. + xhost +SI:localuser:$USER + + # Make Java applications aware this is a non-reparenting window manager. + export _JAVA_AWT_WM_NONREPARENTING=1 + + # Set default cursor. + xsetroot -cursor_name left_ptr + + picom -b + + # Finally start Emacs + ${pkgs.dbus.dbus-launch} --exit-with-session emacs -mm --fullscreen --internal-border=0 --border-width=0 + ''; + target = ".xinitrc"; + }; + home.packages = with pkgs; [ + boomer + arandr + feh + gtk3 + i3lock-fancy + xclip + xorg.xev + ]; + }; +} |
