Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corfu, posframe, and child frames #64

Open
Stebalien opened this issue Jun 23, 2024 · 1 comment
Open

Corfu, posframe, and child frames #64

Stebalien opened this issue Jun 23, 2024 · 1 comment

Comments

@Stebalien
Copy link
Contributor

Stebalien commented Jun 23, 2024

By redirecting frame focus to the the workspace frame, corfu, posframe, etc. prevent EXWM from deleting it. (edit: fixed in #74) From what I can tell, this wouldn't usually be an issue if, e.g., corfu frame declared the workspace to be its parent frame, but it explicitly removes that relationship as it would cause the corfu frame to be displayed below other X windows.

This was partially solved in #74, but the real solution is to make parent-frame work correctly (which would remove the need for a bunch of hacks in corfu and friends). Options include:

  1. Having exwm manually re-parent child frames to the root window.
  2. Parenting tiled windows to the emacs workspace instead of exwm--root. I believe this should put child frames and other non-floating X windows on the same "plane", allowing child frames to "overlay" other X windows.

We may also want to be more forceful when deleting EXWM frames. From what I can tell, the only way to really force-delete a frame is to call (delete-frame frame 'noelisp) (which also, unfortunately, prevents/defers? the hooks from running).

Probably causing ch11ng/exwm#888 and other issues.

Stebalien added a commit that referenced this issue Aug 17, 2024
Othewise, we won't be able to delete the frame (frames with surrogate
minibuffers cannot be deleted).

* exwm-workspace.el
(exwm-workspace-delete): Transfer surrogate minibuffers to the next
workspace before attempting to delete a workspace (part of #64).
(exwm-workspace--prompt-delete): Use `exwm-workspace-delete' instead of
directly calling `delete-frame'.
Stebalien added a commit that referenced this issue Aug 18, 2024
Othewise, we won't be able to delete the frame (frames with surrogate
minibuffers cannot be deleted).

* exwm-workspace.el
(exwm-workspace-delete): Transfer surrogate minibuffers to the next
workspace before attempting to delete a workspace (part of #64).
(exwm-workspace--prompt-delete): Use `exwm-workspace-delete' instead of
directly calling `delete-frame'.
@Stebalien Stebalien changed the title Corfu, posframe, etc prevent workspace deletion Corfu, posframe, and child frames Aug 18, 2024
@Stebalien
Copy link
Contributor Author

The inability to delete workspaces after using corfu was fixed in #74. However, users still need to remove the parent-frame attribute and that really shouldn't be necessary (it causes all sorts of placement issues).

IMO, we should punt the full fix till after #8. Once we've fixed that, we'll have a single frame per monitor. As it stands, if we parent X windows on the workspace frame we'd need to re-parent whenever moving windows between workspaces (doable, just a bit annoying).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant