Skip to content

Instantly share code, notes, and snippets.

@sixtyfive
Created July 15, 2017 11:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sixtyfive/8ffc95f2c55ba1f4b5350be89b42a4c1 to your computer and use it in GitHub Desktop.
Save sixtyfive/8ffc95f2c55ba1f4b5350be89b42a4c1 to your computer and use it in GitHub Desktop.
My dream window manager

My dream window manager

  • every function accessible by mouse needs to be accessible by keyboard and vice-versa

  • there are 1-n screens

    • each screen has 1-n workspaces, but the default is 12
    • workspaces do not span screens
  • when changing screens or workspaces, a text overlay naming the screen or workspace is shown. while cycling through all windows (see below for default keyboard shortcuts), the behaviour is like xfwm4 (overlaid list of windows, selected window highlighted). the upper left corner is hot and shows an over- view of the current workspace's windows à la MacOS X's Exposé.

  • windows have no decoration without a theme

    • but there is a default theme
    • all visual elements of a theme are provided by the theme itself
  • the default theme provides

    • a title bar with a window icon (shows dropdown menu when clicked) window title text, and the move to screen button (in case of more than 2 screens shows dropdown menu), move to workspace button (dropdown in case of more than 2 workspaces), minimize button, maximize/restore button, close button which are shown if the amount of screens or workspaces or the type of window requires them
    • and large (5 pixel-ish) but invisible borders for resize-grabbing
  • the default mode of operation is floating windows à la xfwm4

    • with corners and borders serving for simple tiling (8 options for a window: top left, tr, bl, br, left half, rh, th, bh)
  • shortcuts with Ctrl+Alt-letter shall always be reserved for starting programs, shortcuts with Alt+FX (except those used below) shall always be reserved for starting system dialogs

  • the default floating keyboard shortcuts are:

    • cycle through active workspace's windows on all screens: Alt-Tab, backwards: Alt+Shift-Tab
    • cycle through active application's windows regardless of screen or workspace: Alt-`
    • cycle through active workspace's windows on current screen: Alt-CapsLock, backwards: Alt+Shift-CapsLock (CapsLock is always "off")
    • zoom out to overview of active workspace's windows: Alt-F3
    • close active window: Alt-F4
    • zoom out to overview of active screen's workspaces: Alt-F5
    • force active window into fullscreen mode: Alt-F11
    • resize active window: Super-Delete, arrows, Enter
    • move active window: Super-Home, arrows, Enter
    • minimize active window: Super-End
    • change active window's z-layer: Super-PgUp/Dn
    • toggle maximize/restore of active window: Super-Space
    • change to screen: Super+Alt-arrows, Super+Alt-FX
    • change to workspace: Ctrl+Alt-arrows, Super-FX
    • send active window to screen: Ctrl+Alt+Super-arrows, Ctrl+Alt+Super-FX
    • bring active window to workspace: Ctrl+Super-arrows, Ctrl+Super-Fx
  • there is a floating layer and a tile layer:

    • whenever a window is put into a tile either by mouse or by keyboard, it changes to the tiling layer.
    • whenever a window is moved so as to not correspond with its former tile's size any longer, either by mouse or by keyboard, it changes back to the floating layer
    • the tile layout by default splits the workspace into four fields of equal size, which retain their state per-workspace until changed, and whose sizes (including contained windows' sizes) can be changed either by grabbing at their inner borders or by keyboard. additionally, by grabbing at their outer borders or by keyboard, the tiles can be halved in size. free space being created in this manner can be occupied by new windows.
  • the default tiling keyboard shortcuts are:

    • tile window and move to left/right/top/bottom tile: Super-arrows
    • move tiled edge window to corner tile: press Super-arrow again (like Cinnamon)
    • change active window's tile size in 5% increments: Super+Shift-arrows
    • half active window's tile: Super+Ctrl+Shift-arrows
    • cycle windows through current tiles: Super-Tab, backwards: Super+Shift-Tab
    • put all windows of the current workspace into a simple vertical layout: Super-v, a horizontal layout: Super-h, a 2/3rd-1/3rd master/slave layout: Super-x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment