exwm setup

This commit is contained in:
Sakooooo 2024-07-18 19:30:01 +04:00
parent 37c589ff19
commit b22fe584c1
Signed by: sako
GPG key ID: 3FD715D87D7725E0
2 changed files with 120 additions and 2 deletions

View file

@ -1172,6 +1172,123 @@ Export and then view with emacs :)
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package pdf-tools) (use-package pdf-tools)
#+end_src #+end_src
* EXWM
I'm scared
#+begin_src emacs-lisp
(when (eq system-type 'gnu/linux)
(display-battery-mode)
(use-package exwm
:config
(defun sakomacs/exwm-init-hook ()
;; background
(call-process-shell-command "feh --bg-fill ~/background.png" nil 0)
(set-frame-parameter (selected-frame)'alpha '(90 . 90))
;; (call-process-shell-command "~/.config/polybar/startpolybar" nil 0)
;; (call-process-shell-command "~/.config/picom/startpicom" nil 0)
;; startup
;; (call-process-shell-command "nm-applet" nil 0)
;; (call-process-shell-command "blueman-applet" nil 0)
;; (call-process-shell-command "nextcloud" nil 0)
;; (call-process-shell-command "bitwarden" nil 0)
;; (call-process-shell-command "flameshot" nil 0)
)
;; background
;; todo turn this info a function
(add-hook 'exwm-init-hook 'sakomacs/exwm-init-hook)
;; startup
;; workspaces
(setq exwm-workspace-number 5)
(require 'exwm-systemtray)
(exwm-systemtray-enable)
;; polybar
(defvar sakomacs/polybar-process nil
"Holds the process of the running Polybar instance, if any")
(server-start)
(defun sakomacs/kill-panel ()
(interactive)
(when sakomacs/polybar-process
(ignore-errors
(kill-process sakomacs/polybar-process)))
(setq sakomacs/polybar-process nil))
(defun sakomacs/start-panel ()
(interactive)
(sakomacs/kill-panel)
(setq sakomacs/polybar-process (start-process-shell-command "polybar" nil "polybar panel")))
(defun sakomacs/send-polybar-hook (module-name hook-index)
(start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index)))
(defun sakomacs/send-polybar-exwm-workspace ()
(sakomacs/send-polybar-hook "exwm-workspace" 1))
;; Update panel indicator when workspace changes
(add-hook 'exwm-workspace-switch-hook #'sakomacs/send-polybar-exwm-workspace)
;; always use these keys in emacs
(setq exwm-input-prefix-keys
'(?\C-x
?\C-u
?\C-h
?\M-x
?\M-`
?\M-&
?\M-:
?\C-\M-j ;; Buffer list
?\C-\ )) ;; Ctrl+Space
;; Ctrl+Q will enable the next key to be sent directly
(define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
;; app launcher and fullscreen
(exwm-input-set-key (kbd "s-SPC") 'counsel-linux-app)
(exwm-input-set-key (kbd "s-f") 'exwm-layout-toggle-fullscreen)
;; Set up global key bindings. These always work, no matter the input state!
;; Keep in mind that changing this list after EXWM initializes has no effect.
(setq exwm-input-global-keys
`(
;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard)
([?\s-r] . exwm-reset)
;; Move between windows
([s-left] . windmove-left)
([s-right] . windmove-right)
([s-up] . windmove-up)
([s-down] . windmove-down)
;; Launch applications via shell command
([?\s-&] . (lambda (command)
(interactive (list (read-shell-command "$ ")))
(start-process-shell-command command nil command)))
;; Switch workspace
([?\s-w] . exwm-workspace-switch)
;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9)
,@(mapcar (lambda (i)
`(,(kbd (format "s-%d" i)) .
(lambda ()
(interactive)
(exwm-workspace-switch-create ,i))))
(number-sequence 0 9))))
)
(use-package desktop-environment
:after exwm
:config (desktop-environment-mode)
:custom
(desktop-environment-brightness-small-increment "2%+")
(desktop-environment-brightness-small-decrement "2%-")
(desktop-environment-brightness-normal-increment "5%+")
(desktop-environment-brightness-normal-decrement "5%-"))
)
#+end_src
* End * End
#+begin_src elisp #+begin_src elisp
(message "Welcome to Emacs!") (message "Welcome to Emacs!")

View file

@ -74,7 +74,9 @@ in {
}; };
}; };
}; };
libinput = { };
services.libinput = {
enable = true; enable = true;
# mouse # mouse
@ -87,7 +89,6 @@ in {
accelProfile = "flat"; accelProfile = "flat";
}; };
}; };
};
users.users.sako.packages = with pkgs; [ users.users.sako.packages = with pkgs; [
rofi rofi