Don't know what ion is? ion is a very keyboard-friendly Window Manager. Check out it's homepage for more information: http://www.students.tut.fi/~tuomov/ion/
Comments, suggestions and bug-reports are most welcome!!
Old Patches
A. (very old) enable query_function to handle arguments (contained in official releases)
B. read / write single workspace configuration
C. commandmode support, shortcuts, input api abstraction (contained in ion-stable-20020207)
D. (ion-devel) common keyboard grab interface + keyboard resizing (contained in ion-devel-200205xx and higher)
E. (ion-devel + grab) commandmode module
Status: beta quality code, diff-v1
Last updated: 2002-12-01
Download: ion-devel-20021104-shortcut-1.diff
Patch against: ion-devel-20021104
Notes about Shortcuts
it's based on two functions: set_shortcut and goto_shortcut
both work a bit like submap's, as they collect and interpret the
subsequent keystroke the user makes.
using the function "set_shortcut" establishes a grab, and assignes the
next pressed key to the currently active frame as it's shortcut.
to clear a shortcut you can use BackSpace (or ESC) as the subsequent key to
set_shortcut.
valid shortcuts are characters '0'-'9','A'-'Z' and 'a'-'z'.
if a frame has a shortcut set, it's frame-bar contains a box in it's
upper left [or right] corner with the shortcut character printed into it. this
box is painted in "act_tab_shortcut_colors" and "tab_shortcut_colors".
if you prefer to get use the upper right corner for the designator,
use "shortcut_corner" in your theme-config, for example:
shortcut_corner "right"
valid arguments are "right" and "left";
the function "goto_shortcut" will jump to the frame with the desired
target shortcut.
Example Config:
,----->
|## draw.conf
| act_tab_shortcut_colors "#aaaacc", "#333366", "#000000", "#ffff00"
| tab_shortcut_colors "#eeeeee", "#333366", "#000000", "#ffff00"
|
|##bindings.conf
| set_mod "Mod1"
| submap "X" {
| kpress "S", "set_shortcut"
| kpress "G", "goto_shortcut"
| }
`----------->
Patch: enable query_function to handle arguments
Status: Included in official ion since ion-20020119 Last updated: 2002-01-17 This patch allows you to call any function. Including functions that take arguments. This fixes a shortcoming of the current latest official release, which is ion-20011109. This is accomplished by patching libtu's Tokenizer to be able to read from memory buffers. With this patch it's easy to have query_function tokenize the entered string and call the desired function. Since v3 of the patch ion now gives feedback on parsing errors, is able to tab-expand all FUNTAB_MAIN functions and one can now register a custom warning's handler for libtu's output facility: typedef void WarnHandler(const char *); WarnHandler *set_warn_handler(WarnHandler *handler); set_warn_handler sets the warning_handler to handler. if handler==NULL the builtin default handler, which dumps to stderr, is used. set_warn_handler returns the previous warning_handler. this can be used to reinstall the original handler, in case you just needed to intercept the warnings temporarily. Download: ion-20011109-query_function-3.diff Patch against: ion-20011109
Patch: read / write single workspace configuration
Status: beta quality code, diff-v3 Last updated: 2002-01-16 Download: ion-20011109-read_write_single_ws-3.diff Patch against: ion-20011109 This patch allows you to read and write single workspace split configurations. It gives you two new functions: query_save_ws_as - save the current workspace as <name> query_read_ws_from - replace the current workspace's split configuration with the one read from <name> (obviously these two are keybindable through ion's "kpress" facilities) Currently this patch seems to work fairly stable (e.g. it doesn't crash immediately ;)
Patch: commandmode support, shortcuts, input api abstraction
Status: diff-v4, this patch made it into ion-20020207 (stable)
Last updated: 2002-01-27
Download: ion-20020120-commandmode-4.diff
Patch against: ion-20020120
ChangeLog
v3 to v4:
- port keyboard based window resizing to the new input api.
This is a quite huge hybrid patch. If there is enough interest to have separate
patches for the single features, drop me a note and i'll split it up. send the
note to (lukas at edeal dot de).
What does this patch give you?
* input handling abstraction
introduce a more generic api for keyboard grabbing and subsequent keystroke
interpretation. Read the input api document for more info.
* shortcuts for frames
user-controlled frame-designator, which is easily used as a "goto"
target
"goto_client" is neat and all, but as programs keep changing the title
of their windows i wanted to have a unique goto-target designator which
the user is in sole control of. For details, read the notes below.
* command mode
this introduces a mode, where all keystrokes are interpreted as window
manager commands and you can toggle between "normal" and "command"
modes. if you know vi, you might be able to imagine what this feature
can do to your interface to your window manager...
Q: currently the only visual feedback on whether you are in command mode or
not is the WAITKEY cursor. is this enough?
Notes about Shortcuts
it's based on two functions: set_shortcut and goto_shortcut
both work a bit like submap's, as they collect and interpret the
subsequent keystroke the user makes.
using the function "set_shortcut" establishes a grab, and assignes the
next pressed key to the currently active frame as it's shortcut.
to clear a shortcut you can use BackSpace (or ESC) as the subsequent key to
set_shortcut.
valid shortcuts are characters '0'-'9','A'-'Z' and 'a'-'z'.
if a frame has a shortcut set, it's frame-bar contains a box in it's
upper left [or right] corner with the shortcut character printed into it. this
box is painted in "act_tab_shortcut_colors" and "tab_shortcut_colors".
if you prefer to get use the upper right corner for the designator,
use "shortcut_corner" in your theme-config, for example:
shortcut_corner "right"
valid arguments are "right" and "left";
the function "goto_shortcut" will jump to the frame with the desired
target shortcut.
Example Config:
,----->
|## draw.conf
| act_tab_shortcut_colors "#aaaacc", "#333366", "#000000", "#ffff00"
| tab_shortcut_colors "#eeeeee", "#333366", "#000000", "#ffff00"
|
|##bindings.conf
| set_mod "Mod1"
| submap "X" {
| kpress "S", "set_shortcut"
| kpress "G", "goto_shortcut"
| }
`----------->
Notes about the command-mode
two commands are responsible for toggling from and to command-mode:
enter_command_mode and leave_command_mode.
right after enter_command_mode is done, all "normal-mode"-bindings
become inactive. in this version you have to set up your command_mode
bindings in the config file in the new "commandmode_bindings" section:
,---------->
| kpress "Mod1+C", "enter_command_mode"
|
| commandmode_bindings {
| set_mod ""
| # frame navigation
| kpress "H", "goto_left"
| kpress "J", "goto_below"
| kpress "K", "goto_above"
| kpress "L", "goto_right"
|
| # client navigation
| kpress "Shift+H", "switch_prev"
| kpress "Shift+L", "switch_next"
|
| # workspace navigation
| kpress "Mod1+H", "switch_ws_prev"
| kpress "Mod1+L", "switch_ws_next"
|
| # grr, goto from commandmode currently does not work properly. argh.
| kpress "G", "goto_shortcut"
| kpress "Shift+G", "set_shortcut"
|
| kpress "T", "toggle_tagged"
| kpress "Shift+T", "attach_tagged"
|
| # we have to have a way out of command_mode
| kpress "Escape", "leave_command_mode"
| kpress "Return", "leave_command_mode"
| }
`------------------->
Patch: read / write single workspace configuration
Status: beta quality code, diff-v3 Last updated: 2002-01-16 Download: ion-20011109-read_write_single_ws-3.diff Patch against: ion-20011109 This patch allows you to read and write single workspace split configurations. It gives you two new functions: query_save_ws_as - save the current workspace as <name> query_read_ws_from - replace the current workspace's split configuration with the one read from <name> (obviously these two are keybindable through ion's "kpress" facilities) Currently this patch seems to work fairly stable (e.g. it doesn't crash immediately ;)
Patch: commandmode support, shortcuts, input api abstraction
Status: this patch made it into ion-20020207 (stable), see above for ion-devel version!
Last updated: 2002-01-27
Download: ion-20020120-commandmode-4.diff
Patch against: ion-20020120
ChangeLog
v3 to v4:
- port keyboard based window resizing to the new input api.
This is a quite huge hybrid patch. If there is enough interest to have separate
patches for the single features, drop me a note and i'll split it up. send the
note to (lukas at edeal dot de).
What does this patch give you?
* input handling abstraction
introduce a more generic api for keyboard grabbing and subsequent keystroke
interpretation. Read the input api document for more info.
* shortcuts for frames
user-controlled frame-designator, which is easily used as a "goto"
target
"goto_client" is neat and all, but as programs keep changing the title
of their windows i wanted to have a unique goto-target designator which
the user is in sole control of. For details, read the notes below.
* command mode
this introduces a mode, where all keystrokes are interpreted as window
manager commands and you can toggle between "normal" and "command"
modes. if you know vi, you might be able to imagine what this feature
can do to your interface to your window manager...
Q: currently the only visual feedback on whether you are in command mode or
not is the WAITKEY cursor. is this enough?
Notes about Shortcuts
it's based on two functions: set_shortcut and goto_shortcut
both work a bit like submap's, as they collect and interpret the
subsequent keystroke the user makes.
using the function "set_shortcut" establishes a grab, and assignes the
next pressed key to the currently active frame as it's shortcut.
to clear a shortcut you can use BackSpace as the subsequent key to
set_shortcut.
valid shortcuts are characters '0'-'9','A'-'Z' and 'a'-'z'.
if a frame has a shortcut set, it's frame-bar contains a box in it's
upper left corner with the shortcut character printed into it. this
box is painted in "act_tab_shortcut_colors" and "tab_shortcut_colors".
if you prefer to get use the upper right corner for the designator,
use "shortcut_corner" in your theme-config, for example:
shortcut_corner "right"
valid arguments are "right" and "left";
the function "goto_shortcut" will jump to the frame with the desired
target shortcut.
Example Config:
,----->
| act_tab_shortcut_colors "#aaaacc", "#333366", "#000000", "#ffff00"
| tab_shortcut_colors "#eeeeee", "#333366", "#000000", "#ffff00"
|
| set_mod "Mod1"
| submap "X" {
| kpress "S", "set_shortcut"
| kpress "G", "goto_shortcut"
| }
`----------->
Notes about the command-mode
two commands are responsible for toggling from and to command-mode:
enter_command_mode and leave_command_mode.
right after enter_command_mode is done, all "normal-mode"-bindings
become inactive. in this version you have to set up your command_mode
bindings in the config file in the new "commandmode_bindings" section:
,---------->
| kpress "Mod1+C", "enter_command_mode"
|
| commandmode_bindings {
| set_mod ""
| # frame navigation
| kpress "H", "goto_left"
| kpress "J", "goto_below"
| kpress "K", "goto_above"
| kpress "L", "goto_right"
|
| # client navigation
| kpress "Shift+H", "switch_prev"
| kpress "Shift+L", "switch_next"
|
| # workspace navigation
| kpress "Mod1+H", "switch_ws_prev"
| kpress "Mod1+L", "switch_ws_next"
|
| # grr, goto from commandmode currently does not work properly. argh.
| kpress "G", "goto_shortcut"
| kpress "Shift+G", "set_shortcut"
|
| kpress "T", "toggle_tagged"
| kpress "Shift+T", "attach_tagged"
|
| # we have to have a way out of command_mode
| kpress "Escape", "leave_command_mode"
| kpress "Return", "leave_command_mode"
| }
`------------------->
Patch: (ion-devel) common keyboard grab interface + keyboard resizing
Status: applied to ion-devel since May 2002, or so. Last updated: 2002-02-06 Download: ion-devel-20020130-grab-2.diff Patch against: ion-devel-20020130 This patch introduces my common keyboard grabbing interfaces to the wmcore branch of ion (aka. ion-devel). As a by-product it also fixes the keyboard based frame resizing... Comments welcome!
Patch: (ion-devel + grab) commandmode module
Status: beta quality code, diff-v1
Last updated: 2002-02-16
Download: ion-devel-20020130grab-commandmode-1.diff
Patch against: ion-devel-20020130 + my grab patch
This patch introduces my commandmode patch to the wmcore branch of ion (aka.
ion-devel).
As a by-product it also ports the query module to the new keyboard grab interfaces...
A sample configuration is the following. ion-devel expects it in ~/.ion-devel/commandmode.conf
bindings {
set_mod ""
kpress "H", "goto_left"
kpress "J", "goto_below"
kpress "K", "goto_above"
kpress "L", "goto_right"
kpress "Shift+H", "switch_prev"
kpress "Shift+L", "switch_next"
kpress "Mod1+H", "switch_ws_prev"
kpress "Mod1+L", "switch_ws_next"
kpress "G", "goto_shortcut"
kpress "Shift+G", "set_shortcut"
kpress "T", "toggle_tagged"
kpress "Shift+T", "attach_tagged"
kpress "Shift+colon", "query_function"
kpress "Escape", "commandmode_leave"
kpress "Return", "commandmode_leave"
}
Of course there needs to be some addition to the bindings, to enter this commandmode.
That entering can be configured like this. This goes into the bindings.conf file.
kpress "Mod1+C", "commandmode_enter"
The commands for entering and leaving commandmode are, yep, "commandmode_enter"
and "commandmode_leave".
Comments welcome!