Here are the data types used by Dill, as defined in /sys/lull.hoon.
$blew
+$ blew [p=@ud q=@ud]
Terminal dimension; p is columns, q is rows. This structure is passed to Dill by the runtime in a %blew task whenever the dimensions of the terminal changes.
$belt
+$ belt
$? bolt
$% [%mod mod=?(%ctl %met %hyp) key=bolt]
[%txt p=(list @c)]
[%ctl p=@c]
[%met p=@c]
== ==
Terminal client input.
A $belt is passed to Dill in a %belt task by the runtime whenever there is input, such as a user typing in the console. This is only used between the terminal client and Dill, a $dill-belt is used between Dill and Arvo.
May either be a $bolt or one of:
%mod- Modifier (Ctrl, Meta or Hyper) plus [key].%txt- A series of characters%ctl- Ctrl+[key], deprecated in favour of%mod.%met- Meta+[key], deprecated in favour of%mod.
$bolt
+$ bolt
$@ @c
$% [%aro p=?(%d %l %r %u)]
[%bac ~]
[%del ~]
[%hit r=@ud c=@ud]
[%ret ~]
==
Simple input.
Either a single simple character or one of:
%aro- Arrow keys.%bac- Backspace key.%del- Delete key.%hit- Mouse click -ris row andcis column. Note these are zero-indexed, with[0 0]being the bottom left corner.%ret- Return (Enter) key.
$blit
+$ blit
$% [%bel ~]
[%clr ~]
[%hop p=@ud]
[%klr p=stub]
[%lin p=(list @c)]
[%mor ~]
[%sag p=path q=*]
[%sav p=path q=@]
[%url p=@t]
==
Terminal client output.
A $blit is given to the terminal client by Dill in a %blit gift when it wants to print some text, clear the screen, go ding or what have you.
This is only used between Dill and the terminal client, a $dill-blit is used instead between Arvo and Dill.
A $blit is one of:
%bel- Ring the terminal bell.%clr- Clear the screen.%hop- Set cursor position,pspecifies its position on the prompt line.%klr- Set styled line, the$stubspecifies the text and style.%lin- Set current line,pcontains the text.%mor- Newline.%sag- Save to jamfile, typically in/[pier]/.urb/put/.pis/[path]/[filename]/[extension]. For example,/foo/barwill save it in/[pier]/.urb/put/foo.bar,/a/b/c/foo/barwill save it in/[pier]/.urb/put/a/b/c/foo.bar, and/foowill save it in/[pier]/.urb/put.foo.qis thenountojamand save in the file.%sav- Save to file. Same behaviour as%sagexceptqis anatomrather than anounand therefore doesn't need to bejammed. Theatomis written to disk as if it were the bytestring in the tail of an$octs. That is,%saving thecord'abcdef', whose@uxvalue is0x6665.6463.6261, results in a unix file whose hex dump renders as61 62 63 64 65 66.%url- Activate URL,pis the URL.
$dill-belt
+$ dill-belt
$% [%aro p=?(%d %l %r %u)]
[%bac ~]
[%cru p=@tas q=(list tank)]
[%ctl p=@]
[%del ~]
[%hey ~]
[%met p=@]
[%ret ~]
[%rez p=@ud q=@ud]
[%txt p=(list @c)]
[%yow p=gill:gall]
==
Terminal input for Arvo.
While $belt is used between the terminal client and Dill, $dill-belt is used between Dill and Arvo.
a $dill-belt is one of:
%aro- Arrow keys.%bac- Backspace key.%cru- Echo error,pis an error@tasandqis a traceback.%ctl- Ctrl+[key].%del- Delete key.%hey- Refresh.%met- Meta+[key].%ret- Return key (Enter).%rez- Terminal resized,pis columns andqis rows.%txt- Text input.%yow- Connect to app.
$dill-blit
+$ dill-blit
$% [%bel ~]
[%clr ~]
[%hop p=@ud]
[%klr p=stub]
[%mor p=(list dill-blit)]
[%pom p=stub]
[%pro p=(list @c)]
[%qit ~]
[%out p=(list @c)]
[%sag p=path q=*]
[%sav p=path q=@]
[%url p=@t]
==
Terminal output from Arvo.
While $blit is used between Dill and the terminal client, $dill-blit is used between Arvo and Dill.
A $dill-blit is one of:
%bel- Terminal bell.%clr- Clear screen.%hop- Set cursor position,pis its horizontal position on the prompt line.%klr- Styled text, the$stubspecifies both the text and style.%mor- Multiple$dill-blit.%pom- Styled prompt, the$stubspecifies both the text and style.%pro- Set prompt,pis the text for the prompt.%qit- Close console.%out- Print text.%sag- Savenounto jamfile. See $blit section for further details.%sav- Saveatomto file. See $blit section for further details.%url- Activate URL.
$flog
+$ flog
$% [%crop p=@ud]
[%crud p=@tas q=(list tank)]
[%heft ~]
[%meld ~]
[%pack ~]
[%text p=tape]
[%verb ~]
==
Wrapped Dill tasks.
These are a subset of Dill's tasks which can be wrapped in a %flog task. See the API Reference document for details of each of these tasks.