Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 4.78 KB | None | 0 0
  1.  
  2. ;; exwm
  3. (when (string= system-type "gnu/linux")
  4.   (use-package exwm
  5.     :ensure t
  6.     :init
  7.     :config
  8.     (require 'exwm)
  9.     (require 'exwm-config)
  10.     (require 'exwm-systemtray)
  11.     (require 'ido)
  12.     (require 'exwm-randr)
  13.    
  14.     ;; Set the initial workspace number.
  15.     (setq exwm-workspace-number 3)
  16.     (setq exwm-randr-workspace-output-plist '(0 "HDMI1" 1 "HDMI2" 2 "eDP1"))
  17.     ;; Make class name the buffer name
  18.     (add-hook 'exwm-update-class-hook
  19.           (lambda ()
  20.         (exwm-workspace-rename-buffer exwm-class-name)))
  21.     ;; 's-r': Reset
  22.     (exwm-input-set-key (kbd "s-r") #'exwm-reset)
  23.     ;; 's-w': Switch workspace
  24.     (exwm-input-set-key (kbd "s-w") #'exwm-workspace-switch)
  25.     ;; 's-N': Switch to certain window (M-n does this too)
  26.     (dotimes (i 10)
  27.       (exwm-input-set-key (kbd (format "s-%d" i))
  28.               `(lambda ()
  29.                  (interactive)
  30.                  (winum-select-window-by-number ,i))))
  31.     ;; 's-d': Launch application
  32.     (exwm-input-set-key (kbd "s-d")
  33.             (lambda (command)
  34.               (interactive (list (read-shell-command "$ ")))
  35.               (start-process-shell-command command nil command)))
  36.     ;; Line-editing shortcuts
  37.     (setq exwm-input-simulation-keys
  38.       '())
  39.     (setq exwm-workspace-show-all-buffers 1)
  40.     ;; Configure Ido
  41.     (exwm-config-ido)
  42.     ;; Other configurations
  43.     (exwm-config-misc)
  44.     (exwm-randr-enable)
  45.     (setq ediff-window-setup-function 'ediff-setup-windows-plain)
  46.     (push ?\M-\s exwm-input-prefix-keys)
  47.     (push ?\C-g exwm-input-prefix-keys)
  48.     (delete ?\C-c exwm-input-prefix-keys)
  49.     (delete ?\C-h exwm-input-prefix-keys)
  50.  
  51.     (exwm-enable)
  52.  
  53.     ;; Media keys
  54.     (exwm-input-set-key
  55.      (kbd "<XF86AudioRaiseVolume>")
  56.      (lambda ()
  57.        (interactive) (start-process-shell-command
  58.               "pactl" nil "pactl set-sink-volume 0 +5% && pactl set-sink-volume 1 +5%")))
  59.     (exwm-input-set-key
  60.      (kbd "<XF86AudioLowerVolume>")
  61.      (lambda ()
  62.        (interactive) (start-process-shell-command
  63.               "pactl" nil "pactl set-sink-volume 0 -5% && pactl set-sink-volume 1 -5%")))
  64.     (exwm-input-set-key
  65.      (kbd "<XF86AudioMute>")
  66.      (lambda ()
  67.        (interactive) (start-process-shell-command
  68.               "pactl" nil "pactl set-sink-mute 0 toggle && pactl set-sink-mute 1 toggle")))
  69.  
  70.     (defun display-backlight-brightness ()
  71.       (message "Backlight at %s"
  72.            (car (split-string
  73.              (shell-command-to-string "xbacklight -get")
  74.              "\\." t))))
  75.    
  76.     (exwm-input-set-key
  77.      (kbd "<XF86MonBrightnessUp>")
  78.      (lambda ()
  79.        (interactive)
  80.        (start-process-shell-command
  81.     "xbacklight" nil "xbacklight -inc 5")
  82.        (display-backlight-brightness)
  83.        ))
  84.  
  85.     (exwm-input-set-key
  86.      (kbd "<XF86MonBrightnessDown>")
  87.      (lambda ()
  88.        (interactive)
  89.        (start-process-shell-command
  90.     "xbacklight" nil "xbacklight -dec 5")
  91.        (display-backlight-brightness)))
  92.  
  93.     ;; s-l locks the screen using slock
  94.     (exwm-input-set-key
  95.      (kbd "s-l")
  96.      (lambda ()
  97.        (interactive)
  98.        (start-process-shell-command
  99.     "slock" nil "slock")
  100.        ))
  101.  
  102.     (defun change-kbd-brightness (delta)
  103.       (interactive "sBrightness delta: ")
  104.       (start-process-shell-command
  105.        "system76_keyboard.py"
  106.        "*Messages*"
  107.        (concat
  108.     "~/projects/system76_keyboard/system76_keyboard.py change-brightness "
  109.     delta)
  110.        )
  111.       )
  112.    
  113.     (defun change-kbd-color (color)
  114.       (interactive "sColor (e.g. FFFFFF): ")
  115.       (start-process-shell-command
  116.        "system76_keyboard.py"
  117.        "*Messages*"
  118.        (concat
  119.     "~/projects/system76_keyboard/system76_keyboard.py change-color "
  120.     color)
  121.        )
  122.       )
  123.  
  124.     (evil-leader/set-key "h k ="
  125.       (lambda ()
  126.     (interactive)
  127.     (change-kbd-brightness "+64")))
  128.  
  129.     (evil-leader/set-key "h k -"
  130.       (lambda ()
  131.     (interactive)
  132.     (change-kbd-brightness "-64")))
  133.  
  134.     (evil-leader/set-key "h k c" 'change-kbd-color)
  135.  
  136.     (add-hook 'exwm-update-title-hook
  137.           (lambda ()
  138.         (rename-buffer exwm-title t)
  139.         ))
  140.     )
  141.   )
  142.  
  143. ;; Window management
  144.  
  145. (use-package winum
  146.   :ensure t
  147.   :init
  148.   (setq winum-keymap
  149.     (let ((map (make-sparse-keymap)))
  150.       (define-key map (kbd "M-0") 'winum-select-window-0-or-10)
  151.       (define-key map (kbd "M-1") 'winum-select-window-1)
  152.       (define-key map (kbd "M-2") 'winum-select-window-2)
  153.       (define-key map (kbd "M-3") 'winum-select-window-3)
  154.       (define-key map (kbd "M-4") 'winum-select-window-4)
  155.       (define-key map (kbd "M-5") 'winum-select-window-5)
  156.       (define-key map (kbd "M-6") 'winum-select-window-6)
  157.       (define-key map (kbd "M-7") 'winum-select-window-7)
  158.       (define-key map (kbd "M-8") 'winum-select-window-8)
  159.       map))
  160.   :config
  161.   ;; Since I use spaceline for winum numbers, prevent winum from adding them
  162.   (setq winum-auto-setup-mode-line nil)
  163.   (winum-mode)
  164.   )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement