Ginsu is a client for the gale chat system. It is designed to be powerful and above all stable, as well as having a quick learning curve.
These are the default keybindings. You may use the action name to rebind a key. See below for details.
Action Name | Default Key | Description |
Main Screens | ||
show_help_screen | <F1>, ? | Show help screen |
show_presence_status | <F3> | show presence status |
show_puff_details | d | show puff details |
Puff Movement | ||
next_puff | j, <Down> | Goto the next puff |
previous_puff | k, <Up> | Goto the previous puff |
first_puff | <Home> | Goto the first puff |
last_puff | <End>, G | Goto the last puff |
next_line | <Enter>, <C-E> | next line |
previous_line | <BackSpace>, <C-Y> | previous line |
next_page | <C-F>, <PageDown> | next page |
previous_page | <C-B>, <PageUp> | previous page |
forward_half_page | <C-D> | forward half page |
backward_half_page | <C-U> | backward half page |
Filter Manipulation | ||
prompt_new_filter | c, / | prompt new filter |
prompt_new_filter_twiddle | ~ | prompt new filter twiddle |
pop_one_filter | u | pop one filter |
pop_all_filters | U | pop all filters |
invert_filter | ! | invert filter |
filter_current_thread | t, T | filter current thread |
swap_filters | x | swap filters |
filter_current_author | a | filter current author |
Mark Manipulation | ||
set_mark | m | Set numbered mark to current filter stack |
recall_mark | [1-9] | Recall numbered mark |
recall_combine_mark | C | Recall numbered mark and push onto filter stack |
Composing Puffs | ||
follow_up | f | follow up |
new_puff | p | new puff |
reply_to_author | r | reply to author |
group_reply | g | group reply |
resend_puff | R | resend puff |
Miscellaneous | ||
modify_presence_string | N | modify presence string |
reconnect_to_servers | <C-r> | reconnect to servers |
edit_config_file | E | edit config file |
ask_quit | q | ask quit |
fast_quit | Q | fast quit |
redraw_screen | <C-l> | redraw screen |
ginsu [OPTIONS]... [categories]...
Available Options | |
-v, --verbose | increase verbosity output to errorlog. |
-V, --version | print version information |
-s, --sample-config | print sample configuration file to stdout |
-m, --man | print all internal help screens to stdout |
-e, --justargs | only subscribe to command line arguments |
-P | do not write to pufflog |
--help | show this help screen |
--nopufflog | do not read or write pufflog |
--errorlog <FILE> | log errors to file |
--dumpkey <KEYFILE> | print info for keyfile |
--checkconfig | check and print out configuration |
Filters are used throughout ginsu. A filter is an expression which selects puffs which match it.
Filters are built up from primitives via conjunctions, disjunctions and grouping, allowing complex filters to be created.
a ; b - semicolons are used to mean OR. this matches if a OR b matches a b - a space means AND. this matches if a AND b both match (a b) ; c - filters may be grouped with parenthesis !a - NOT. this matches if a does not match
primitive filters are regular expressions which are matched against the body of the puff, or a variety of special forms beginning with a ~ then a single character, then a colon, then the rest of the special form. If the text following the colon begins with a letter, the colon may be omitted.
Special Forms | |
~a:<gale-id> | author of puff |
~c:<category> | category puff was sent too |
~k:<regex> | regex match against keywords |
~s:<regex> | regex match against senders real name |
~b:<regex> | regex match against message body |
<regex> | synonym for ~b:<regex> |
Examples of Filters:
(~a:john@ugcs.caltech.edu) - all puffs by me (~c:pub.tv.buffy ~a:jtr@ofb.net) - puffs from jtr and to pub.tv.buffy ([gG]insu ; ~c:pub.comp.ginsu) - puffs containing the word ginsu or directed to pub.comp.ginsu (!~k:^spoil) - no spoilers (~c:pub.tv.buffy !~c:pub.meow) - puffs to buffy which are not about cats
There is always a current filter stack, which is a set of filters that determines which puffs are currently visible. there are a variety of keystrokes to modify the filter stack. If non-empty, the current filter stack is displayed on the bottom line of the main screen.
See online help via '?' or F1.
If any of these exist in the environment prefixed with GINSU_, they are preferred over the bare versions.
see also: http://gale.org/users/vars
keys may be rebound with the 'bind' keyword in the configuration file. the syntax is
bind <key> <command> </pre> here are some examples: <pre> bind <C-r> reconnect_to_servers bind c prompt_new_filter bind v goto_match
When puff bodies match regular expressions, the user may choose to run arbitrary commands based on them. This can be used to follow web links in puffs for instance. The 'apphook' mechanism is fully configurable via using 'apphook' lines in your ginsu.config file.
The general form is:
apphook <name> <regular expression> <command to run> [string user sees in menu ("$0" by default)]in the command and menu string, $0 is replaced by the whole regex match and $1, $2, .. $9 are replaced by the substrings captured by parenthesis in the regular expression.
apphook WikiWord '([[:space:]]|^)(([[:upper:]][[:lower:]]+){2,})([[:space:]]|$)' '$BROWSER ''http://wiki.ofb.net/?$2''' '$2' apphook URL '(http|ftp)s?://(%[[:digit:]A-Fa-f][[:digit:]A-Fa-f]|[-_.!~*'';/?:@&=+$,[:alnum:]])+' '$BROWSER ''$0'''
Ginsu uses the same alias mechanism as 'gsend'. Aliases take the form of symbolic links in the aliases directory in the gale directory.
Here is an example of how to create new aliases.
mkdir ~/.gale/aliases # only if it does not already exist cd ~/.gale/aliases ln -s pub pub@ofb.net ln -s ugcs ugcs@ugcs.caltech.edu
$GALE_DIR is ~/.gale/ by default.
There is also a public arch repository for ginsu at http://repetae.net/john/arch/2004/