about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2024-02-05 subtree-staging Simplify and improve focus handling (#10)Steven Allen1-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`.
2024-02-04 Ensure that default-directory is a directory name in EXWM buffers.Daniel Mendler1-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'.
2024-02-04 Set the EXWM buffer's default directory to match the process's CWD (#14)Steven Allen1-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).
2024-02-04 Remove redundant with-current-buffer in manage-window (#13)Steven Allen1-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.
2024-01-24 Use '=' instead of 'eq' to compare numbers.Steven Allen2-2/+3
* exwm.el (exwm--update-desktop): * exwm-layout.el (exwm-layout--hide): Use `=` instead of `eq` for numeric comparison.
2024-01-24 Use color-values instead of x-color-valuesSteven Allen1-1/+1
* exwm-core.el (exwm--color->pixel): Use `color-values` (introduced in Emacs 21) instead of `x-color-values` (deprecated in Emacs 30).
2024-01-15 Move xsettings classes to xelbDaniel Mendler1-67/+2
2024-01-14 ; README: Refer to the user guide for installation instructionsDaniel Mendler1-4/+1
2024-01-14 New customization group exwm-xsettingsDaniel Mendler1-5/+6
* exwm-xsettings.el (exwm-xsettings): New customization group.
2024-01-14 New customization group exwm-debugDaniel Mendler1-1/+4
The group was already used, but the docstring was missing. * exwm-core.el (exwm-debug): New customization group.
2024-01-13 ; README: Fix feature list formattingDaniel Mendler1-0/+2
2024-01-13 ; Commentary: Update list of featuresDaniel Mendler2-8/+12
2024-01-13 Implement the XSETTINGS protocolSteven Allen1-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)
2024-01-13 Drop :version keywords from defgroupDaniel Mendler8-8/+0
These may refer to an Emacs version and may have been added by mistake.
2024-01-13 Depend on Emacs 27.1Daniel Mendler2-15/+5
Emacs 27.1 is widely available on all major Linux distributions, including the ones with long time support.
2024-01-12 ; Add LICENSE to .elpaignoreDaniel Mendler1-0/+1
2024-01-12 Add new maintainers: Steven Allen (@stebalien) and Daniel Mendler (@minad)Daniel Mendler1-1/+1
2024-01-12 ; Update repository URLsDaniel Mendler2-7/+7
2024-01-12 Remove obsolete functions and variablesDaniel Mendler2-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.
2024-01-12 exwm-blocking-subrs: x-* functions may be missing on some Emacs buildsDaniel Mendler1-2/+3
Avoid compiler warnings. Follow-up of https://github.com/ch11ng/exwm/pull/937.
2024-01-12 ; First line of docstring should be a full sentenceDaniel Mendler3-8/+7
2024-01-12 ; Use two spaces after sentenceDaniel Mendler2-2/+2
I follow this convention in Elisp files only.
2024-01-12 ; exwm-background: Wrap docstrings to avoid compiler warningsDaniel Mendler1-4/+4
2024-01-12 ; README and commentary: Mention background and xim featuresDaniel Mendler2-0/+3
2024-01-08 ; Shorten docstringsAdrián Medraño Calvo2-3/+5
2024-01-08 Merge branch 'minad.github.com/blocking-subrs' into externals/exwmAdrián Medraño Calvo1-1/+3
2024-01-08 Merge branch 'minad.github.com/remove-cm' into externals/exwmAdrián Medraño Calvo1-50/+0
2024-01-08 Merge branch 'Stebalien.github.com/steb/passthrough-input' into externals/exwmAdrián Medraño Calvo1-1/+18
2024-01-08 Merge branch 'Stebalien.github.com/steb/fix-subordinate-daemon' into ↵Adrián Medraño Calvo1-3/+11
externals/exwm * ch11ng.github.com/pull/939: Correctly stop the subordinate Emacs daemon
2024-01-08 Update copyright year to 2024Adrián Medraño Calvo13-13/+13
2023-12-31 Correctly stop the subordinate Emacs daemonSteven Allen1-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.
2023-12-29 Passthrough input when explicitly reading events and keysSteven Allen1-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.
2023-12-29 Add message-box and message-or-box to exwm-blocking-subrs (fix #874)Daniel Mendler1-1/+3
* exwm.el (exwm-blocking-subrs): Add `message-box' and `message-or-box' to the list of blocking subrs.
2023-12-29 Remove exwm-cmDaniel Mendler1-50/+0
The exwm-cm feature has been obsoleted over five years ago in 7823eb98. Stop distributing it. * exwm-cm.el: Remove file.
2023-10-06 Merge branch 'arnebab.github.com/master' into externals/exwmAdrián Medraño Calvo1-2/+20
2023-10-06 Bump version to 0.28Adrián Medraño Calvo1-1/+1
2023-09-11 Catch and report all errors raised when invoking command hooksDavid Wilson1-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
2023-09-10 Fix workspace height unsharing workarea valueAdrián Medraño Calvo1-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.
2023-08-18 Declare external functionAdrián Medraño Calvo2-0/+4
* exwm.el: * exwm-randr.el: Declare `x-get-atom-name' function.
2023-08-18 Fix bytecompiler warnings, improve docstringsAdrián Medraño Calvo8-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.
2023-08-18 Fix layout being refreshed too often on minibuffer setupAdrián Medraño Calvo1-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.
2023-08-18 Convert `lsh' to `ash'Adrián Medraño Calvo1-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'.
2023-08-18 Update copyright year to 2023Adrián Medraño Calvo13-13/+13
2023-08-18 Declare defsubst indentationAdrián Medraño Calvo3-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.
2023-08-18 Merge branch 'jollm.github.com/ignore-struts-top-bottom' into externals/exwmAdrián Medraño Calvo4-113/+113
2023-08-18 Selectively ignore left & right struts in horizontally aligned monitorsAdrián Medraño Calvo1-7/+6
* exwm-workspace.el (exwm-workspace--update-workareas): Simplify cross-monitor strut conditionals and apply them to horizontally aligned monitors.
2023-08-18 Convert `delta' to the size the strut occupies in the workareaAdrián Medraño Calvo1-12/+12
* exwm-workspace.el (exwm-workspace--update-workareas): Repurpose `delta' to be the positive size occupied by the strut in the workarea.
2023-08-18 Convert `exwm-workspace--workareas' to a list of `xcb:RECTANGLE'sAdrián Medraño Calvo4-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.
2023-06-14 Merge branch 'nbarrientos.github.com/ib_exwm_conn_nil' into externals/exwmAdrián Medraño Calvo7-69/+83
2023-06-09 More selectively ignore top and bottom strutsFran Ley1-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