Lint window-manager.el
- change `exwm/` prefixes to `window-manager-` - add Version, URL, Package-Requires sections - move `pkill` into wpc-misc.el - unify `window-manager,` `exwm` competing prefixes
This commit is contained in:
parent
a2d45c8db7
commit
84d6fb8f39
3 changed files with 81 additions and 92 deletions
|
@ -128,7 +128,7 @@
|
||||||
(keybinding/exwm "<XF86AudioMicMute>" #'pulse-audio/toggle-microphone)
|
(keybinding/exwm "<XF86AudioMicMute>" #'pulse-audio/toggle-microphone)
|
||||||
(keybinding/exwm "C-M-c" #'chrome/browse)
|
(keybinding/exwm "C-M-c" #'chrome/browse)
|
||||||
(keybinding/exwm (kbd/raw 'x11 "s") #'scrot/select)
|
(keybinding/exwm (kbd/raw 'x11 "s") #'scrot/select)
|
||||||
(keybinding/exwm "<C-M-tab>" #'exwm/switch-to-exwm-buffer)
|
(keybinding/exwm "<C-M-tab>" #'window-manager-switch-to-exwm-buffer)
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'override
|
:keymaps 'override
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
;;; window-manager.el --- Functions augmenting my usage of EXWM. -*- lexical-binding: t -*-
|
;;; window-manager.el --- Functions augmenting my usage of EXWM -*- lexical-binding: t -*-
|
||||||
|
|
||||||
;; Author: William Carroll <wpcarro@gmail.com>
|
;; Author: William Carroll <wpcarro@gmail.com>
|
||||||
|
;; Version: 0.0.1
|
||||||
|
;; URL: https://git.wpcarro.dev/wpcarro/briefcase
|
||||||
|
;; Package-Requires: ((emacs "25.1"))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; I switched to EXWM from i3, and I haven't looked back. One day I may write a
|
;; I switched to EXWM from i3, and I haven't looked back. One day I may write a
|
||||||
|
@ -32,12 +36,6 @@
|
||||||
;; Library
|
;; Library
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
;; TODO: Move this function to another module.
|
|
||||||
(defun pkill (name)
|
|
||||||
"Call the pkill executable using NAME as its argument."
|
|
||||||
(interactive "sProcess name: ")
|
|
||||||
(call-process "pkill" nil nil nil name))
|
|
||||||
|
|
||||||
;; TODO: Associate `window-purpose' window-layouts with each of these named
|
;; TODO: Associate `window-purpose' window-layouts with each of these named
|
||||||
;; workspaces.
|
;; workspaces.
|
||||||
|
|
||||||
|
@ -58,37 +56,37 @@
|
||||||
;; TODO: Support MRU cache of workspaces for easily switching back-and-forth
|
;; TODO: Support MRU cache of workspaces for easily switching back-and-forth
|
||||||
;; between workspaces.
|
;; between workspaces.
|
||||||
|
|
||||||
(cl-defstruct exwm/named-workspace label kbd)
|
(cl-defstruct window-manager--named-workspace label kbd)
|
||||||
|
|
||||||
(defconst exwm/install-workspace-kbds? t
|
(defconst window-manager--install-kbds? t
|
||||||
"When t, install the keybindings to switch between named-workspaces.")
|
"When t, install the keybindings to switch between named-workspaces.")
|
||||||
|
|
||||||
;; TODO: Consume `cache/touch' after changing workspaces. Use this to enable
|
;; TODO: Consume `cache/touch' after changing workspaces. Use this to enable
|
||||||
;; cycling through workspaces.
|
;; cycling through workspaces.
|
||||||
|
|
||||||
(defconst exwm/named-workspaces
|
(defconst window-manager--named-workspaces
|
||||||
(list (make-exwm/named-workspace
|
(list (make-window-manager--named-workspace
|
||||||
:label "Web surfing"
|
:label "Web surfing"
|
||||||
:kbd "c")
|
:kbd "c")
|
||||||
(make-exwm/named-workspace
|
(make-window-manager--named-workspace
|
||||||
:label "Briefcase"
|
:label "Briefcase"
|
||||||
:kbd "d")
|
:kbd "d")
|
||||||
(make-exwm/named-workspace
|
(make-window-manager--named-workspace
|
||||||
:label "Todos"
|
:label "Todos"
|
||||||
:kbd "o")
|
:kbd "o")
|
||||||
(make-exwm/named-workspace
|
(make-window-manager--named-workspace
|
||||||
:label "Chatter"
|
:label "Chatter"
|
||||||
:kbd "h"))
|
:kbd "h"))
|
||||||
"List of `exwm/named-workspace' structs.")
|
"List of `window-manager--named-workspace' structs.")
|
||||||
|
|
||||||
;; Assert that no two workspaces share KBDs.
|
;; Assert that no two workspaces share KBDs.
|
||||||
(prelude/assert (= (list/length exwm/named-workspaces)
|
(prelude/assert (= (list/length window-manager--named-workspaces)
|
||||||
(->> exwm/named-workspaces
|
(->> window-manager--named-workspaces
|
||||||
(list/map #'exwm/named-workspace-kbd)
|
(list/map #'window-manager--named-workspace-kbd)
|
||||||
set/from-list
|
set/from-list
|
||||||
set/count)))
|
set/count)))
|
||||||
|
|
||||||
(defun window-manager/alert (x)
|
(defun window-manager--alert (x)
|
||||||
"Message X with a structured format."
|
"Message X with a structured format."
|
||||||
(alert (string/concat "[exwm] " x)))
|
(alert (string/concat "[exwm] " x)))
|
||||||
|
|
||||||
|
@ -108,7 +106,7 @@
|
||||||
|
|
||||||
(evil-set-initial-state 'exwm-mode 'emacs)
|
(evil-set-initial-state 'exwm-mode 'emacs)
|
||||||
(setq exwm-workspace-number
|
(setq exwm-workspace-number
|
||||||
(list/length exwm/named-workspaces))
|
(list/length window-manager--named-workspaces))
|
||||||
;; EXWM supports "line-mode" and "char-mode".
|
;; EXWM supports "line-mode" and "char-mode".
|
||||||
;;
|
;;
|
||||||
;; Note: It appears that calling `exwm-input-set-key' works if it's called
|
;; Note: It appears that calling `exwm-input-set-key' works if it's called
|
||||||
|
@ -164,17 +162,17 @@
|
||||||
(:key "M-:" :fn eval-expression)
|
(:key "M-:" :fn eval-expression)
|
||||||
(:key "M-SPC" :fn ivy-helpers/run-external-command)
|
(:key "M-SPC" :fn ivy-helpers/run-external-command)
|
||||||
(:key "M-x" :fn counsel-M-x)
|
(:key "M-x" :fn counsel-M-x)
|
||||||
(:key "<M-tab>" :fn exwm/next-workspace)
|
(:key "<M-tab>" :fn window-manager-next-workspace)
|
||||||
(:key "<M-S-iso-lefttab>" :fn exwm/prev-workspace)
|
(:key "<M-S-iso-lefttab>" :fn window-manager-prev-workspace)
|
||||||
(:key "<M-iso-lefttab>" :fn exwm/prev-workspace)
|
(:key "<M-iso-lefttab>" :fn window-manager-prev-workspace)
|
||||||
(:key "C-M-\\" :fn ivy-pass)
|
(:key "C-M-\\" :fn ivy-pass)
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Workspaces
|
;; Workspaces
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(:key ,(kbd/raw 'workspace "l") :fn window-manager/logout)
|
(:key ,(kbd/raw 'workspace "l") :fn window-manager-logout)
|
||||||
(:key ,(kbd/raw 'workspace "i") :fn exwm/toggle-mode))))
|
(:key ,(kbd/raw 'workspace "i") :fn window-manager-toggle-mode))))
|
||||||
(setq exwm-input-global-keys
|
(setq exwm-input-global-keys
|
||||||
(->> kbds
|
(->> kbds
|
||||||
(-map (lambda (plist)
|
(-map (lambda (plist)
|
||||||
|
@ -198,75 +196,61 @@
|
||||||
;; TODO: Package workspace management in another module.
|
;; TODO: Package workspace management in another module.
|
||||||
|
|
||||||
;; Here is the code required to allow EXWM to cycle workspaces.
|
;; Here is the code required to allow EXWM to cycle workspaces.
|
||||||
(defconst exwm/workspaces
|
(defconst window-manager--workspaces
|
||||||
(->> exwm/named-workspaces
|
(->> window-manager--named-workspaces
|
||||||
cycle/from-list)
|
cycle/from-list)
|
||||||
"Cycle of the my EXWM workspaces.")
|
"Cycle of the my EXWM workspaces.")
|
||||||
|
|
||||||
(prelude/assert
|
(prelude/assert
|
||||||
(= exwm-workspace-number
|
(= exwm-workspace-number
|
||||||
(list/length exwm/named-workspaces)))
|
(list/length window-manager--named-workspaces)))
|
||||||
|
|
||||||
(defun exwm/next-workspace ()
|
(defun window-manager-next-workspace ()
|
||||||
"Cycle forwards to the next workspace."
|
"Cycle forwards to the next workspace."
|
||||||
(interactive)
|
(interactive)
|
||||||
(exwm/change-workspace (cycle/next exwm/workspaces)))
|
(window-manager--change-workspace (cycle/next window-manager--workspaces)))
|
||||||
|
|
||||||
(defun exwm/prev-workspace ()
|
(defun window-manager-prev-workspace ()
|
||||||
"Cycle backwards to the previous workspace."
|
"Cycle backwards to the previous workspace."
|
||||||
(interactive)
|
(interactive)
|
||||||
(exwm/change-workspace (cycle/prev exwm/workspaces)))
|
(window-manager--change-workspace (cycle/prev window-manager--workspaces)))
|
||||||
|
|
||||||
;; TODO: Create friendlier API for working with EXWM.
|
;; TODO: Create friendlier API for working with EXWM.
|
||||||
|
|
||||||
;; Here is the code required to toggle EXWM's modes.
|
;; Here is the code required to toggle EXWM's modes.
|
||||||
(defun exwm/line-mode ()
|
(defun window-manager--line-mode ()
|
||||||
"Switch exwm to line-mode."
|
"Switch exwm to line-mode."
|
||||||
(call-interactively #'exwm-input-grab-keyboard)
|
(call-interactively #'exwm-input-grab-keyboard)
|
||||||
(window-manager/alert "Switched to line-mode"))
|
(window-manager--alert "Switched to line-mode"))
|
||||||
|
|
||||||
(defun exwm/char-mode ()
|
(defun window-manager--char-mode ()
|
||||||
"Switch exwm to char-mode."
|
"Switch exwm to char-mode."
|
||||||
(call-interactively #'exwm-input-release-keyboard)
|
(call-interactively #'exwm-input-release-keyboard)
|
||||||
(window-manager/alert "Switched to char-mode"))
|
(window-manager--alert "Switched to char-mode"))
|
||||||
|
|
||||||
(defconst exwm/modes
|
(defconst window-manager--modes
|
||||||
(cycle/from-list (list #'exwm/char-mode
|
(cycle/from-list (list #'window-manager--char-mode
|
||||||
#'exwm/line-mode))
|
#'window-manager--line-mode))
|
||||||
"Functions to switch exwm modes.")
|
"Functions to switch exwm modes.")
|
||||||
|
|
||||||
(defun exwm/toggle-mode ()
|
(defun window-manager-toggle-mode ()
|
||||||
"Switch between line- and char- mode."
|
"Switch between line- and char- mode."
|
||||||
(interactive)
|
(interactive)
|
||||||
(with-current-buffer (window-buffer)
|
(with-current-buffer (window-buffer)
|
||||||
(when (eq major-mode 'exwm-mode)
|
(when (eq major-mode 'exwm-mode)
|
||||||
(funcall (cycle/next exwm/modes)))))
|
(funcall (cycle/next window-manager--modes)))))
|
||||||
|
|
||||||
;; Ensure exwm apps open in char-mode.
|
;; Ensure exwm apps open in char-mode.
|
||||||
(add-hook 'exwm-manage-finish-hook #'exwm/char-mode)
|
(add-hook 'exwm-manage-finish-hook #'window-manager--char-mode)
|
||||||
|
|
||||||
;; Interface to the Linux password manager
|
;; Interface to the Linux password manager
|
||||||
;; TODO: Consider writing a better client for this.
|
;; TODO: Consider writing a better client for this.
|
||||||
(use-package ivy-pass)
|
(use-package ivy-pass)
|
||||||
|
|
||||||
;; TODO: How do I handle this dependency?
|
;; TODO: How do I handle this dependency?
|
||||||
(defconst exwm/preferred-browser "google-chrome"
|
(defconst window-manager--preferred-browser "google-chrome"
|
||||||
"My preferred web browser.")
|
"My preferred web browser.")
|
||||||
|
|
||||||
;; TODO: Support searching all "launchable" applications like OSX's Spotlight.
|
|
||||||
;; TODO: Model this as key-value pairs.
|
|
||||||
(defconst window-manager/applications
|
|
||||||
(list "google-chrome --new-window --app=https://chat.google.com"
|
|
||||||
"google-chrome --new-window --app=https://calendar.google.com"
|
|
||||||
"google-chrome --new-window --app=https://gmail.com"
|
|
||||||
"telegram-desktop"
|
|
||||||
"google-chrome --new-window --app=https://teknql.slack.com"
|
|
||||||
"google-chrome --new-window --app=https://web.whatsapp.com"
|
|
||||||
"google-chrome --new-window --app=https://irccloud.com"
|
|
||||||
exwm/preferred-browser)
|
|
||||||
"Applications that I commonly use.
|
|
||||||
These are the types of items that would usually appear in dmenu.")
|
|
||||||
|
|
||||||
;; TODO: Consider replacing the `ivy-read' call with something like `hydra' that
|
;; TODO: Consider replacing the `ivy-read' call with something like `hydra' that
|
||||||
;; can provide a small mode for accepting user-input.
|
;; can provide a small mode for accepting user-input.
|
||||||
;; TODO: Put this somewhere more diliberate.
|
;; TODO: Put this somewhere more diliberate.
|
||||||
|
@ -279,7 +263,7 @@ These are the types of items that would usually appear in dmenu.")
|
||||||
;; Maybe just create a ~/.xsecurelockrc
|
;; Maybe just create a ~/.xsecurelockrc
|
||||||
;; TODO: Is there a shell-command API that accepts an alist and serializes it
|
;; TODO: Is there a shell-command API that accepts an alist and serializes it
|
||||||
;; into variables to pass to the shell command?
|
;; into variables to pass to the shell command?
|
||||||
(defconst window-manager/xsecurelock
|
(defconst window-manager--xsecurelock
|
||||||
"/usr/share/goobuntu-desktop-files/xsecurelock.sh"
|
"/usr/share/goobuntu-desktop-files/xsecurelock.sh"
|
||||||
"Path to the proper xsecurelock executable.
|
"Path to the proper xsecurelock executable.
|
||||||
The other path to xsecurelock is /usr/bin/xsecurelock, which works fine, but it
|
The other path to xsecurelock is /usr/bin/xsecurelock, which works fine, but it
|
||||||
|
@ -289,7 +273,7 @@ login attempts fail with an \"unknown error\", which isn't very helpful. To
|
||||||
avoid this, prefer the goobuntu wrapper around xsecurelock when on a goobuntu
|
avoid this, prefer the goobuntu wrapper around xsecurelock when on a goobuntu
|
||||||
device. This all relates to PAM (i.e. pluggable authentication modules).")
|
device. This all relates to PAM (i.e. pluggable authentication modules).")
|
||||||
|
|
||||||
(defun window-manager/logout ()
|
(defun window-manager-logout ()
|
||||||
"Prompt the user for options for logging out, shutting down, etc.
|
"Prompt the user for options for logging out, shutting down, etc.
|
||||||
|
|
||||||
The following options are supported:
|
The following options are supported:
|
||||||
|
@ -302,13 +286,13 @@ The following options are supported:
|
||||||
|
|
||||||
Ivy is used to capture the user's input."
|
Ivy is used to capture the user's input."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((name->cmd `(("Lock" . ,window-manager/xsecurelock)
|
(let* ((name->cmd `(("Lock" . ,window-manager--xsecurelock)
|
||||||
("Logout" . "sudo systemctl stop lightdm")
|
("Logout" . "sudo systemctl stop lightdm")
|
||||||
("Suspend" . ,(string/concat
|
("Suspend" . ,(string/concat
|
||||||
window-manager/xsecurelock
|
window-manager--xsecurelock
|
||||||
" && systemctl suspend"))
|
" && systemctl suspend"))
|
||||||
("Hibernate" . ,(string/concat
|
("Hibernate" . ,(string/concat
|
||||||
window-manager/xsecurelock
|
window-manager--xsecurelock
|
||||||
" && systemctl hibernate"))
|
" && systemctl hibernate"))
|
||||||
("Reboot" . "systemctl reboot")
|
("Reboot" . "systemctl reboot")
|
||||||
("Shutdown" . "systemctl poweroff"))))
|
("Shutdown" . "systemctl poweroff"))))
|
||||||
|
@ -318,80 +302,80 @@ Ivy is used to capture the user's input."
|
||||||
(alist/get (ivy-read "System: " (alist/keys name->cmd))
|
(alist/get (ivy-read "System: " (alist/keys name->cmd))
|
||||||
name->cmd))))))
|
name->cmd))))))
|
||||||
|
|
||||||
(defun exwm/label->index (label workspaces)
|
(defun window-manager--label->index (label workspaces)
|
||||||
"Return the index of the workspace in WORKSPACES named LABEL."
|
"Return the index of the workspace in WORKSPACES named LABEL."
|
||||||
(let ((index (-elem-index label (-map #'exwm/named-workspace-label workspaces))))
|
(let ((index (-elem-index label (-map #'window-manager--named-workspace-label workspaces))))
|
||||||
(if index index (error (format "No workspace found for label: %s" label)))))
|
(if index index (error (format "No workspace found for label: %s" label)))))
|
||||||
|
|
||||||
(defun exwm/register-kbd (workspace)
|
(defun window-manager--register-kbd (workspace)
|
||||||
"Registers a keybinding for WORKSPACE struct.
|
"Registers a keybinding for WORKSPACE struct.
|
||||||
Currently using super- as the prefix for switching workspaces."
|
Currently using super- as the prefix for switching workspaces."
|
||||||
(let ((handler (lambda ()
|
(let ((handler (lambda ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(exwm/switch (exwm/named-workspace-label workspace))))
|
(window-manager--switch (window-manager--named-workspace-label workspace))))
|
||||||
(key (exwm/named-workspace-kbd workspace)))
|
(key (window-manager--named-workspace-kbd workspace)))
|
||||||
(exwm-input-set-key
|
(exwm-input-set-key
|
||||||
(kbd/for 'workspace key)
|
(kbd/for 'workspace key)
|
||||||
handler)))
|
handler)))
|
||||||
|
|
||||||
(defun exwm/change-workspace (workspace)
|
(defun window-manager--change-workspace (workspace)
|
||||||
"Switch EXWM workspaces to the WORKSPACE struct."
|
"Switch EXWM workspaces to the WORKSPACE struct."
|
||||||
(exwm-workspace-switch
|
(exwm-workspace-switch
|
||||||
(exwm/label->index (exwm/named-workspace-label workspace)
|
(window-manager--label->index (window-manager--named-workspace-label workspace)
|
||||||
exwm/named-workspaces))
|
window-manager--named-workspaces))
|
||||||
(window-manager/alert
|
(window-manager--alert
|
||||||
(string/format "Switched to: %s" (exwm/named-workspace-label workspace))))
|
(string/format "Switched to: %s" (window-manager--named-workspace-label workspace))))
|
||||||
|
|
||||||
(defun exwm/switch (label)
|
(defun window-manager--switch (label)
|
||||||
"Switch to a named workspaces using LABEL."
|
"Switch to a named workspaces using LABEL."
|
||||||
(cycle/focus (lambda (x)
|
(cycle/focus (lambda (x)
|
||||||
(equal label
|
(equal label
|
||||||
(exwm/named-workspace-label x)))
|
(window-manager--named-workspace-label x)))
|
||||||
exwm/workspaces)
|
window-manager--workspaces)
|
||||||
(exwm/change-workspace (cycle/current exwm/workspaces)))
|
(window-manager--change-workspace (cycle/current window-manager--workspaces)))
|
||||||
|
|
||||||
(exwm-input-set-key (kbd "C-S-f") #'exwm/toggle-previous)
|
(exwm-input-set-key (kbd "C-S-f") #'window-manager-toggle-previous)
|
||||||
|
|
||||||
(defun exwm/toggle-previous ()
|
(defun window-manager-toggle-previous ()
|
||||||
"Focus the previously active EXWM workspace."
|
"Focus the previously active EXWM workspace."
|
||||||
(interactive)
|
(interactive)
|
||||||
(exwm/change-workspace (cycle/focus-previous! exwm/workspaces)))
|
(window-manager--change-workspace (cycle/focus-previous! window-manager--workspaces)))
|
||||||
|
|
||||||
(defun exwm/exwm-buffer? (x)
|
(defun window-manager--exwm-buffer? (x)
|
||||||
"Return t if buffer X is an EXWM buffer."
|
"Return t if buffer X is an EXWM buffer."
|
||||||
(equal 'exwm-mode (buffer-local-value 'major-mode x)))
|
(equal 'exwm-mode (buffer-local-value 'major-mode x)))
|
||||||
|
|
||||||
(defun exwm/application-name (buffer)
|
(defun window-manager--application-name (buffer)
|
||||||
"Return the name of the application running in the EXWM BUFFER.
|
"Return the name of the application running in the EXWM BUFFER.
|
||||||
This function asssumes that BUFFER passes the `exwm/exwm-buffer?' predicate."
|
This function asssumes that BUFFER passes the `window-manager--exwm-buffer?' predicate."
|
||||||
(with-current-buffer buffer exwm-class-name))
|
(with-current-buffer buffer exwm-class-name))
|
||||||
|
|
||||||
;; TODO: Support disambiguating between two or more instances of the same
|
;; TODO: Support disambiguating between two or more instances of the same
|
||||||
;; application. For instance if two `exwm-class-name' values are
|
;; application. For instance if two `exwm-class-name' values are
|
||||||
;; "Google-chrome", find a encode this information in the `buffer-alist'.
|
;; "Google-chrome", find a encode this information in the `buffer-alist'.
|
||||||
(defun exwm/switch-to-exwm-buffer ()
|
(defun window-manager-switch-to-exwm-buffer ()
|
||||||
"Use `completing-read' to focus an EXWM buffer."
|
"Use `completing-read' to focus an EXWM buffer."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((buffer-alist (->> (buffer-list)
|
(let* ((buffer-alist (->> (buffer-list)
|
||||||
(-filter #'exwm/exwm-buffer?)
|
(-filter #'window-manager--exwm-buffer?)
|
||||||
(-map (lambda (buffer)
|
(-map (lambda (buffer)
|
||||||
(cons (exwm/application-name buffer)
|
(cons (window-manager--application-name buffer)
|
||||||
buffer)))))
|
buffer)))))
|
||||||
(label (completing-read "Switch to EXWM buffer: " buffer-alist)))
|
(label (completing-read "Switch to EXWM buffer: " buffer-alist)))
|
||||||
(exwm-workspace-switch-to-buffer
|
(exwm-workspace-switch-to-buffer
|
||||||
(alist-get label buffer-alist nil nil #'string=))))
|
(alist-get label buffer-alist nil nil #'string=))))
|
||||||
|
|
||||||
(when exwm/install-workspace-kbds?
|
(when window-manager--install-kbds?
|
||||||
(progn
|
(progn
|
||||||
(->> exwm/named-workspaces
|
(->> window-manager--named-workspaces
|
||||||
(list/map #'exwm/register-kbd))
|
(list/map #'window-manager--register-kbd))
|
||||||
(window-manager/alert "Registered workspace KBDs!")))
|
(window-manager--alert "Registered workspace KBDs!")))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Startup Applications in `exwm/named-workspaces'
|
;; Startup Applications in `window-manager--named-workspaces'
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(add-hook 'exwm-init-hook (lambda () (exwm/switch "Briefcase")))
|
(add-hook 'exwm-init-hook (lambda () (window-manager--switch "Briefcase")))
|
||||||
|
|
||||||
(provide 'window-manager)
|
(provide 'window-manager)
|
||||||
;;; window-manager.el ends here
|
;;; window-manager.el ends here
|
||||||
|
|
|
@ -216,6 +216,11 @@
|
||||||
|
|
||||||
(add-to-list 'project-find-functions #'wpc-misc--briefcase-find)
|
(add-to-list 'project-find-functions #'wpc-misc--briefcase-find)
|
||||||
|
|
||||||
|
(defun wpc-misc-pkill (name)
|
||||||
|
"Call the pkill executable using NAME as its argument."
|
||||||
|
(interactive "sProcess name: ")
|
||||||
|
(call-process "pkill" nil nil nil name))
|
||||||
|
|
||||||
(use-package deadgrep
|
(use-package deadgrep
|
||||||
:config
|
:config
|
||||||
(general-define-key
|
(general-define-key
|
||||||
|
|
Loading…
Reference in a new issue