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

Tiling and the Keyboard-Centric Workflow #313

Closed
NoraCodes opened this issue Aug 8, 2018 · 4 comments
Closed

Tiling and the Keyboard-Centric Workflow #313

NoraCodes opened this issue Aug 8, 2018 · 4 comments

Comments

@NoraCodes
Copy link

NoraCodes commented Aug 8, 2018

I'm a Linux "power user", in that I have effectively built my own desktop environment, which I'm currently using. It's very idiosyncratic and, in that sense, kind of silly, and Elementary is a project I very much want to support which looks like it would solve most of my problems.
The one piece which seems to be something of a non-goal is supporting a keyboard-centric tiling workflow. For reference, I currently use i3wm and derive great benefits from the tiling aspect, if not from much else.
My question is, how possible is it to configure tiling behavior to react to keyboard shortcuts in Gala? I suspect the answer is "not very", due to not finding any documentation on the subject, which leads me to my second question: could such functionality either be added to Gala or provided by an outside program, not replacing Gala with a tiling WM but rather just telling Gala to automatically use all available screen space in a sensible way, controlled primarily with keyboard shortcuts?

I envision these features as being part of a togglable "tiling mode" which would be off by default but could be turned on, as well as potentially being able to have tiled and floating windows co-exist (i3 does this, as to most existing tiling window managers).

The features I'm thinking of specifically are:

  1. When a new window opens, filling the entire screen
    whole screen
  2. When one window is open and another opens, splitting the screen to show both, either horizontally or vertically.
    side by side
  3. When split thus, dragging one window to resize it (or resizing by keyboard shortcuts) and having the other window automatically fill the available space; e.g., the below being done with a single click-and-drag from the above
    one click resize
  4. Perhaps having this work for more complex geometries?
    more complex splitting
  5. Easy "opt-out" or "opt-in" for tiling with 1 or 2 keystrokes. For instance, my configuration of i3 lets me press Super+Space to "pop" a tiled window out to float. For a user who had configured tiling to be off for most windows (presumably the default configuration), this shortcut could "pop in" a window to be tiled.

I absolutely understand if this isn't something the Gala project wants to support, but if that's the case, I'd really appreciate some guidance on how I could implement an extension to support this, if at all possible. Tiling really speeds up my work and is my last barrier to using ElementaryOS full time.

To be clear, this isn't me asking Gala to turn into i3 in terms of UX or configuration; I just want to figure out if I can make it so I can get a "tall left terminal and two vertically stacked terminals on the right" by hitting Meta+Enter; Meta+Enter; Meta+Shift+V; Meta+Enter, or something like it, rather than opening three terminals and arranging them by hand.

@NoraCodes NoraCodes changed the title Tiling, Workspaces, Generic Menus, and the Keyboard-Centric Workflow Tiling and the Keyboard-Centric Workflow Aug 8, 2018
@danirabbit
Copy link
Member

Thanks for your detailed feedback! It would be really helpful if you could split this up into several reports where each individual proposal is its own issue report. It's very difficult to track grouped together reports like this since it is unlikely a single pull request will be both cover the full scope of this issue and be small enough that it can be reviewed reliable.

Closing this issue since we don't track grouped reports in this way

@NoraCodes
Copy link
Author

I'm not quite sure how to break these up yet; I opened the issue because I don't yet know what design the project is comfortable with. For instance, I asked whether or not it would be possible to provide this functionality from an outside program. If that is possible, I'd rather not open more issues here because I can just build the functionality on my own and leave Gala alone.

Even if that's not possible, I don't know what the best way to integrate these features is. Should they be individual features which can be toggled? How would that work? Should they be a single, opt-in mode?

If there's a better place to discuss design questions, I'll put this there.

@danirabbit
Copy link
Member

@LeoTindall It's always okay to suggest features and/or APIs. The worst case scenario is the issue report gets closed.

Each bullet point and each new function should be its own report. For example you could have one report "Add a shortcut to pop out tiled windows", one issue report "Resize tiled windows using a keyboard shortcut", one issue report "automatically tile new windows", etc etc. Discussion about implementation and whether or not each feature should be some kind of option can happen on each individual report.

FWIW, some things already exist. For example you can already tile and untile windows using Super + Ctrl + Right/Left. Some other reports already exist as well like Quarter tiling. This is why a big group issue report like this is not trackable. It's unclear whether the issue is "Open" or "Closed".

@NoraCodes
Copy link
Author

Understood, thanks for clarifying!

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

2 participants