aboutsummaryrefslogtreecommitdiff
path: root/home-manager
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/homeModules/default.nix1
-rw-r--r--home-manager/homeModules/emacs/config.org58
-rw-r--r--home-manager/homeModules/exwm.nix61
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
+ ];
+ };
+}