about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* Simplify and improve focus handling (#10) subtree-stagingSteven Allen2024-02-051-29/+23
| | | | | | | | | | | | | | | | | | | | Combine both focus update timers into one and ignore windows in "no focus" frames. * exwm-input.el (exwm-input--on-buffer-list-update): Avoid focusing windows in frames with the `no-accept-focus` frame property. (exwm-input--update-focus-defer-timer): Remove the duplicate timer. (exwm-input--update-focus-defer): Use a single `exwm-input--update-focus-timer`. (exwm-input--update-focus-commit): Read `exwm-input--update-focus-window` instead of taking a window as a parameter (this is what lets us combine the timers). (exwm-input--update-focus-commit): Use a let-bind instead of unwind-protect. (exwm-input--exit): Remove references to `exwm-input--update-focus-defer-timer`.
* Ensure that default-directory is a directory name in EXWM buffers.Daniel Mendler2024-02-041-1/+1
| | | | | | | | Otherwise `default-directory' could be /home/user instead of /home/user/ as is expected by Emacs. * exwm-manage.el (exwm-manage--update-default-directory): Use `file-name-as-directory'.
* Set the EXWM buffer's default directory to match the process's CWD (#14)Steven Allen2024-02-041-0/+18
| | | | | | * exwm-manage.el (exwm-manage--update-default-directory): define a function to update the default-directory of an X window based on it's CID. (exwm-manage--manage-window): call `exwm-manage--update-update-default-directory` on manage (fixes #12).
* Remove redundant with-current-buffer in manage-window (#13)Steven Allen2024-02-041-14/+10
| | | | | | | | All this logic runs in the context of the EXWM buffer. If there are concerns about the X windows associating with a different buffer while we're still trying to manage it, we probably have bigger problems. * exwm-manage.el (exwm-manage--manage-window): assume that the current buffer doesn't change.
* Use '=' instead of 'eq' to compare numbers.Steven Allen2024-01-242-2/+3
| | | | | | * exwm.el (exwm--update-desktop): * exwm-layout.el (exwm-layout--hide): Use `=` instead of `eq` for numeric comparison.
* Use color-values instead of x-color-valuesSteven Allen2024-01-241-1/+1
| | | | | * exwm-core.el (exwm--color->pixel): Use `color-values` (introduced in Emacs 21) instead of `x-color-values` (deprecated in Emacs 30).
* Move xsettings classes to xelbDaniel Mendler2024-01-151-67/+2
|
* ; README: Refer to the user guide for installation instructionsDaniel Mendler2024-01-141-4/+1
|
* New customization group exwm-xsettingsDaniel Mendler2024-01-141-5/+6
| | | | * exwm-xsettings.el (exwm-xsettings): New customization group.
* New customization group exwm-debugDaniel Mendler2024-01-141-1/+4
| | | | | | The group was already used, but the docstring was missing. * exwm-core.el (exwm-debug): New customization group.
* ; README: Fix feature list formattingDaniel Mendler2024-01-131-0/+2
|
* ; Commentary: Update list of featuresDaniel Mendler2024-01-132-8/+12
|
* Implement the XSETTINGS protocolSteven Allen2024-01-131-0/+400
| | | | | | | Users can use this to configure system-wide themes, icons, fonts, etc. * exwm-xsettings.el: Implement the XSETTINGS protocol (fixes https://github.com/ch11ng/exwm/issues/876)
* Drop :version keywords from defgroupDaniel Mendler2024-01-138-8/+0
| | | | These may refer to an Emacs version and may have been added by mistake.
* Depend on Emacs 27.1Daniel Mendler2024-01-132-15/+5
| | | | | Emacs 27.1 is widely available on all major Linux distributions, including the ones with long time support.
* ; Add LICENSE to .elpaignoreDaniel Mendler2024-01-121-0/+1
|
* Add new maintainers: Steven Allen (@stebalien) and Daniel Mendler (@minad)Daniel Mendler2024-01-121-1/+1
|
* ; Update repository URLsDaniel Mendler2024-01-122-7/+7
|
* Remove obsolete functions and variablesDaniel Mendler2024-01-122-12/+0
| | | | | | | | These functions and variables have been marked as obsolete over five years ago. * exwm-input.el (exwm-input-set-simulation-keys): Remove obsolete function. * exwm-randr.el (exwm-randr--refresh, exwm-randr-workspace-output-plist): Remove obsolete aliases.
* exwm-blocking-subrs: x-* functions may be missing on some Emacs buildsDaniel Mendler2024-01-121-2/+3
| | | | Avoid compiler warnings. Follow-up of https://github.com/ch11ng/exwm/pull/937.
* ; First line of docstring should be a full sentenceDaniel Mendler2024-01-123-8/+7
|
* ; Use two spaces after sentenceDaniel Mendler2024-01-122-2/+2
| | | | I follow this convention in Elisp files only.
* ; exwm-background: Wrap docstrings to avoid compiler warningsDaniel Mendler2024-01-121-4/+4
|
* ; README and commentary: Mention background and xim featuresDaniel Mendler2024-01-122-0/+3
|
* ; Shorten docstringsAdrián Medraño Calvo2024-01-082-3/+5
|
* Merge branch 'minad.github.com/blocking-subrs' into externals/exwmAdrián Medraño Calvo2024-01-081-1/+3
|\
| * Add message-box and message-or-box to exwm-blocking-subrs (fix #874)Daniel Mendler2023-12-291-1/+3
| | | | | | | | | | * exwm.el (exwm-blocking-subrs): Add `message-box' and `message-or-box' to the list of blocking subrs.
* | Merge branch 'minad.github.com/remove-cm' into externals/exwmAdrián Medraño Calvo2024-01-081-50/+0
|\ \
| * | Remove exwm-cmDaniel Mendler2023-12-291-50/+0
| |/ | | | | | | | | | | | | The exwm-cm feature has been obsoleted over five years ago in 7823eb98. Stop distributing it. * exwm-cm.el: Remove file.
* | Merge branch 'Stebalien.github.com/steb/passthrough-input' into externals/exwmAdrián Medraño Calvo2024-01-081-1/+18
|\ \
| * | Passthrough input when explicitly reading events and keysSteven Allen2023-12-291-1/+18
| |/ | | | | | | | | | | | | | | | | | | | | | | | | When any of these functions are called, Emacs expects to receive all input events until they return. Unfortunately, there doesn't appear to be a reliable way to detect that these functions are currently running other than advising them. * exwm-input.el (exwm-input--init): Advise low-level input reading functions to bind 'exwm-input-line-mode-passthrough' to t when called. (exwm-input--exit): Unadvise. (exwm-input--call-with-passthrough): The advice. (exwm-input--passthrough-functions): The functions we now advise.
* | Merge branch 'Stebalien.github.com/steb/fix-subordinate-daemon' into ↵Adrián Medraño Calvo2024-01-081-3/+11
|\ \ | | | | | | | | | | | | | | | | | | externals/exwm * ch11ng.github.com/pull/939: Correctly stop the subordinate Emacs daemon
| * | Correctly stop the subordinate Emacs daemonSteven Allen2023-12-311-3/+11
| |/ | | | | | | | | | | | | | | | | | | | | | | | | This patch starts Emacs as a foreground daemon (so it can accurately be killed) and terminates it by sending a signal (because 'server-force-delete' stops the local server, not the named server). * exwm.el (exwm--server-timeout): The time to politely wait for the subordinate server to exit before killing it. (exwm--server-stop): Send SIGTERM to the subordinate process instead of using 'server-force-delete'. (exwm--server-eval-at): Prevent Emacs from forking so we can manage it as a subprocess.
* / Update copyright year to 2024Adrián Medraño Calvo2024-01-0813-13/+13
|/
* Merge branch 'arnebab.github.com/master' into externals/exwmAdrián Medraño Calvo2023-10-061-2/+20
|\
| * Catch and report all errors raised when invoking command hooksDavid Wilson2023-09-111-2/+20
| | | | | | | | | | | | | | | | * exwm-input.el (exwm-input--fake-last-command): Catch and report all errors raised when invoking `pre-command-hook' and `post-command-hook'. Copyright-paperwork-exempt: yes
* | Bump version to 0.28Adrián Medraño Calvo2023-10-061-1/+1
| |
* | Fix workspace height unsharing workarea valueAdrián Medraño Calvo2023-09-101-16/+18
|/ | | | | | | * exwm-workspace.el (exwm-workspace--update-workareas): Clone the value of the `exwm-geometry' frame parameter before modifying it for calculating workareas. (exwm-workspace--update-workareas): Simplify `pcase' patterns.
* Declare external functionAdrián Medraño Calvo2023-08-182-0/+4
| | | | | * exwm.el: * exwm-randr.el: Declare `x-get-atom-name' function.
* Fix bytecompiler warnings, improve docstringsAdrián Medraño Calvo2023-08-188-99/+198
| | | | | | | | | | | | | | | | * exwm-core.el: * exwm-input.el: * exwm-layout.el: * exwm-manage.el: * exwm-systemtray.el: * exwm-workspace.el: * exwm-xim.el: Improve docstrings. * exwm-xim.el (cl-lib): Require `cl-lib' at runtime for `cl-position'. * exwm-core.el (exwm-debug): Specify custom's group. * exwm-systemtray.el (xcb:systemtray:-ClientMessage): Quote `:initform''s argument.
* Fix layout being refreshed too often on minibuffer setupAdrián Medraño Calvo2023-08-181-2/+2
| | | | | | | | The guard clause was refacored incorrectly, leading to it having no effect on the intended forms. * exwm-layout.el (exwm-layout--on-minibuffer-setup): Guard `exwm-layout--refresh' again.
* Convert `lsh' to `ash'Adrián Medraño Calvo2023-08-181-3/+3
| | | | | | | | The former is deprecated. The behavioural difference between those functions does not impact us here, because the numbers returned by `x-color-values' are natural. * exwm-core.el (exwm--color->pixel): Convert `lsh' to `ash'.
* Update copyright year to 2023Adrián Medraño Calvo2023-08-1813-13/+13
|
* Declare defsubst indentationAdrián Medraño Calvo2023-08-183-2/+8
| | | | | | | * exwm-core.el (exwm--id->buffer, exwm--buffer->id, exwm--terminal-p): * exwm-input.el (exwm-input--unread-event): * exwm-workspace.el (exwm-workspace--position) (exwm-workspace--workspace-p): Declare indentation.
* Merge branch 'jollm.github.com/ignore-struts-top-bottom' into externals/exwmAdrián Medraño Calvo2023-08-184-113/+113
|\
| * Selectively ignore left & right struts in horizontally aligned monitorsAdrián Medraño Calvo2023-08-181-7/+6
| | | | | | | | | | | | * exwm-workspace.el (exwm-workspace--update-workareas): Simplify cross-monitor strut conditionals and apply them to horizontally aligned monitors.
| * Convert `delta' to the size the strut occupies in the workareaAdrián Medraño Calvo2023-08-181-12/+12
| | | | | | | | | | | | * exwm-workspace.el (exwm-workspace--update-workareas): Repurpose `delta' to be the positive size occupied by the strut in the workarea.
| * Convert `exwm-workspace--workareas' to a list of `xcb:RECTANGLE'sAdrián Medraño Calvo2023-08-184-118/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | * exwm-workspace.el (exwm-workspace--set-fullscreen) (exwm-workspace--resize-minibuffer-frame) (exwm-workspace--on-ConfigureNotify): * exwm-floating.el (exwm-floating--set-floating): * exwm-manage.el (exwm-manage--manage-window): * exwm-systemtray.el (exwm-systemtray--refresh) (exwm-systemtray--on-workspace-switch) (exwm-systemtray--refresh-all, exwm-systemtray--init): Adjust to `xcb:RECTANGLE' workarea.
| * More selectively ignore top and bottom strutsFran Ley2023-06-091-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the case of vertical columns of workareas, top and bottom struts should only apply to workareas containing the respective edge of the strut offset. To simplify, imagine three monitors arranged vertically and one workarea per display: +-------+ | 1 | 2000x1000 px +-------+ | 2 | 2000x1000 px +-------+ | 3 | 2000x1000 px +-------+ In sexp form: ((0 0 2000 1000) (0 1000 2000 1000) (0 2000 2000 1000)) where each element represents a workarea as x, y, width, height And example struts of the form (offset-type offset (x-start x-end)) a.) (top 42 (0 2000)) b.) (top 1042 (0 2000)) c.) (top 2042 (0 2000)) d.) (bottom 42 (0 2000)) e.) (bottom 1042 (0 2000)) f.) (bottom 2042 (0 2000)) Workareas adjusted for struts before this change: a.) ((0 42 2000 958) (0 1000 2000 1000) (0 2000 2000 1000)) b.) ((0 1042 2000 -42) (0 1042 2000 958) (0 2000 2000 1000)) c.) ((0 2042 2000 -1042) (0 2042 2000 -42) (0 2042 2000 958)) d.) ((0 0 2000 1000) (0 1000 2000 1000) (0 2000 2000 902)) e.) ((0 0 2000 1000) (0 1000 2000 902) (0 2000 2000 -98)) f.) ((0 0 2000 902) (0 1000 2000 -98) (0 2000 2000 -1098)) Note that a. and d. are sensible, while b., c., e., and f. are quite user unfriendly. After this change, the same adjusted workareas are: a.) no change b.) ((0 0 2000 1000) (0 1042 2000 958) (0 2000 2000 1000)) c.) ((0 0 2000 1000) (0 1000 2000 1000) (0 2042 2000 958)) d.) no change e.) ((0 0 2000 1000) (0 1000 2000 902) (0 2000 2000 1000)) f.) ((0 0 2000 902) (0 1000 2000 1000) (0 2000 2000 1000)) The intent is to allow dock type windows such as typical status bars to occupy space in a workarea on any of a set of vertically arranged displays without occluding the other workareas due to the limitations of the X spec regarding strut offsets. Note that this behaviour conflicts with EWMH 1.3: > Struts MUST be specified in root window coordinates, that is, they are *not* relative to the edges of any view port or Xinerama monitor. but is accepted by multiple WMs. See: - https://blog.martin-graesslin.com/blog/2016/08/panels-on-shared-screen-edges/ - https://mail.gnome.org/archives/wm-spec-list/2009-November/msg00005.html - https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/22 * exwm-workspace.el (exwm-workspace--update-workareas): Assume vertical struts apply from the monitor boundary when they cross them. Copyright-paperwork-exempt: yes
* | Merge branch 'nbarrientos.github.com/ib_exwm_conn_nil' into externals/exwmAdrián Medraño Calvo2023-06-147-69/+83
|\ \