dominictarr / tiles

MIT License
62 stars 6 forks source link

ideas #4

Open dominictarr opened 10 years ago

dominictarr commented 10 years ago

@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

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.

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

skovsgaard commented 10 years ago

One suggestion I have, something that I keep struggling with figuring out in Nwm: A sane way to launch a panel like Tint2 or similar, so it's either - like dmenu - not treated like a window or simply floating/overlapping without disrupting other open windows..

refset commented 10 years ago

Well, I'm all for nested layouts... stereoscopic zooming tiling interfaces are definitely the future! Tabs are an inelegant 2d substitute for what should be a spatial interaction.

Having gotten very comfortable with xmonad (though not heavily modifying it) I now think it's probably as optimal as the 2d experience gets without massively increasing the scope of "window manager". I've often thought that cross-application tab trees (similar to the Tree Style Tab FF extension) would be a great extension to the xmonad experience but I realise that would inevitably end up in actually wanting a sort of browser-like experience. i.e. complete with lazy-loaded application tabs and a complete browsing history that can be searched and revisited

Sorry that can't be more a direct response to the discussion :D

dominictarr commented 10 years ago

@jez0990 the problem I have with nested layouts is I can't think of a good way to move a tile into a nested tile set...

hmm, oh, maybe you could do capslock-command-<left|right> like the command to move it into a shelf, but sideways... hmm, could work...

Anyway, it's easy to try things with js, so once we get 2d grids working we can try nested pretty easily.

dominictarr commented 10 years ago

@skovsgaard you'd probably need a config to say that certain windows should be handled as a bar and not as a tile.

sidorares commented 10 years ago

I'm for nested layouts. In i3 I feel it very intuitive to move: shift + hjkl or shift + arrows

sidorares commented 10 years ago

Funny that yesterday I was writing my list of "nice to have features" for my wm. I'll copy-paste it here. No particular order

In the long term I'd like to have JS implementation of generic WM which can be configured to be anything from usual overlapping wm to tabbed/tiling (with set of sane presets)

dominictarr commented 10 years ago

The way that Iterm2 (osx) allows you to drag and drop tiles into position is nice, although, I nearly never actually use that. mostly just split vertically twice, and occasionally, one more split.

Do you know how to make a window transparent? that will be very handy for the overlay stuff I'm considering.

Absolutely, the best thing about having a pure js wm is it will be highly scriptable.

sidorares commented 10 years ago

Transparency is easy - you just run external compositing manager like xcompmgr (which I want to try implement in js as well, there is composite and damage support in node-x11)

sidorares commented 10 years ago

I re-position tabs in iterm2 quite often ( usually with keyboard though ) Yeah, the functionality I want to have is simliar to what iterm or chrome have

dominictarr commented 10 years ago

@sidorares tabs is a different story, I reposition tabs all the time, but rarely resize them, or move tiles around within the screen.