blob: 7ad3debe5b287a86a3421b25ba9b7b7e40a7e389 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
;; Time-stamp: <2020-04-01 22:13:15 (tslil@bison)>
(defun banish-rat ()
(interactive)
(shell-command "xdotool mousemove 1280 800")
(message "Rat banished."))
(use-package exwm
:if (window-system)
:ensure t
:demand
:config
(setq exwm-workspace-number 1
exwm-workspace-switch-create-limit 5
exwm-workspace-show-all-buffers nil)
(add-hook 'exwm-update-class-hook
(lambda ()
(exwm-workspace-rename-buffer exwm-class-name)))
;; -------------------------------------------------------------------
;; Global key binds
(setq exwm-input-simulation-keys
'(([?\C-b] . [left])
([?\C-f] . [right])
([?\C-p] . [up])
([?\C-n] . [down])
([?\C-a] . [home])
([?\C-e] . [end])
([?\M-v] . [prior])
([?\C-v] . [next])
([?\C-s] . [C-f])
;;([?\C-d] . [delete])
;;([?\C-k] . [S-end delete])
))
;; IME
(defvar exwm-workman-intl t)
(defun exwm-toggle-intl-ime ()
(interactive)
(let ((result (call-process-shell-command
(concat "setxkbmap -layout us -variant workman"
(if exwm-workman-intl "-intl" "")
" -option terminate:ctrl_alt_bksp -option ctrl:nocaps"))))
(if (not (= 0 result))
(message "Unable to switch keyboard layouts.")
(message (concat (if exwm-workman-intl "INTERNATIONAL" "STANDARD") " layout selected."))
(setq exwm-workman-intl (not exwm-workman-intl)))))
(exwm-input-set-key (kbd "s-i") 'exwm-toggle-intl-ime)
;; reset
(exwm-input-set-key (kbd "s-r") 'exwm-reset)
;; workspaces
(exwm-input-set-key (kbd "s-e") 'exwm-workspace-switch)
(dotimes (i 10)
(exwm-input-set-key (kbd (format "s-%d" i))
`(lambda ()
(interactive)
(exwm-workspace-switch-create ,i))))
;; buffer and window management
(exwm-input-set-key (kbd "s-<tab>") 'next-buffer)
(defvar exwm-last-workspace-index 0)
(defun exwm-last-workspace ()
(interactive)
(let ((temp exwm-workspace-current-index))
(exwm-workspace-switch exwm-last-workspace-index)
(setq exwm-last-workspace-index temp)))
(defun exwm-last-buffer ()
(interactive)
(switch-to-buffer (other-buffer (current-buffer) 1)))
(exwm-input-set-key (kbd "s-n") 'ivy-switch-buffer)
(exwm-input-set-key (kbd "s-o") 'exwm-last-buffer)
(exwm-input-set-key (kbd "s-\\") 'exwm-last-workspace)
(exwm-input-set-key (kbd "s-b") 'banish-rat)
;; run command
(exwm-input-set-key (kbd "s-c") (lambda ()
(interactive)
(start-process "" nil "st")))
(exwm-input-set-key (kbd "s-q") (lambda ()
(interactive)
(start-process "" nil "iceweasel")))
(exwm-input-set-key (kbd "s-<f2>") (lambda ()
(interactive)
(start-process "" nil "lock")))
(exwm-input-set-key (kbd "s-p") (lambda (command)
(interactive (list (read-shell-command "$ ")))
(start-process-shell-command command nil command)))
;; -------------------------------------------------------------------
;; RandR
(require 'exwm-randr)
(exwm-randr-enable)
(setq exwm-randr-workspace-monitor-plist
'(1 "LVDS1" 0 "VGA1"))
(exwm-enable))
;; -----------------------------------------------------------------------------
;; EXWM-edit
(use-package exwm-edit
:ensure t
:config
(add-hook 'exwm-edit-compose-hook (lambda ()
(text-mode))))
|