emacs-exwm / exwm Goto Github PK
View Code? Open in Web Editor NEWEmacs X Window Manager
Home Page: https://elpa.gnu.org/packages/exwm.html
License: GNU General Public License v3.0
Emacs X Window Manager
Home Page: https://elpa.gnu.org/packages/exwm.html
License: GNU General Public License v3.0
The title pretty much explains it all, I don't want to use polybar or what have you, so I wanted to make the mode-line display some more info. That led me to enabling display-time, which only applies to the currently focused monitor. Config below:
(defun exwm-config ()
"Default momomacs configuration of EXWM."
;; Set the initial workspace number.
(unless (get 'exwm-workspace-number 'saved-value)
(setq exwm-workspace-number 10))
;; 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-&] . momo/run-application)
;; '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]))))
;; Nice stuff
(setq display-time-default-load-average nil)
(display-time)
(setq exwm-workspace-warp-cursor t)
(setq mouse-autoselect-window t
focus-follows-mouse t)
;; Enable EXWM
(exwm-enable))
(exwm-config)
;; No need to set window config, done in momo.el
(require 'exwm-randr)
(add-hook 'exwm-randr-screen-change-hook
(lambda ()
(start-process-shell-command
"xrandr" nil "xrandr --output HDMI-A-4 --set TearFree on --left-of DisplayPort-2 --set TearFree on --auto")))
(exwm-randr-enable)
;; Advise packages that use posframe for a multi-head setup
(defun get-focused-monitor-geometry ()
"Get the geometry of the monitor displaying the selected frame in EXWM."
(let* ((monitor-attrs (frame-monitor-attributes))
(workarea (assoc 'workarea monitor-attrs))
(geometry (cdr workarea)))
(list (nth 0 geometry) ; X
(nth 1 geometry) ; Y
(nth 2 geometry) ; Width
(nth 3 geometry) ; Height
)))
(defun advise-corfu-make-frame-with-monitor-awareness (orig-fun frame x y width height buffer)
"Advise `corfu--make-frame` to be monitor-aware, adjusting X and Y according to the focused monitor."
;; Get the geometry of the currently focused monitor
(let* ((monitor-geometry (get-focused-monitor-geometry))
(monitor-x (nth 0 monitor-geometry))
(monitor-y (nth 1 monitor-geometry))
;; You may want to adjust the logic below if you have specific preferences
;; on where on the monitor the posframe should appear.
;; Currently, it places the posframe at its intended X and Y, but ensures
;; it's within the bounds of the focused monitor.
(new-x (+ monitor-x x))
(new-y (+ monitor-y y)))
;; Call the original function with potentially adjusted coordinates
(funcall orig-fun frame new-x new-y width height buffer)))
(advice-add 'corfu--make-frame :around #'advise-corfu-make-frame-with-monitor-awareness)
(defun advise-vertico-posframe-show-with-monitor-awareness (orig-fun buffer window-point &rest args)
"Advise `vertico-posframe--show` to position the posframe according to the focused monitor."
;; Extract the focused monitor's geometry
(let* ((monitor-geometry (get-focused-monitor-geometry))
(monitor-x (nth 0 monitor-geometry))
(monitor-y (nth 1 monitor-geometry)))
;; Override poshandler buffer-local variable to use monitor-aware positioning
(let ((vertico-posframe-poshandler
(lambda (info)
(let* ((parent-frame-width (plist-get info :parent-frame-width))
(parent-frame-height (plist-get info :parent-frame-height))
(posframe-width (plist-get info :posframe-width))
(posframe-height (plist-get info :posframe-height))
;; Calculate center position on the focused monitor
(x (+ monitor-x (/ (- parent-frame-width posframe-width) 2)))
(y (+ monitor-y (/ (- parent-frame-height posframe-height) 2))))
(cons x y)))))
;; Call the original function with potentially adjusted poshandler
(apply orig-fun buffer window-point args))))
(advice-add 'vertico-posframe--show :around #'advise-vertico-posframe-show-with-monitor-awareness)
There was a bug in the old repo about extending EXWM to support pgtk build. ch11ng/exwm#860. Does the plan still exist now? Personally I found the pgtk branch snappier, also it's the only one that --with-xwidget
works currently (which is the reason why I'm using that branch).
From the discussion in the old bug looks like no technical limitation preventing EXWM to work with pgtk, so I'm looking forward to see it works on pgtk. Thanks.
The issue I have currently is that when running my interactive function to split a window and then switch to the other window it seems to flip the buffers and keep the focus on the original X window.
The function doesn't do anything crazy, its just does what I would normally do with 2 keybindings but in one. The funny thing is if I run these two commands using M-x split-window-* RET
and M-x other-window RET
it works how you would expect it.
Also other function such as 'find-file-other-window' work fine when focused on an X Application.
(defun split-window-right-and-focus ()
(interactive)
(split-window-right)
(other-window 1))
I've used other split window function in place but all seem to have the same issue.
(F) = user focus
+-------------------+ +-------------------+
| | | | |
| (F) | | | (F) |
| x window | --> Split-window-right-and-focus --> | buffer | x window |
| | | | |
| | | | |
+-------------------+ +-------------------+
Understandably you cant have two windows of the same X application but the movement of the window should be the same as any other buffer?
Currently I've fixed this 'issue' my amending the function to check the major mode an act accordingly. Annoyingly I have to now switch to the other window myself, oh the horror!.
(defun split-window-right-and-focus ()
(interactive)
(if (string-equal major-mode "exwm-mode")
(split-window-right)
(split-window-right)
(other-window 1)))
Hi. I am using exwm from melpa unstable, and the latest Libreoffice version in Debian Sid.
Since a couple months ago, opening documents in Libreoffice's Writer ends up blocking the keyboard in EXWM, sometimes to the point only the mouse works on any Emacs window. In those situations, exiting LO and clicking a couple of times in different emacs windows seems to restore reception of keyboard events, but a couple of times it was actually impossible. Other times the keyboard is not stolen everywhere, but only in the Writer's window, where trying any key gives rise to an error saying that the buffer is read-only, as if keystrokes were not being relayed to the X app.
Usually, the quickest way of triggering the problem is launching LibreOffice's Writer and pressing C-o to open a document: the non-writeable error is thrown and the keyboard stops working. Other times that works, but moving around a document, switching windows in Emacs and possibly opening other dialogs in LO eventually leads to the same problems.
As mentioned, this started happening a couple of months ago, after a long time of using LO in EXWM without any issue and no significant changes to my emacs config that I can remember. It's a bit complicated to remove that config of the equation, but I'll eventually get there. In the meantime, I thought I'd ask here in case anyone else has noticed similar problems.
Thanks!
I can't figure out what's wrong with exwm-xim
: after enabling it doesn't work at all in qt apps, and causes random freezes on key press in GTK apps, I tried to collect a trace after pressing a key:
9210 70% - xcb:-connection-filter
9208 70% - xcb:-process-events
9208 70% - apply
9205 70% - #<compiled -0x5404a03a9d5b3a3>
9151 69% - exwm-xim--on-ClientMessage
6421 49% - exwm-xim--on-request
6036 46% - exwm-xim--handle-forward-event-request
4774 36% - exwm-xim--make-request
2298 17% - exwm--intern-atom
1727 13% - xcb:-+reply
1727 13% - apply
1711 13% - #<compiled 0x19a7cc8d7ca81a95>
513 3% - xcb:-process-events
511 3% - apply
495 3% - #<compiled -0x5404a03a9d5b3a3>
348 2% + exwm--on-PropertyNotify
45 0% + slot-value
21 0% + eieio-oset
18 0% + #<compiled 0x1bfc343501b5b7d7>
1 0% + exwm-input--on-KeyPress
219 1% + accept-process-output
214 1% + xcb:flush
202 1% + xcb:unmarshal
68 0% + slot-value
56 0% + make-instance
47 0% + run-with-timer
43 0% + eieio-oref
34 0% + #<compiled 0x1bfc343501746c97>
9 0% + eieio-oset
5 0% + #<compiled 0x1e1cf2ecdf0e9d2>
469 3% + xcb:-+request-unchecked
88 0% + make-instance
7 0% + slot-value
1136 8% + xcb:-+request
881 6% + xcb:marshal
443 3% + make-instance
527 4% + xcb:unmarshal
216 1% + xcb:keysyms:keycode->keysym
211 1% + make-instance
145 1% + xcb:flush
108 0% + slot-value
14 0% + eieio-oset
7 0% + xcb:keysyms:keysym->event
285 2% + xcb:unmarshal
64 0% + make-instance
1305 9% + xcb:-+reply
721 5% + xcb:unmarshal
391 2% + xcb:-+request-unchecked
203 1% + make-instance
87 0% + slot-value
21 0% + slot-value
11 0% + eieio-oset
8 0% + exwm--on-PropertyNotify
3 0% + exwm-input--on-ButtonPress
1 0% + exwm-randr--on-ConfigureNotify
1 0% exwm--on-ClientMessage
2 0% + eieio-oset
So emacs freezes for several seconds after any key pressed, though the right character is printed in the end.
As for qt apps - input method just doesn't affect them.
Where should I look for the root cause?
I've configured EXWM to set the default directory of an X window to the processes default directory and I'm wondering if others would find this behavior useful/desirable. Specifically:
(add-hook 'exwm-manage-finish (lambda ()
(when-let* ((id (exwm--buffer->id (current-buffer)))
(response (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:ewmh:get-_NET_WM_PID :window id)))
(pid (slot-value response 'value))
(cwd (file-chase-links (format "/proc/%d/cwd" pid) 1)))
(setq default-directory (if (file-accessible-directory-p cwd)
(file-name-as-directory cwd)
user-home-directory)))))
Of course, this won't keep the default-directory
in-sync with the X window, but that usually only matters for shells. I have another script to update the default directory as it changes (and intend to add this to either the wiki or some form of contrib directory).
(defun exwm-set-window-directory (wid dd)
(when-let ((buf (exwm--id->buffer wid)))
(with-current-buffer buf (setq default-directory dd))))
Zsh:
if [[ -n "$INSIDE_EMACS" ]] && [[ -n "$EXWM" ]] && [[ -n "$WINDOWID" ]]; then
__exwm_chpwd() {
# Only apply directory changes in the root shell.
[[ "$ZSH_SUBSHELL" -eq 0 ]] || return
# Emacsclient sets the 'default-directory' to the caller's CWD, so
# this always works and saves us from having to pass it in (and escape
# it).
emacsclient -e "(exwm-set-window-directory $WINDOWID default-directory)" \
> /dev/null
}
__exwm_chpwd
chpwd_functions+=(__exwm_chpwd)
fi
(where $WINDOWID
is set by my terminal and I set $EXWM
myself).
It happens to me once in a while that EXWM starts to fail to properly show floating windows (e.g. file save dialog). These then appear as black boxes (in the size of the dialog that's supposed to be there).
There is no way to interact with these dialogs (so I can also not make them tiling again), but I can kill the buffer, which makes them disappear (and also unfreeze the associated X application).
Unfortunately, once this happens the first time, emacs is "locked" in a state, in which this always happens to floating windows, so I need to restart Emacs to fix it.
Can I provide any debug information to pinpoint the issue?
I'm running the latest version of Emacs and EXWM on Arch Linux. I've tried two methods of adding hooks inside of a use-package
form. The first is as follows:
(require 'exwm-floating)
(require 'exwm-manage)
(require 'exwm-randr)
(add-hook 'exwm-floating-setup-hook
'exwm-layout-hide-mode-line)
(add-hook 'exwm-manage-finish-hook
'exwm-configure-window)
(add-hook 'exwm-update-class-hook
#'(lambda ()
(exwm-workspace-rename-buffer exwm-class-name)))
(add-hook 'exwm-update-title-hook
#'(lambda ()
(exwm-workspace-rename-buffer exwm-title)))
This works as expected, but if I try to use use-package
's :hook
or :requires
optionals then EXWM fails to load:
:requires
(exwm-floating exwm-manage exwm-randr)
:hook
(exwm-floating-setup . exwm-layout-hide-mode-line)
(exwm-manage-finish . exwm.configure-window)
(exwm-update-class . (lambda ()
(exwm-workspace-rename-buffer exwm-class-name)))
(exwm-update-title . (lambda ()
(exwm-workspace-rename-buffer exwm-title)))
Having read the documents on use-package
, I expected the aforementioned to work. Is this an issue with EXWM or the way that I'm trying to implement the code?
steam webhelper does not run and consequently steam itself
As mentioned in the #20 I am keen to help by adding additional information to the wiki. As summer is coming up i will have some free time to spend contributing. I am however unable to make changes. Is there a mailing list for patches or is there a maintainer list? I have some changes I've done on a working copy of the wiki ready to go. Thanks in advance!
I have a use-case for wanting to ensure that a given window is not in fullscreen mode before running some code on it, and was hoping it would be as easy as getting the X window id and feeding it to exwm-layout-unset-fullscreen before running my code. However, the function exits early in this block of code:
(unless (and (or id (derived-mode-p 'exwm-mode))
(exwm-layout--fullscreen-p))
(cl-return-from exwm-layout-unset-fullscreen))
The second line, as far as I can tell, checks to see that specifically the current window is fullscreen, however this may not be the case when supplying an x-id to the function. Removing the line allows for the functionality I was looking for, however, I'm not sure if it introduces any unintended behaviour, so maybe another solution may be more preferable.
I'm curious about whether the condition in the second line is actually necessary. My assumption would be that running the rest of the code on a window which is not in fullscreen mode would simply have no effect, but I could easily be wrong about that.
there is no way to add s- to the exwm-input-prefix-keys list. also it would be nice to add SPC and f1 to f12 keys to the list.
Hi. I haven't used EXWM for a few months, but when I used it, the biggest issue for me was EXWM windows randomly losing focus. This seemed to be much worse when using evil-mode
with EXWM.
Hi, I am trying to bind f12 to an application in exwm-input-global-keys, the reason I am not just using keymap-set is because I need the key to also work in X windows, keymap-set did not work in X windows, but keys in exwm-input-global-keys still work in X windows.
I have tried [?<f12>] [f12] "f12" [\<f12\>] and none of those work.
Thanks
I'm using arch, and while, exwm works, when exwm-xim is activated, I can't write anything, and windows (chomium browsers mainily) are not focusing when changing workspace.
I tried with emacs 29.2 and 29.3, but it fails in both.
[2024-03-30T14:08:47-0300] [ALPM] upgraded libsysprof-capture (45.2-1 -> 46.0-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded util-linux-libs (2.39.3-2 -> 2.40-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded glib2 (2.78.4-1 -> 2.80.0-2)
[2024-03-30T14:08:47-0300] [ALPM] upgraded adwaita-cursors (45.0-1 -> 46.0-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded harfbuzz (8.3.1-1 -> 8.4.0-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded xz (5.6.1-1 -> 5.6.1-2)
[2024-03-30T14:08:47-0300] [ALPM] upgraded xorgproto (2023.2-1 -> 2024.1-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded libx11 (1.8.7-1 -> 1.8.8-2)
[2024-03-30T14:08:47-0300] [ALPM] upgraded librsvg (2:2.57.3-1 -> 2:2.58.0-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded gtk-update-icon-cache (1:4.12.5-1 -> 1:4.14.1-1)
[2024-03-30T14:08:47-0300] [ALPM] upgraded adwaita-icon-theme (45.0-1 -> 46.0-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded libxkbcommon (1.6.0-1 -> 1.7.0-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded gsettings-desktop-schemas (45.0-1 -> 46.0-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded coreutils (9.4-3 -> 9.5-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded shadow (4.15.0-1 -> 4.15.1-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded util-linux (2.39.3-2 -> 2.40-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded curl (8.6.0-3 -> 8.7.1-3)
[2024-03-30T14:08:48-0300] [ALPM] upgraded at-spi2-core (2.50.2-1 -> 2.52.0-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded libcloudproviders (0.3.5-1 -> 0.3.6-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded glib-networking (1:2.78.1-1 -> 1:2.80.0-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded tracker3 (3.6.0-3 -> 3.7.1-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded libpciaccess (0.18-1 -> 0.18.1-1)
[2024-03-30T14:08:48-0300] [ALPM] upgraded mesa (1:24.0.3-1 -> 1:24.0.3-2)
[2024-03-30T14:08:49-0300] [ALPM] upgraded abseil-cpp (20230802.1-1 -> 20240116.1-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libxkbcommon-x11 (1.6.0-1 -> 1.7.0-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded alacritty (0.13.1-1 -> 0.13.2-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded alsa-card-profiles (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libxmu (1.1.4-1 -> 1.2.0-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded dav1d (1.4.0-1 -> 1.4.1-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libpipewire (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:49-0300] [ALPM] upgraded pipewire (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:49-0300] [ALPM] upgraded pipewire-audio (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libwireplumber (0.4.17-1 -> 0.5.0-2)
[2024-03-30T14:08:49-0300] [ALPM] upgraded wireplumber (0.4.17-1 -> 0.5.0-2)
[2024-03-30T14:08:49-0300] [ALPM] upgraded pipewire-jack (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libopenmpt (0.7.5-1 -> 0.7.6-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded svt-av1 (1.8.0-1 -> 2.0.0-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libdeflate (1.19-1 -> 1.20-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded openexr (3.2.3-1 -> 3.2.4-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libdovi (3.2.0-2 -> 3.3.0-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded ffmpeg (2:6.1.1-6 -> 2:6.1.1-7)
[2024-03-30T14:08:49-0300] [ALPM] upgraded exiv2 (0.28.2-1 -> 0.28.2-2)
[2024-03-30T14:08:49-0300] [ALPM] upgraded libassuan (2.5.6-1 -> 2.5.7-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded tdb (1.4.9-1 -> 1.4.10-1)
[2024-03-30T14:08:49-0300] [ALPM] upgraded baloo-widgets (24.02.0-1 -> 24.02.1-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded qt5-base (5.15.13+kde+r138-1 -> 5.15.13+kde+r142-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded python-trove-classifiers (2024.3.3-1 -> 2024.3.25-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded gstreamer (1.24.0-1 -> 1.24.1-2)
[2024-03-30T14:08:50-0300] [ALPM] upgraded gst-plugins-base-libs (1.24.0-1 -> 1.24.1-2)
[2024-03-30T14:08:50-0300] [ALPM] upgraded gst-plugins-bad-libs (1.24.0-1 -> 1.24.1-2)
[2024-03-30T14:08:50-0300] [ALPM] upgraded gtk4 (1:4.12.5-1 -> 1:4.14.1-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded libadwaita (1:1.4.4-1 -> 1:1.5.0-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded libheif (1.17.6-3 -> 1.17.6-5)
[2024-03-30T14:08:50-0300] [ALPM] upgraded pybind11 (2.11.1-2 -> 2.12.0-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded python-markupsafe (2.1.4-1 -> 2.1.5-1)
[2024-03-30T14:08:50-0300] [ALPM] upgraded usd (23.11-15 -> 24.03-1)
[2024-03-30T14:08:52-0300] [ALPM] upgraded blender (17:4.0.2-21 -> 17:4.1.0-2)
[2024-03-30T14:08:52-0300] [ALPM] upgraded btrfs-progs (6.7.1-1 -> 6.8-1)
[2024-03-30T14:08:52-0300] [ALPM] upgraded cmake (3.28.3-1 -> 3.29.0-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded discord (0.0.46-1 -> 0.0.47-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded docker (1:25.0.4-1 -> 1:26.0.0-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded libkexiv2 (24.02.0-1 -> 24.02.1-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded plasma-activities (6.0.2-3 -> 6.0.3-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded talloc (2.4.1-1 -> 2.4.2-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded tevent (1:0.15.0-1 -> 1:0.16.1-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded ldb (2:2.8.0-1 -> 2:2.9.0-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded libwbclient (4.19.5-1 -> 4.20.0-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded smbclient (4.19.5-1 -> 4.20.0-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded ffmpeg4.4 (4.4.4-4 -> 4.4.4-5)
[2024-03-30T14:08:53-0300] [ALPM] upgraded vlc (3.0.20-7 -> 3.0.20-8)
[2024-03-30T14:08:53-0300] [ALPM] upgraded kio-extras (24.02.0-1 -> 24.02.1-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded dolphin (24.02.0-3 -> 24.02.1-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded ell (0.63-1 -> 0.64-1)
[2024-03-30T14:08:53-0300] [ALPM] upgraded libavif (1.0.4-1 -> 1.0.4-2)
[2024-03-30T14:08:54-0300] [ALPM] upgraded emacs-nativecomp (29.2-1 -> 29.3-1)
[2024-03-30T14:08:54-0300] [ALPM] upgraded eza (0.18.7-1 -> 0.18.9-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded firefox (124.0-1 -> 124.0.1-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded fzf (0.48.0-1 -> 0.48.1-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded git-delta (0.17.0-1 -> 0.17.0-2)
[2024-03-30T14:08:55-0300] [ALPM] upgraded glibmm (2.66.6-1 -> 2.66.7-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded glibmm-2.68 (2.78.1-1 -> 2.80.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded lib32-util-linux (2.39.3-1 -> 2.40-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded lib32-glib2 (2.78.4-1 -> 2.80.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded libgirepository (1.78.1-1 -> 1.80.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded gobject-introspection-runtime (1.78.1-1 -> 1.80.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded graphicsmagick (1.3.42-3 -> 1.3.43-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded gst-plugin-pipewire (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:08:55-0300] [ALPM] upgraded gst-plugins-base (1.24.0-1 -> 1.24.1-2)
[2024-03-30T14:08:55-0300] [ALPM] upgraded gtkmm-4.0 (4.12.0-1 -> 4.14.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded harfbuzz-icu (8.3.1-1 -> 8.4.0-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-foldable1-classes-compat (0.1-67 -> 0.1-69)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-indexed-traversable (0.1.3-59 -> 0.1.3-61)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-unordered-containers (0.2.20-13 -> 0.2.20-14)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-indexed-traversable-instances (0.1.1.2-39 -> 0.1.1.2-40)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-comonad (5.0.8-251 -> 5.0.8-253)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-bifunctors (5.6-67 -> 5.6-69)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-semigroupoids (5.3.7-137 -> 5.3.7-138)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-assoc (1.0.2-256 -> 1.0.2-258)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-these (1.1.1.1-257 -> 1.1.1.1-259)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-semialign (1.2.0.1-155 -> 1.2.0.1-156)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-strict (0.4.0.1-230 -> 0.4.0.1-232)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-witherable (0.4.2-96 -> 0.4.2-97)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-aeson (2.1.2.1-42 -> 2.1.2.1-43)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-attoparsec-aeson (2.1.0.0-26 -> 2.1.0.0-27)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-aeson-pretty (0.8.10-2 -> 0.8.10-3)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-bitvec (1.1.3.0-89 -> 1.1.3.0-90)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-cassava (0.5.3.0-94 -> 0.5.3.0-95)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-pandoc-types (1.23.1-16 -> 1.23.1-17)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-uniplate (1.6.13-218 -> 1.6.13-219)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-vector-algorithms (0.9.0.1-89 -> 0.9.0.1-90)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-mono-traversable (1.0.17.0-1 -> 1.0.17.0-2)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-conduit (1.3.5-46 -> 1.3.5-47)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-conduit-extra (1.3.6-127 -> 1.3.6-128)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-xml-conduit (1.9.1.3-46 -> 1.9.1.3-47)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-citeproc (0.8.1-94 -> 0.8.1-95)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-th-compat (0.1.4-42 -> 0.1.5-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-network-uri (2.6.4.2-29 -> 2.6.4.2-30)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-commonmark-extensions (0.2.3.5-25 -> 0.2.3.5-26)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-commonmark-pandoc (0.2.1.3-71 -> 0.2.1.3-73)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-doctemplates (0.11-66 -> 0.11-67)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-unix-compat (0.7.1-11 -> 0.7.1-12)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-fast-logger (3.1.2-68 -> 3.1.2-69)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-haddock-library (1.11.0-10 -> 1.11.0-12)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-core (2.3.1-40 -> 2.3.1-41)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-marshalling (2.3.0-41 -> 2.3.0-42)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-aeson (2.3.0.1-27 -> 2.3.0.1-28)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-classes (2.3.0-46 -> 2.3.0-47)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-typing (0.1.0-41 -> 0.1.0-42)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-objectorientation (2.3.0-41 -> 2.3.0-42)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-packaging (2.3.1-6 -> 2.3.1-7)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua (2.3.0-44 -> 2.3.0-45)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-list (1.1.1-53 -> 1.1.1-54)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-doclayout (1.1.0-50 -> 1.1.0-51)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-path (1.1.0-45 -> 1.1.0-46)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-system (1.1.0.1-19 -> 1.1.0.1-20)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-text (1.1.0.1-19 -> 1.1.0.1-20)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-version (1.1.0-45 -> 1.1.0-46)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-zip-archive (0.4.3-26 -> 0.4.3.1-1)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-module-zip (1.1.1-12 -> 1.1.1-14)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-hslua-repl (0.1.2-6 -> 0.1.2-7)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-http-types (0.12.3-341 -> 0.12.4-2)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-http-api-data (0.5.1-48 -> 0.5.1-50)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-http-client (0.7.15-16 -> 0.7.15-19)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-http-client-tls (0.3.6.3-50 -> 0.3.6.3-53)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-http2 (4.1.0-13 -> 4.1.0-15)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-ipynb (0.2-134 -> 0.2-135)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-libyaml (0.1.2-343 -> 0.1.2-344)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting-core (0.14-7 -> 0.14-8)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting-format-ansi (0.1-114 -> 0.1-115)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting-format-blaze-html (0.1.1.2-1 -> 0.1.1.2-2)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting-format-context (0.1.0.2-79 -> 0.1.0.2-80)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting-format-latex (0.1-114 -> 0.1-115)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-skylighting (0.14-8 -> 0.14-9)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-texmath (0.12.8.4-9 -> 0.12.8.4-11)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-regex-tdfa (1.3.2.2-39 -> 1.3.2.2-40)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-prettyprinter (1.7.1-160 -> 1.7.1-161)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-toml-parser (1.3.1.3-13 -> 1.3.1.3-14)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-yaml (0.11.11.2-41 -> 0.11.11.2-42)
[2024-03-30T14:08:55-0300] [ALPM] upgraded haskell-typst (0.3.2.1-23 -> 0.3.2.1-24)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-pandoc (3.1.8-10 -> 3.1.8-15)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-pandoc-lua-marshal (0.2.2-58 -> 0.2.3-2)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-pandoc-lua-engine (0.2.1-54 -> 0.2.1.1-4)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-vault (0.3.1.5-180 -> 0.3.1.5-181)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-servant (0.20.1-5 -> 0.20.1-8)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-wai (3.2.4-13 -> 3.2.4-15)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-wai-logger (2.4.0-417 -> 2.4.0-423)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-simple-sendfile (0.2.32-29 -> 0.2.32-30)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-warp (3.3.30-47 -> 3.3.30-50)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-wai-extra (3.1.14-24 -> 3.1.14-30)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-wai-app-static (3.1.9-1 -> 3.1.9-4)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-servant-server (0.20-10 -> 0.20-13)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-wai-cors (0.2.7-349 -> 0.2.7-351)
[2024-03-30T14:08:56-0300] [ALPM] upgraded haskell-pandoc-server (0.1.0.5-12 -> 0.1.0.5-17)
[2024-03-30T14:08:56-0300] [ALPM] upgraded hsa-rocr (6.0.0-3 -> 6.0.2-1)
[2024-03-30T14:08:56-0300] [ALPM] upgraded hslua-cli (1.4.1-42 -> 1.4.1-43)
[2024-03-30T14:08:56-0300] [ALPM] upgraded intel-gmmlib (22.3.17-1 -> 22.3.18-1)
[2024-03-30T14:08:56-0300] [ALPM] upgraded intel-media-driver (24.1.4-1 -> 24.2.0-1)
[2024-03-30T14:08:56-0300] [ALPM] upgraded iwd (2.16-1 -> 2.17-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded jdk-openjdk (21.0.2.u13-3 -> 22.u36-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded lib32-harfbuzz (8.3.1-1 -> 8.4.0-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded lib32-xz (5.6.1-1 -> 5.6.1-2)
[2024-03-30T14:08:59-0300] [ALPM] upgraded lib32-libxkbcommon (1.6.0-1 -> 1.7.0-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded libkdcraw5 (24.02.0-1 -> 24.02.1-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded libkscreen (6.0.2-3 -> 6.0.3-1)
[2024-03-30T14:08:59-0300] [ALPM] upgraded redland (1:1.0.17-8 -> 1:1.0.17-9)
[2024-03-30T14:09:02-0300] [ALPM] upgraded libreoffice-fresh (24.2.1-4 -> 24.2.2-1)
[2024-03-30T14:09:02-0300] [ALPM] upgraded libsynctex (2023.66984-19 -> 2024.0-1)
[2024-03-30T14:09:02-0300] [ALPM] upgraded libva-mesa-driver (1:24.0.3-1 -> 1:24.0.3-2)
[2024-03-30T14:09:02-0300] [ALPM] upgraded libvirt (1:10.1.0-1 -> 1:10.1.0-2)
[2024-03-30T14:09:03-0300] [ALPM] upgraded linux (6.8.1.arch1-1 -> 6.8.2.arch2-1)
[2024-03-30T14:09:03-0300] [ALPM] upgraded mbedtls (3.5.1-1 -> 3.5.2-1)
[2024-03-30T14:09:03-0300] [ALPM] upgraded nilfs-utils (2.2.9-2 -> 2.2.10-1)
[2024-03-30T14:09:03-0300] [ALPM] upgraded nodejs (21.7.0-1 -> 21.7.1-1)
[2024-03-30T14:09:04-0300] [ALPM] upgraded node-gyp (10.0.1-1 -> 10.1.0-1)
[2024-03-30T14:09:05-0300] [ALPM] upgraded vtk (9.3.0-10 -> 9.3.0-11)
[2024-03-30T14:09:05-0300] [ALPM] upgraded opencascade (1:7.7.2-5 -> 1:7.7.2-6)
[2024-03-30T14:09:05-0300] [ALPM] upgraded prrte (3.0.4-3 -> 3.0.5-1)
[2024-03-30T14:09:06-0300] [ALPM] upgraded openmpi (5.0.2-6 -> 5.0.2-7)
[2024-03-30T14:09:06-0300] [ALPM] upgraded pandoc-cli (0.1.1.1-79 -> 0.1.1.1-86)
[2024-03-30T14:09:06-0300] [ALPM] upgraded pipewire-alsa (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:09:06-0300] [ALPM] upgraded pipewire-pulse (1:1.0.4-1 -> 1:1.0.4-3)
[2024-03-30T14:09:06-0300] [ALPM] upgraded python-gobject (3.46.0-1 -> 3.48.1-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded python-nest-asyncio (1.6.0-1 -> 1.6.0-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded python-ipykernel (6.29.3-2 -> 6.29.4-1)
[2024-03-30T14:09:06-0300] [ALPM] upgraded python-pyzstd (0.15.9-2 -> 0.15.10-1)
[2024-03-30T14:09:06-0300] [ALPM] upgraded qemu-common (8.2.2-1 -> 8.2.2-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded qemu-img (8.2.2-1 -> 8.2.2-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded qemu-system-x86-firmware (8.2.2-1 -> 8.2.2-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded qemu-system-x86 (8.2.2-1 -> 8.2.2-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded qemu-base (8.2.2-1 -> 8.2.2-2)
[2024-03-30T14:09:06-0300] [ALPM] upgraded rust (1:1.76.0-2 -> 1:1.77.1-1)
[2024-03-30T14:09:06-0300] [ALPM] upgraded strace (6.7-1 -> 6.8-1)
[2024-03-30T14:09:07-0300] [ALPM] upgraded suitesparse (7.6.1-1 -> 7.7.0-1)
[2024-03-30T14:09:07-0300] [ALPM] upgraded texlive-bin (2023.66984-19 -> 2024.0-1)
[2024-03-30T14:09:07-0300] [ALPM] upgraded texlive-basic (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:08-0300] [ALPM] upgraded texlive-binextra (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:19-0300] [ALPM] upgraded texlive-fontsextra (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:19-0300] [ALPM] upgraded texlive-fontsrecommended (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:19-0300] [ALPM] upgraded texlive-fontutils (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:20-0300] [ALPM] upgraded texlive-latex (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:20-0300] [ALPM] upgraded texlive-plaingeneric (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:20-0300] [ALPM] upgraded texlive-latexrecommended (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:21-0300] [ALPM] upgraded texlive-formatsextra (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:21-0300] [ALPM] upgraded texlive-langenglish (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:21-0300] [ALPM] upgraded texlive-langspanish (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:21-0300] [ALPM] upgraded texlive-pictures (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:22-0300] [ALPM] upgraded texlive-latexextra (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:22-0300] [ALPM] upgraded texlive-luatex (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:22-0300] [ALPM] upgraded texlive-xetex (2023.66594-20 -> 2024.0-3)
[2024-03-30T14:09:22-0300] [ALPM] upgraded vulkan-radeon (1:24.0.3-1 -> 1:24.0.3-2)
[2024-03-30T14:09:22-0300] [ALPM] upgraded waybar (0.10.0-1 -> 0.10.0-3)
[2024-03-30T14:09:22-0300] [ALPM] upgraded wayland-protocols (1.33-1 -> 1.34-1)
[2024-03-30T14:09:25-0300] [ALPM] upgraded wine (9.4-1 -> 9.5-1)
[2024-03-30T14:09:25-0300] [ALPM] upgraded wlroots (0.17.1-1 -> 0.17.2-1)
For example vivaldi throws an error when launching:
Window ’Vivaldi-stable’ appeared!
error in process filter: custom-initialize-reset: Wrong type argument: window-live-p, nil
error in process filter: Wrong type argument: window-live-p, nil
Using emacs -Q and the example config nothing changes (even it throwed a segfault once).
Disabling exwm-xim or changing the env variable XMODIFIERS lets me write, but the focus problem still persist.
(Maybe the focus problem is older and unrelated, I can't remember if that worked before or not)
Hi,
If have next case:
As I saw in code https://github.com/emacs-exwm/exwm/blob/master/exwm-layout.el#L392 there is case which prevent my expected behavior. If I set there covered-buffers
to nil
it is working fine for me.
Is there any case when covered-buffers
are meaningful?
I think I've finally tracked down the source of the (wrong-type-argument window-live-p nil)
error I've been seeing (finally got a backtrace):
Line 512 in 1821027
The cause seems pretty clear: the buffer here may not actually have a current window:
Lines 499 to 512 in 1821027
get-buffer-window
is probably returning nil
.
Hello!
When launching an application that takes a while to start up, it will be placed in the currently selected window when it eventually launches.
Oftentimes, while it's launching I'm working on something else to fill out the time, and when it's done loading it interrupts my work elsewhere which is pretty annoying.
I think a superior solution would be to somehow restrict it to the window I had selected when it was launched. And if that window is gone, it would be great if it could just be placed at the top of the buffer list instead of switching the active window.
Does anyone know whether something like this is already implemented elsewhere? If not, any thoughts on how to implement it?
Thanks!
Hi,
picom allows one to apply a shader to a specific window using a matching pattern, including name, window type, window state, etc. I am having a hard time finding how to match things properly in EXWM and I probably need a lower level understanding of how EXWM works. Maybe you can help me ?
It seems like what appears as a window is made of different layers. First the proper X window, then appearing under it, an emacs frame. It looks like the X window is associated to a buffer of that frame. Now I more or less see how I can manipulate these things in emacs, though I am not sure how I can access them from picom.
How can I match the emacs frame that is behind a window ? How can I match all the X windows without matching the underneath emacs frame ? Is there some attribute that distinguishes them, like _NET_WM_WINDOW_TYPE
, or is one the child of the other, or any other way I could distinguish them ?
For example if I do
picom --backend glx --window-shader-fg-rule invisible.glsl:'_NET_WM_WINDOW_TYPE@:a *= "NORMAL"'
I can match all the X windows and the emacs frames, which seems to boil down to everything apart from polybar in my setting.
Cheers,
Théo
accidently pressing C-z or C-x C-z (bound to suspend-frame) crashes EXWM
solution:
(global-unset-key (kbd "C-z"))
(global-unset-key (kbd "C-x C-z"))
what would be the status for this thread "resolved but still accepts better answers"? probable org-mode...
other-window-prefix
(C-x 4 4
) isn’t programmed to work if the next command spawns a graphical window; this is sensible as most people don’t run EXWM. I was wondering if EXWM could detect when a command run with the other-window-prefix
tries opening a graphical window, and spawns it in the other-window
?
browse-url-firefox
, which comes with Emacs, is one example of a command that always spawns graphical windows but isn’t designed to work with the other-window-prefix
.
Since this took me ages to figure out, I'll document it here for the next person.
(use-package exwm
:init
(setq worklaptop (= 8 (string-to-number (shell-command-to-string "nproc"))))
(require 'exwm-randr)
(exwm-randr-enable)
(if 'worklaptop (progn
(start-process-shell-command "xrandr" nil "xrandr --output DP-1-1 --right-of eDP --output DP-1-2 --right-of DP-1-1")
(start-process-shell-command "xrandr" nil "xrandr --output DP-1-1 --rotate left --output DP-1-2 --rotate right"))
(start-process-shell-command "xrandr" nil "xrandr --output DisplayPort-0 --mode 3840x2160 --left-of eDP"))
(exwm-enable)
:config
(add-to-list 'exwm-input-prefix-keys ?\M- )
:custom
(exwm-workspace-number 3)
(exwm-randr-workspace-monitor-plist (if 'worklaptop '(0 "eDP" 1 "DP-1-1" 2 "DP-1-2") '(0 "DisplayPort-0")))
:hook
(exwm-update-class . (lambda () (exwm-workspace-rename-buffer exwm-class-name))))
First set a variable to a boolean that detects some unique difference in your work setup.
(shell-command-to-string "<command>")
will help.
Think hostname, distro, number of cores or sth.
Then, branch accordingly for both the :init
xrandr call and the :custom
workspace-monitor-plist setting
@Stebalien How do you feel about tagging a new release of Xelb and EXWM soon? I've switched from Emacs 29 to 30 about a week ago, and overall EXWM feels quite stable to me on both Emacs versions in its current state. After a release we could focus on larger restructurings, e.g., related to tab-bar or keymap handling.
Hello. In the past few days, I have noticed EXWM has started crashing for me. I believe it might be caused by some recent change in Emacs 30. How do I diagnose and debug a crashing EXWM session?
When switching to another window (usually on a different workspace) with an emacs (not EXWM/X) buffer, it happens (50% of cases) that the 'focus' remains on the last window.
This is visible from the cursor color in switched-to window-buffer (a transparent box
)
rather than the full-color active-cursor cursor
More importantly, when in this inactive state, it happens that typing on the keyboard, leads to input-actions on the previous buffer/window (no matter whether it is an EXWM/X buffer or an emacs buffer)! In consequence, the active workspace automatically "switches back" showing the previously active window/workspace/buffer.
Any ideas on how to debug this?
PS 1: For a long time, I suspected that this is the same error as described in #759, but it must be different, since it also happens when switching between emacs-buffers (although less often)
PS 2: Following old #942 I am opening this in this new repo. A big thank you to the maintainer(s) for moving this project forward!
Right now, it's possible to instruct EXWM to intercept specific keys and key-combo prefixes via exwm-input-prefix-keys
. However, there's no way to instruct EXWM to intercept all key combos including a specific modifier (e.g., super). This could be useful as most applications avoid binding super, leaving it for the window manager (in this case, EXWM).
I'm having a lot of difficulty getting persp-mode working together with EXWM. For some reason, if I switch to a Persp containing Discord, Discord does not gain focus unless I was previously in a persp containing an EXWM buffer. Firefox seems to behave though.
When opening large PDFs and images, switch to and back from the image-containing workspace is horribly slow (every keystroke takes seconds, including opening of which-key
). This seems to be cause by the image being visible as everything runs smooth, when the image/PDF is invisible. Furthermore, the slowdown seems to be proportional to the file size.
htop
shows 100% CPU usage by emacs, which seems to be attributable to a high number of redisplay_internal
calls. Can I somehow find out what exactly triggers the excessive number of redisplay calls?
The slow-down also leads to thes warning: ⛔ Warning (emacs): [XELB] Retrieve reply timeout
, which is why I suspect it has to do with EXWM itself?
I profiled while switching back and forth between workspaces (one of them containing a large image or PDF)
CPU
45439 59% - redisplay_internal (C function)
45287 59% + page-break-lines--update-display-tables
140 0% + eval
6 0% + exwm-layout--refresh
2 0% + window--adjust-process-windows
2 0% + mode-line-default-help-echo
1 0% + redisplay--pre-redisplay-functions
17868 23% - command-execute
17868 23% - funcall-interactively
17779 23% - #<lambda 0x10a2e7b5>
17779 23% - exwm-workspace-switch
17779 23% - apply
17779 23% + ad-Advice-exwm-workspace-switch
86 0% + #<lambda 0x10a2e7b6>
1 0% + profiler-start
1 0% + file-notify-handle-event
Notably: page-break-lines-mode is inactive in the image/PDF. I suspect it gets called in a non-PDF buffer
Mem:
419,499,943 92% - timer-event-handler
419,323,335 92% - apply
310,811,551 68% + which-key--update
102,210,631 22% + savehist-autosave
5,063,016 1% + auto-revert-buffers
633,480 0% posframe-hidehandler-daemon-function
136,722 0% + save-some-buffers
135,168 0% + #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_9>
130,280 0% + exwm-input--update-focus-commit
84,343 0% + fancy-battery-update
19,008 0% exwm-layout--on-echo-area-change
17,650 0% + gac--after-save
9,517 0% + display-time-event-handler
1,433 0% + org-clock-update-mode-line
1,056 0% + show-paren-function
147,840 0% + timer-activate-when-idle
18,352 0% + timer-activate
7,744 0% timer-inc-time
22,605,746 5% + redisplay_internal (C function)
8,561,381 1% + command-execute
694,114 0% + xcb:-connection-filter
36,944 0% exwm-layout--on-echo-area-change
30,610 0% + ...
Any support would be highly appreciated (this is bugging me for years really).
If this is likely not to be EXWM-related, I'll move on to spacemacs support.
EXWM currently supports "workspaces" by creating a new frame per workspace. Additionally, multiple monitors can be supported by assigning workspaces to monitors.
Unfortunately:
So, my proposal is to:
tab-bar-select-tab
, but I'm hoping that the window-configuration-change-hook
is enough.The tricky parts will be:
exwm-workspace-next
and friends, but we likely won't be able to replicate all features.The upsides are:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.