paperwm / PaperWM

Tiled scrollable window management for Gnome Shell
GNU General Public License v3.0
2.95k stars 125 forks source link

Disable tiling on specific Workspace #921

Open oisanjaya opened 1 month ago

oisanjaya commented 1 month ago

While i like paperWM very much, but not all my workflow can be done in tiling window manner. Specifically when i use Lazarus IDE which i need many floating windows.

I propose adding option to disable tiling on specific Workspace. So that windows inside said Workspace keep default floating states.

Lythenas commented 1 month ago

I think this could be worth adding in some form and I believe it should be possible. Although there are probably a bunch of edge cases that need to be considered (moving windows between workspaces etc.).

As a workaround it should be possible to configure Winprops for the windows of Lazarus IDE and send them to the scratch layer. Although that would make them visible on all workspaces. So it is not ideal.

oisanjaya commented 1 month ago

I never done GNOME extensions before, but i try to hack into tiling.js:insertWindow() by simply returns if said window/space belongs to certain workspace by comparing space.index to arbitrary number i chose. It worked but i see problem that now no window shown in overview mode. Of course maybe because I'm very unfamiliar with this function. Also I'm not sure what side effect else maybe caused by this mishandling.

@Lythenas moving Lazarus IDE into scratch layer does not ideal, because Lazarus is an MDI which creates many child window. If I have to use scratch layer, then I would move so many window into scratch layer and disrupts purpose of scratch layer which is containing few temporary window that can be quickly access from any workspace

Lythenas commented 1 month ago

I think insertWindow is probably a good starting point. This part may be relevant: https://github.com/paperwm/PaperWM/blob/release/tiling.js#L4060-L4069 there are already some types of windows that we don't want to tile.