ch11ng / exwm

Emacs X Window Manager
2.85k stars 134 forks source link

Same X-window buffer on different workspaces? #295

Closed gnosticscrounger closed 6 years ago

gnosticscrounger commented 7 years ago

Is it possible to have the same X-window buffer on multiple workspaces at the same time? An analogy would be like what you can do with Awesome or DWM due to their use of tags as opposed to workspaces.

To illustrate a use case for this:

Imagine if you wanted to have the same browser window available on different window configurations depending on the workspace.

ch11ng commented 7 years ago

Do they have to display the X window simultaneously? If not switching on exwm-layout-show-all-buffers and exwm-workspace-show-all-buffers should work.

gnosticscrounger commented 7 years ago

The problem with that when I switch to a X window on one workspace, it removes it's position in the layout in the other. I would even be happy with a way for it to automatically move back to it's designated place upon switching back to the orignal workspace.

This probably sounds doable through elisp but I'm actually fairly new to elisp and even emacs in general so a few tips would be appreciated.

ch11ng commented 7 years ago

Currently in EXWM an X window is physically bound to a workspace. I think what you proposed is only possible if this is decoupled.

ch11ng commented 6 years ago

It's now possible to display a floating X window on all workspaces by setting _NET_WM_DESKTOP to 0xffffffff. This is a standard property.

ch11ng commented 6 years ago

As I mentioned, this can be achieved by setting _NET_WM_DESKTOP to 0xffffffff. So I'm closing it now.

vonHabsi commented 5 years ago

Can you give some example code on how it should be done? I am trying it help from reddit but it depends on external command. What I'd like to know is how to obtain the window id with exwm variables or code directly.

ch11ng commented 5 years ago

The value is usually set by the application itself or some third party program, so it's fine to do it with an external command and EXWM will honor it. If you really want a pure Elisp method then you could try with XELB (search xcb:ewmh:set-_NET_WM_DESKTOP in the source of EXWM and you'll find it).