Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ideas #4

@dominictarr

Description

@dominictarr

@sidorares I though I should post some ideas about where I want to take this.

I want to do something slightly different to a standard tiling window manager.

I want to balance the UI between tiles and tabs.

I think modern experience has shown us that tabs are better than floating windows. A slightly more structured approach is much more usable than something as adhock as floating windows...
the desktop metaphor is pretty good, and floating windows leads to a messy desktop, with scraps of paper everywhere.

The problem of a messy desktop is that the cognitive overhead of switching between different tasks, or even moving between materials (i.e., terminal, code, docs) required for the same task is too much. I observe various types of "cognetive overhead" involved in switching intertasks and intratask.
Optimal switching means you should be able to change using only mussel memory.

Bad Examples from common OSes

  • ctrl-tab to manipulate stack of windows (note, this originated in windows and then moved to mac! it doesn't just go the otherway). this is okay when you have only two windows, but when you have three you have to remember (or look at the ctrl-tab display) to see which window will come up. this is mad, because it pushes something out of your short-term memory.
  • per application tabs (have lots of browser tabs, or lots of terminal tabs)
    1. this is pretty good, but the problem is that each application type has it's own tabbing system which usually has it's own keyboard shortcuts (leading to hitting the wrong keys when in the wrong application). Your mussel memory does not know what application you are in, it can only remember what task you are doing. Ask a vim user if they have ever pressed :wq to try and send an email.
    2. The second problem is that often resources required for a task are spread between multiple applications. (e.g. code editor, terminal, web browser for docs, or running web app you are working on, issue tracker) probably, you'll have multiple tabs open in each application. so while performing one task (say fixing a bug someone posted on a github issue) you may switch between several browser tabs and several terminal tabs. This eventually leads to situations where you are searching for the tabs you want.

Searching (involving processing visual feedback) is an order of magnitude slower than mussel memory, and is acceptable when switching inter-task, but not optimal when switching intra-task.

  • per application tiles (multiple terminal tiles) this is nice. Especially if you use a in terminal code editor, it's possible to have test results in a terminal and edit code in an adjacent terminal. clearly the benefit of a tiling wm is that it allows you to have browsers, etc to be seen in the same tiling layout, this only leaves the question of switching between tilesets.

keyboard shortcuts: good, bad, and ugly.

keyboard shortcuts for analogous actions (like switching a tab) should be the same between applications, otherwise you'll hit them wrong. (on mac os changing tab in chrome is not the same as in iterm (and cannot be made the same ): Also, it's not possible to re-order tabs in osx-chrome via the keyboard!
(although it is in linux! linux has much better keyboard shortcuts than osx!)

tiling window managers commonly use ctrl- to switch between tabs.
This is okay, but it's much simpler to use ctrl-, by simply organising your apps into fixed positions (i.e. always put IRC on the far right, browser on the left) then it's possible to switch between any two apps via mussel memory.

idea!

have two layers of tabs. horizontal and vertical. a horizontal set can contain the apps needed for a specific task, and separate tasks can be organized into separate horizontal sets ("shelves"). switch between tabs (or focus tile) with command/win-<left|right> reposition tabs/tiles with command/win-shift-<left|right>. move to between shelves with command/win-<up|down> and reposition windows between shelves with command/win-shift-<up|down>
command-<arrow> is always moving the view between tabs/tiles/shelves
and command-shift-<arrow> is always moving the tab (along with the view)
probably allow reordering an entire shelf with command-capslock-<up|down>

Maybe have animations of screens moving (disableable, of course) or a visual representation of the relative layout of all the tabs/tiles/shelves that pops up when you hold the command key.

other ideas

nested layouts? it might be nice to have tilesets or tabs within tiles. But this also feels very complicated. It's easy to model moving things in a 2 dimensional grid (more or less) with arrow keys. With nested layouts you have essentially added a third dimension. So, I don't know, I'm mildly against this...

/cc @jez0990

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions