Dill Data Types
Here are the data types used by Dill, as defined in /sys/lull.hoon
.
$blew
$blew
Terminal dimension.
+$ blew [p=@ud q=@ud]
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
Terminal client input.
+$ belt :: client input
$? bolt :: simple input
[%mod mod=?(%ctl %met %hyp) key=bolt] :: w/ modifier
[%txt p=(list @c)] :: utf32 text
::TODO consider moving %hey, %rez, %yow here ::
== ::
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 a key (see$bolt
.%txt
- A series of UTF-32 characters.
--
$bolt
$bolt
Simple input.
+$ bolt :: simple input
$@ @c :: simple keystroke
$% [%aro p=?(%d %l %r %u)] :: arrow key
[%bac ~] :: true backspace
[%del ~] :: true delete
[%hit x=@ud y=@ud] :: mouse click
[%ret ~] :: return
== ::
Either a single UTF-32 character or one of:
%aro
- Arrow keys.%bac
- Backspace key.%del
- Delete key.%hit
- Mouse click -r
is row andc
is column. Note these are zero-indexed, with[0 0]
being the bottom left corner.%ret
- Return (Enter) key.
$blit
$blit
Terminal client output.
+$ blit :: client output
$% [%bel ~] :: make a noise
[%clr ~] :: clear the screen
[%hop p=$@(@ud [x=@ud y=@ud])] :: set cursor col/pos
[%klr p=stub] :: put styled
[%mor p=(list blit)] :: multiple blits
[%nel ~] :: newline
[%put p=(list @c)] :: put text at cursor
[%sag p=path q=*] :: save to jamfile
[%sav p=path q=@] :: save to file
[%url p=@t] :: activate url
[%wyp ~] :: wipe cursor line
== ::
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 directly used between Dill and the terminal client, while a $dill-blit is used between Arvo and Dill. A $dill-blit
includes the $blit
union as a subset.
A $blit
is one of:
%bel
- Ring the terminal bell.%clr
- Clear the screen.%hop
- Set cursor position. Ifp
is an atom, it specifies the horizontal position on the prompt line. Ifp
is a cell, it represents a 2D location wherex
is columns andy
is rows.%klr
- Set styled line, the$stub
specifies the text and style.%mor
- multiple$blit
s.%nel
- a newline.%put
- put text (as a list of UTF-32 characters) at the current cursor position.%sag
- Save to jamfile, typically in/[pier]/.urb/put/
.p
is/[path]/[filename]/[extension]
. For example,/foo/bar
will save it in/[pier]/.urb/put/foo.bar
,/a/b/c/foo/bar
will save it in/[pier]/.urb/put/a/b/c/foo.bar
, and/foo
will save it in/[pier]/.urb/put.foo
.q
is thenoun
tojam
and save in the file.%sav
- Save to file. Same behaviour as%sag
exceptq
is anatom
rather than anoun
and therefore doesn't need to bejam
med. Theatom
is written to disk as if it were the bytestring in the tail of an$octs
. That is,%sav
ing thecord
'abcdef'
, whose@ux
value is0x6665.6463.6261
, results in a unix file whose hex dump renders as61 62 63 64 65 66
.%url
- Activate URL,p
is the URL.%wyp
- clear the cursor line.
$dill-belt
$dill-belt
Terminal input for Arvo.
+$ dill-belt :: arvo input
$% belt :: client input
[%cru p=@tas q=(list tank)] :: errmsg (deprecated)
[%hey ~] :: refresh
[%rez p=@ud q=@ud] :: resize, cols, rows
[%yow p=gill:gall] :: connect to app
== ::
A $belt is used between the terminal client and Dill, while a $dill-belt
is used between Dill and Arvo. A $dill-belt
includes the $belt
union as a subset.
a $dill-belt
is either $belt
or one of:
%cru
- Echo error,p
is some error tag andq
is a stack trace.%hey
- Refresh.%rez
- Terminal resized,p
is columns andq
is rows.%yow
- Connect to app.
$dill-blit
$dill-blit
Terminal output from Arvo.
+$ dill-blit :: arvo output
$% blit :: client output
[%qit ~] :: close console
== ::
While $blit is used between Dill and the terminal client, $dill-blit
is used between Arvo and Dill. A $blit
is a subset of a $dill-blit
.
A $dill-blit
is either a $blit
or a:
%qit
- Close console.
$flog
$flog
Wrapped Dill task
s.
+$ flog :: sent to %dill
$% [%crop p=@ud] :: trim kernel state
$>(%crud told) ::
[%heft ~] ::
[%meld ~] :: unify memory
[%pack ~] :: compact memory
$>(%text told) ::
[%verb ~] :: verbose mode
== ::
These are a subset of Dill's task
s which can be wrapped in a %flog
task
. See the API Reference document for details of each of these task
s.
$poke
$poke
Dill to userspace.
+$ poke :: dill to userspace
$: ses=@tas :: target session
dill-belt :: input
== ::
A $dill-belt
(client input) for a particular session.
$session-task
$session-task
A subset of Dill's task
s for interacting with a particular session.
+$ session-task :: session request
$% [%belt p=belt] :: terminal input
[%blew p=blew] :: terminal config
[%flee ~] :: unwatch session
[%hail ~] :: terminal refresh
[%open p=dude:gall q=(list gill:gall)] :: setup session
[%shut ~] :: close session
[%view ~] :: watch session blits
== ::
This type is used in the %shot
wrapper task
.
See the Session Tasks entry in the API reference for more details of these task
s.
$told
$told
A subset of Dill's task
s for basic text printing.
+$ told :: system output
$% [%crud p=@tas q=tang] :: error
[%talk p=(list tank)] :: tanks (in order)
[%text p=tape] :: tape
== ::
See the Told Tasks entry in the API reference for more details of these task
s.
Last updated