Drop obsolete exwm-config.el

Instead of using the obsolete exwm-config in your init.el, we recommend to
create a custom configuration tailored to your needs. The old exwm-config file
and the EXWM wiki serve as starting points. The minimal configuration to get
EXWM working is as follows:

(require 'exwm)
(setq exwm-input-global-keys `(([?\s-r] . exwm-reset)))
(exwm-enable)

In addition you may want to customize `exwm-workspace-number',
`exwm-input-global-keys' and `exwm-input-simulation-keys'. In order to rename
EXWM buffers, such that they match the window class or window title, add custom
hooks to `exwm-update-title-hook' and `exwm-update-class-hook', for example:

(add-hook 'exwm-update-class-hook
  (lambda () (exwm-workspace-rename-buffer exwm-class-name)))

* exwm-config.el: Drop obsolete file.
This commit is contained in:
Daniel Mendler 2024-08-18 21:04:47 +02:00
parent fa3393806c
commit 423850fe83
No known key found for this signature in database
GPG key ID: D88ADB2A2693CA43

View file

@ -1,145 +0,0 @@
;;; exwm-config.el --- Predefined configurations -*- lexical-binding: t -*-
;; Copyright (C) 2015-2024 Free Software Foundation, Inc.
;; Author: Chris Feng <chris.w.feng@gmail.com>
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This module contains an example configuration of EXWM. Do not require this
;; file directly in your user configuration. Instead take it as inspiration and
;; copy the relevant settings to your user configuration.
;;; Code:
(require 'exwm)
(defun exwm-config--warn ()
"Print obsoletion warning."
(fset #'exwm-config--warn #'ignore)
(warn "The `exwm-config' file has been deprecated. We do not recommend requiring
`exwm-config' directly in your Emacs configuration. Instead copy the relevant
settings to your configuration and modify them as needed. The code from here
will be moved out of the source repository to the manual after the next
release. See https://github.com/emacs-exwm/exwm/issues/57."))
(defun exwm-config-example ()
"Default configuration of EXWM."
(exwm-config--warn)
;; Set the initial workspace number.
(unless (get 'exwm-workspace-number 'saved-value)
(setq exwm-workspace-number 4))
;; Make class name the buffer name
(add-hook 'exwm-update-class-hook
(lambda ()
(exwm-workspace-rename-buffer exwm-class-name)))
;; Global keybindings.
(unless (get 'exwm-input-global-keys 'saved-value)
(setq exwm-input-global-keys
`(
;; 's-r': Reset (to line-mode).
([?\s-r] . exwm-reset)
;; 's-w': Switch workspace.
([?\s-w] . exwm-workspace-switch)
;; 's-&': Launch application.
([?\s-&] . (lambda (command)
(interactive (list (read-shell-command "$ ")))
(start-process-shell-command command nil command)))
;; '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)))))
;; Line-editing shortcuts
(unless (get 'exwm-input-simulation-keys 'saved-value)
(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-d] . [delete])
([?\C-k] . [S-end delete]))))
;; Enable EXWM
(exwm-enable)
;; Configure Ido
(with-no-warnings (exwm-config-ido))
;; Other configurations
(with-no-warnings (exwm-config-misc)))
(make-obsolete 'exwm-config-example "Copy the relevant settings to your configuration." "0.30")
(defun exwm-config--fix/ido-buffer-window-other-frame ()
"Fix `ido-buffer-window-other-frame'."
(defalias 'exwm-config-ido-buffer-window-other-frame
(symbol-function 'ido-buffer-window-other-frame))
(defun ido-buffer-window-other-frame (buffer)
"This is a version redefined by EXWM.
You can find the original one at `exwm-config-ido-buffer-window-other-frame'."
(with-current-buffer (window-buffer (selected-window))
(if (and (derived-mode-p 'exwm-mode)
exwm--floating-frame)
;; Switch from a floating frame.
(with-current-buffer buffer
(if (and (derived-mode-p 'exwm-mode)
exwm--floating-frame
(eq exwm--frame exwm-workspace--current))
;; Switch to another floating frame.
(frame-root-window exwm--floating-frame)
;; Do not switch if the buffer is not on the current workspace.
(or (get-buffer-window buffer exwm-workspace--current)
(selected-window))))
(with-current-buffer buffer
(when (derived-mode-p 'exwm-mode)
(if (eq exwm--frame exwm-workspace--current)
(when exwm--floating-frame
;; Switch to a floating frame on the current workspace.
(frame-selected-window exwm--floating-frame))
;; Do not switch to exwm-mode buffers on other workspace (which
;; won't work unless `exwm-layout-show-all-buffers' is set)
(unless exwm-layout-show-all-buffers
(selected-window)))))))))
(defun exwm-config-ido ()
"Configure Ido to work with EXWM."
(exwm-config--warn)
(declare-function ido-mode "ido")
(ido-mode 1)
(add-hook 'exwm-init-hook #'exwm-config--fix/ido-buffer-window-other-frame))
(make-obsolete 'exwm-config-ido "Copy the relevant settings to your configuration." "0.30")
(defun exwm-config-misc ()
"Other configurations."
(exwm-config--warn)
;; Make more room
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(fringe-mode 1))
(make-obsolete 'exwm-config-misc "Copy the relevant settings to your configuration." "0.30")
(provide 'exwm-config)
;;; exwm-config.el ends here