on master help sign in
migrate :talk to dozbud
commitd9673e6dcfc4d0275bd27493ab3c99e76ebff308 authorTobias Merkle <tgamerkle@gmail.com> dateWed 29 Jun 2016, 14:44 (10 years ago) parent6a66d05
6 files changed+269−195
docs/about/glossary.md+1−1 docs/hoon/examples.md+1−1 docs/using/filesystem.md+81−69 docs/using/messaging.md+83−47 docs/using/setup.md+41−33 docs/using/shell.md+62−44
docs/about/glossary.md+1−1
@@ -22,7 +22,7 @@ their address:
2222 Size Name Parent Object Example
2323 ----- ------ ------ ------ -------
2424 2^8 galaxy ~ supernode ~zod
25− 2^16 star galaxy supernode ~doznec
25+ 2^16 star galaxy supernode ~dozbud
2626 2^32 planet star user ~tasfyn-partyv
2727 2^64 moon planet device ~sigsam-nimbot-tasfyn-partyv
2828 2^128 comet ~ bot ~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex
docs/hoon/examples.md+1−1
@@ -17,7 +17,7 @@ side of simple manual construction over high-octane FP.)
1717## `sieve`: code in basic style
1818
1919A function that produces the list of primes less than or equal to
20−than its argument, an atom:
20+its argument, an atom:
2121```
2222:gate thru/atom :: 1
2323:cast (list atom) :: 2
docs/using/filesystem.md+81−69
@@ -1,24 +1,28 @@
11---
2−navhome: /docs
3−next: true
2+navhome: '/docs'
3+next: True
44sort: 6
55title: Filesystem
66---
77
88# Filesystem (`%clay`)
99
10−<div class="row"> <div class="col-md-8">
10+<div class="row">
1111
12−Urbit has its own revision-controlled filesystem, `%clay`. `%clay` is
13−a typed, global, referentially transparent namespace. An easy way to
14−think about it is like typed `git` with continuous sync.
12+<div class="col-md-8">
1513
16−The most common way to use `%clay` is to mount a `%clay` node in a
17−Unix directory. The Urbit process will watch this directory and
18−automatically record edits as changes, Dropbox style. The mounted
19−directory is always at the root of your pier directory.
14+Urbit has its own revision-controlled filesystem, `%clay`. `%clay` is a
15+typed, global, referentially transparent namespace. An easy way to think
16+about it is like typed `git` with continuous sync.
2017
21−</div> </div>
18+The most common way to use `%clay` is to mount a `%clay` node in a Unix
19+directory. The Urbit process will watch this directory and automatically
20+record edits as changes, Dropbox style. The mounted directory is always
21+at the root of your pier directory.
22+
23+</div>
24+
25+</div>
2226
2327## Quickstart
2428
@@ -28,14 +32,13 @@ Create a `%sandbox` desk based on the `%home` desk:
2832
2933 |merge %sandbox ~your-urbit %home
3034
31−Most of the time we want to use `%clay` from Unix.
35+Most of the time we want to use `%clay` from Unix.
3236
3337Mount the entire contents of your `sandbox` desk to Unix:
3438
3539 ~your-urbit:dojo> |mount /=sandbox=
3640
37−To explore the filesystem from inside Urbit `+ls` and `+cat` are
38−useful:
41+To explore the filesystem from inside Urbit `+ls` and `+cat` are useful:
3942
4043 ~your-urbit:dojo> +ls /=sandbox=/web
4144
@@ -50,37 +53,41 @@ Sync from your friend `~some-ship`'s `%experiment` desk to your
5053
5154## Manual
5255
53−<h3 class="first child">Paths</h3>
56+<h3 class="first child">
57+Paths
58+</h3>
5459
55−A path in `%clay` is a list of URL-safe text, restricted to `[a
56−z]`,`[0 9]`, `.`, `-`, `_` and `~`. Formally this is a `(list knot)`
60+A path in `%clay` is a list of URL-safe text, restricted to
61+`[a z]`,`[0 9]`, `.`, `-`, `_` and `~`. Formally this is a `(list knot)`
5762where each segment is a `@ta`.
5863
5964Paths can be expressed as either `/foo/bar/baz` or `[%foo %bar %baz]`.
6065The first three segments of an urbit path are `/plot/desk/case`, for
61−example `/~doznec/home/1`.
66+example `/~dozbud/home/1`.
6267
6368#### Relative paths
6469
6570Relative paths are expressed using `%` which is roughly equivalent to
66−Unix `.`. `%%` is `..` and `%%%` is what you would expect `...` to
67−be. There are no local relative paths. `foo/bar` must be written
71+Unix `.`. `%%` is `..` and `%%%` is what you would expect `...` to be.
72+There are no local relative paths. `foo/bar` must be written
6873`%/foo/bar`.
6974
7075#### Substitution
7176
7277If the default path is `/foo/bar/baz`, `/=/moo` means `/foo/moo`, and
73−`/=/moo/=/goo` means `/foo/moo/baz/goo`. Also, instead of `/=/=/zoo`
74−or `/=/=/=/voo`, write `/==zoo` or `/===voo`.
78+`/=/moo/=/goo` means `/foo/moo/baz/goo`. Also, instead of `/=/=/zoo` or
79+`/=/=/=/voo`, write `/==zoo` or `/===voo`.
7580
76−Most commonly this is used to avoid having to know the current
77−revision number in the `dojo`. Instead of writing
81+Most commonly this is used to avoid having to know the current revision
82+number in the `dojo`. Instead of writing
7883`/~your-urbit/home/4/path/to/file` you can just write
7984`/=home=/path/to/file`.
8085
8186### Revision-control
8287
83−<h3 class="first child"><code>|mount clay-path [unix-name]</code></h3>
88+<h3 class="first child">
89+<code>|mount clay-path [unix-name]</code>
90+</h3>
8491
8592Mount the `clay-path` at the unix mount point `unix-name`.
8693
@@ -112,7 +119,8 @@ Unmounts the Unix path `/generators`.
112119
113120Merges a `beak` into a `desk` using an optional merge `strategy`.
114121
115−A `beak` is a ship-desk-case triple, encoded as a path(`/~doznec/home/2`)
122+A `beak` is a ship-desk-case triple, encoded as a
123+path(`/~dozbud/home/2`)
116124
117125**Examples:**
118126
@@ -127,24 +135,24 @@ Merge the `%examples` desk from `~waxbex-ribmex`
127135### `|sync desk plot [plot-desk]`
128136
129137Subscribe to continuous updates from remote `plot` on local `desk`.
130−`plot-desk` can specify the remote `desk` name. When omitted it is
131−defaulted to being the same as `desk`. Non-comet urbits have `|sync
132−%home ~parent %kids` automatically set up (where `~parent` is the
133−planet that issued a moon, the star that issued a planet, or the
134−galaxy that issued a star).
138+`plot-desk` can specify the remote `desk` name. When omitted it is
139+defaulted to being the same as `desk`. Non-comet urbits have
140+`|sync %home ~parent %kids` automatically set up (where `~parent` is the
141+planet that issued a moon, the star that issued a planet, or the galaxy
142+that issued a star).
135143
136144**Examples:**
137145
138− |sync %home-local ~doznec %home |sync %home ~doznec
146+ |sync %home-local ~dozbud %home |sync %home ~doznec
139147
140148### `|unsync desk plot [plot-desk]`
141149
142150Unsubscribe from updates from remote `plot` on local `desk` with
143−optional `plot-desk`. Arguments must match original `|sync` command.
151+optional `plot-desk`. Arguments must match original `|sync` command.
144152
145153Example:
146154
147− |unsync %home-local ~doznec %home
155+ |unsync %home-local ~dozbud %home
148156
149157### `|label desk name`
150158
@@ -156,57 +164,59 @@ Example:
156164
157165### Merge strategies
158166
159−`%init` - Used if it's the first commit to a desk. Also can be
160−used to "reinitialize" a desk -- revision numbers keep going up,
161−but the new revision isn't necessarily a descendent of the
162−previously-numbered version, allowing merges to be rerun.
167+`%init` - Used if it's the first commit to a desk. Also can be used to
168+"reinitialize" a desk -- revision numbers keep going up, but the new
169+revision isn't necessarily a descendent of the previously-numbered
170+version, allowing merges to be rerun.
163171
164172`%this` - Keep what's in Bob's desk, but join the ancestry.
165173
166174`%that` - take what's in Alice's desk, but join the ancestry. This is
167−the reverse of `%this`. This is different from `%init` because
168−the new commit has both sides in its ancestry.
175+the reverse of `%this`. This is different from `%init` because the new
176+commit has both sides in its ancestry.
169177
170178`%fine` - "fast-forward" merge. This succeeds iff one head is in the
171179ancestry of the other.
172180
173−`%meet`, `%mate`, and `%meld` - find the most recent common ancestor
174−to use as our merge base.
181+`%meet`, `%mate`, and `%meld` - find the most recent common ancestor to
182+use as our merge base.
175183
176184A `%meet` merge only succeeds if the changes from the merge base to
177−Alice's head (hereafter, "Alice's changes") are in different files
178−than Bob's changes. In this case, the parents are both Alice's and
179−Bob's heads, and the data is the merge base plus Alice's changed files
180−plus Bob's changed files.
185+Alice's head (hereafter, "Alice's changes") are in different files than
186+Bob's changes. In this case, the parents are both Alice's and Bob's
187+heads, and the data is the merge base plus Alice's changed files plus
188+Bob's changed files.
181189
182190A `%mate` merge attempts to merge changes to the same file when both
183−Alice and Bob change it. If the merge is clean, we use it; otherwise,
184−we fail. A merge between different types of changes -- for example,
191+Alice and Bob change it. If the merge is clean, we use it; otherwise, we
192+fail. A merge between different types of changes -- for example,
185193deleting a file vs changing it -- is always a conflict. If we succeed,
186−the parents are both Alice's and Bob's heads, and the data is the
187−merge base plus Alice's changed files plus Bob's changed files plus
188−the merged files.
194+the parents are both Alice's and Bob's heads, and the data is the merge
195+base plus Alice's changed files plus Bob's changed files plus the merged
196+files.
189197
190198A `%meld` merge will succeed even if there are conflicts. If there are
191−conflicts in a file, then we use the merge base's version of that
192−file, and we produce a set of files with conflicts. The parents are
193−both Alice's and Bob's heads, and the data is the merge base plus
194−Alice's changed files plus Bob's changed files plus the successfully
195−merged files plus the merge base's version of the conflicting files.
196−
197−`%auto` - meta-strategy. Check to see if Bob's desk exists, and if it
198−doesn't we use an `%init` merge. Otherwise, we progressively try
199−`%fine`, `%meet`, and `%mate` until one succeeds. If none succeed, we
200−merge Bob's desk into a scratch desk. Then, we merge Alice's desk
201−into the scratch desk with the `%meld` option to force the merge.
202−Finally, we annotate any conflicts, if we know how.
199+conflicts in a file, then we use the merge base's version of that file,
200+and we produce a set of files with conflicts. The parents are both
201+Alice's and Bob's heads, and the data is the merge base plus Alice's
202+changed files plus Bob's changed files plus the successfully merged
203+files plus the merge base's version of the conflicting files.
204+
205+`%auto` - meta-strategy. Check to see if Bob's desk exists, and if it
206+doesn't we use an `%init` merge. Otherwise, we progressively try
207+`%fine`, `%meet`, and `%mate` until one succeeds. If none succeed, we
208+merge Bob's desk into a scratch desk. Then, we merge Alice's desk into
209+the scratch desk with the `%meld` option to force the merge. Finally, we
210+annotate any conflicts, if we know how.
203211
204212### Manipulation
205213
206−<h3 class="first child"><code>|rm path</code></h3>
214+<h3 class="first child">
215+<code>|rm path</code>
216+</h3>
207217
208−Remove the data at `path`. `path` must be a path to actual node, not
209−a 'directory'
218+Remove the data at `path`. `path` must be a path to actual node, not a
219+'directory'
210220
211221### `|cp to from`
212222
@@ -216,14 +226,16 @@ Copy the file at `from` into the path `to`.
216226
217227Move the file at `from` into the path `to`.
218228
219−In `%clay`, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
229+In `%clay`, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
220230doesn't happen unless the `|cp` succeeds.
221231
222232### Generators
223233
224−<h3 class="first child"><code>+cat path [path ...]</code></h3>
234+<h3 class="first child">
235+<code>+cat path [path ...]</code>
236+</h3>
225237
226−Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints
238+Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints
227239their contents.
228240
229241### `+ls path`
docs/using/messaging.md+83−47
@@ -1,35 +1,49 @@
11---
2−navhome: /docs
3−next: true
2+navhome: '/docs'
3+next: True
44sort: 4
5−title: Messaging (:talk)
5+title: 'Messaging (:talk)'
66---
77
88# Messaging (`:talk`)
99
1010<div class="row">
11+
1112<div class="col-md-8">
1213
13−`:talk` is the Urbit messaging and notifications protocol. Today we use `:talk` just to chat and coordinate, but it's really a general purpose piece of infrastructure.
14+`:talk` is the Urbit messaging and notifications protocol. Today we use
15+`:talk` just to chat and coordinate, but it's really a general purpose
16+piece of infrastructure.
1417
15−For the time being come join us in `/urbit-meta` by using the <a href="#-quickstart">quickstart</a> below.
18+For the time being come join us in `/urbit-meta` by using the
19+<a href="#-quickstart">quickstart</a> below.
1620
17−Today `:talk` is sort of like a distributed, encrypted Slack that can be used from the CLI and the browser. There’s no central `:talk` server. Any Urbit can host one.
21+Today `:talk` is sort of like a distributed, encrypted Slack that can be
22+used from the CLI and the browser. There’s no central `:talk` server.
23+Any Urbit can host one.
1824
19−`:talk` is a general purpose tool for both aggregating and publishing streams of messages. Applications can use `:talk` as their transport protcol, API connectors can push disparate data sources into `:talk`, and so on. There are lots of things a distributed message protocol can be used for that we haven't even thought of.
25+`:talk` is a general purpose tool for both aggregating and publishing
26+streams of messages. Applications can use `:talk` as their transport
27+protcol, API connectors can push disparate data sources into `:talk`,
28+and so on. There are lots of things a distributed message protocol can
29+be used for that we haven't even thought of.
2030
2131</div>
32+
2233</div>
2334
2435## Quickstart
2536
26−For the most part we use `:talk` as a single-instance of Slack: one main channel (`/urbit-meta`) and dms. Everyone is more than welcome in `/urbit-meta`. It's the place to get help, ask questions and chat about Urbit in general.
37+For the most part we use `:talk` as a single-instance of Slack: one main
38+channel (`/urbit-meta`) and dms. Everyone is more than welcome in
39+`/urbit-meta`. It's the place to get help, ask questions and chat about
40+Urbit in general.
2741
2842Let's join `/urbit-meta`:
2943
3044Use `ctrl-x` to switch from `:dojo` to `:talk`, then:
3145
32− ~your-urbit:talk> ;join ~doznec/urbit-meta
46+ ~your-urbit:talk> ;join ~dozbud/urbit-meta
3347
3448You'll see:
3549
@@ -37,14 +51,14 @@ You'll see:
3751 ---------:talk| rules of /urbit-meta:
3852 ---------:talk| don't be rude
3953 ---------:talk| urbit-meta is politically correct and safe for work
40− ~doznec= ~your-urbit admitted to %urbit-meta
54+ ~dozbud= ~your-urbit admitted to %urbit-meta
4155 ~your-urbit:talk>
4256
4357Post a line to `/urbit-meta`:
4458
4559 ~your-urbit:talk> hello, world
4660
47−You'll see, echoed back at you through `~doznec`:
61+You'll see, echoed back at you through `~dozbud`:
4862
4963 ~your-urbit> hello, world
5064
@@ -60,15 +74,18 @@ Now you and `~talsur-todres` can exchange messages directly.
6074
6175To set your audience back to `/urbit-meta`:
6276
63− ~your-urbit:talk> ;~doznec/urbit-meta
77+ ~your-urbit:talk> ;~dozbud/urbit-meta
6478
6579Use `;leave` to unsubscribe from a channel:
6680
67− ~your-urbit:talk> ;leave ~doznec/urbit-meta
81+ ~your-urbit:talk> ;leave ~dozbud/urbit-meta
6882
69−There are two ways of using `:talk`: from the CLI or through a web ui available at `http://your-urbit.urbit.org/talk` (or `http://localhost:8080/talk`).
83+There are two ways of using `:talk`: from the CLI or through a web ui
84+available at `http://your-urbit.urbit.org/talk` (or
85+`http://localhost:8080/talk`).
7086
71−The web ui ships as compiled JavaScript on your Urbit, but has its own source repo [here](https://github.com/urbit/talk).
87+The web ui ships as compiled JavaScript on your Urbit, but has its own
88+source repo [here](https://github.com/urbit/talk).
7289
7390Last, let's create a channel we can invite some friends to:
7491
@@ -78,11 +95,18 @@ Now you can tell your friends to `;join ~your-urbit/my-channel`.
7895
7996## Manual
8097
81−`:talk`'s design is similar in spirit to [nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol), the underlying protocol for Usenet.
98+`:talk`'s design is similar in spirit to
99+[nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
100+the underlying protocol for Usenet.
82101
83−Our design is pretty simple: `:talk` messages are called ‘posts’. Posts go to ‘stations’. Any urbit can host or subscribe to any number of stations.
102+Our design is pretty simple: `:talk` messages are called ‘posts’. Posts
103+go to ‘stations’. Any urbit can host or subscribe to any number of
104+stations.
84105
85−There are four kinds of station: a write-only `%mailbox` for direct messages, an invite-only `%party` for private conversation, a read-only `%journal` for curated content, and a public-access `%channel` for general use.
106+There are four kinds of station: a write-only `%mailbox` for direct
107+messages, an invite-only `%party` for private conversation, a read-only
108+`%journal` for curated content, and a public-access `%channel` for
109+general use.
86110
87111### Posts
88112
@@ -90,12 +114,13 @@ For the time being a post is either a line, a URL or a command.
90114
91115#### Lines
92116
93−A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the line starts with '@', it's an action (IRC `/me`).
117+A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the
118+line starts with '@', it's an action (IRC `/me`).
94119
95−The `:talk` interface will let you keep typing past 64 bytes, but
96−insert a Unicode bullet-point character in an appropriate space
97−in your post, to show you the prospective linebreak. Your essay
98−will be posted in multiple lines.
120+The `:talk` interface will let you keep typing past 64 bytes, but insert
121+a Unicode bullet-point character in an appropriate space in your post,
122+to show you the prospective linebreak. Your essay will be posted in
123+multiple lines.
99124
100125 ~your-urbit:talk> this is a long message, so it will by truncated right at this•spot
101126
@@ -112,13 +137,14 @@ A URL is any valid URL.
112137
113138### Commands
114139
115−A command is a hoon expression, prefaced by '#'.
140+A command is a hoon expression, prefaced by '\#'.
116141
117142 ~your-urbit:talk> #(add 2 2)
118143
119144### Activating Lines
120145
121−A line number identifying the *subsequent* line is displayed every 5 lines.
146+A line number identifying the *subsequent* line is displayed every 5
147+lines.
122148
123149 ---------[0]
124150 ~your-urbit; this is my message
@@ -144,21 +170,23 @@ and contents:
144170Activating a URL will print the full URL (it could have been truncated),
145171and activating a command will evaluate it.
146172
147−You can activate the most recent line with `;`, the second-most recent with
148−`;;`, and so on.
173+You can activate the most recent line with `;`, the second-most recent
174+with `;;`, and so on.
149175
150176### Creating and managing stations
151177
152−`;create journal %serious-journal 'description'` - Creates a `%journal`, a privately writable publicly readable station.
178+`;create journal %serious-journal 'description'` - Creates a `%journal`,
179+a privately writable publicly readable station.
153180
154−`;create channel %serious-channel 'description'` - Creates a `%channel`, a publicly readable publicly writeable station.
181+`;create channel %serious-channel 'description'` - Creates a `%channel`,
182+a publicly readable publicly writeable station.
155183
156184### Presence
157185
158−You'll see presence notifications when people enter or leave
159−stations you're subscribed to.
186+You'll see presence notifications when people enter or leave stations
187+you're subscribed to.
160188
161−`;who` - list everyone in all your stations
189+`;who` - list everyone in all your stations
162190
163191`;who station` - list everyone in that station
164192
@@ -168,13 +196,16 @@ Glyphs are assigned by station hash out of the following list
168196
169197 > = + - } ) , . " ' ^ $ % & @
170198
171−Alphanumeric characters and `|#;:*~_` are reserved; all others (the above lists, and `\/!?({<`) can be manually assigned.
199+Alphanumeric characters and `|#;:*~_` are reserved; all others (the
200+above lists, and `\/!?({<`) can be manually assigned.
172201
173202`;bind > /urbit-test` - assigns the `>` glyph to `/urbit-test`.
174203
175204### Prefixes
176205
177−Received posts are prefixed with a glyph to let you know what the audience is. You can activate an individual post to see the full audience.
206+Received posts are prefixed with a glyph to let you know what the
207+audience is. You can activate an individual post to see the full
208+audience.
178209
179210`|` - Informational messages
180211
@@ -188,7 +219,8 @@ Received posts are prefixed with a glyph to let you know what the audience is.
188219
189220#### Prompt
190221
191−The audience you're sending to is always shown in your prompt. If there's a glyph for it, it's shown as the glyph.
222+The audience you're sending to is always shown in your prompt. If
223+there's a glyph for it, it's shown as the glyph.
192224
193225Here we're talking to the station bound to `=`:
194226
@@ -208,20 +240,21 @@ Here we're talking directly to `~dannum-mitryl`:
208240
209241`;%station` - Set audience to a station on your own ship
210242
211−`;~dannum-mitryl this is a private message` - Set the audience and send a post in the same line. This works for all of the above.
243+`;~dannum-mitryl this is a private message` - Set the audience and send
244+a post in the same line. This works for all of the above.
212245
213−Your audience is configured 'implicitly' with regard to the following rules (in order):
246+Your audience is configured 'implicitly' with regard to the following
247+rules (in order):
214248
215−- if you manually locked the audience, that audience.
216−- if typing a post, the audience when you started typing.
217−- if you activated a post, the post you activated.
218−- audience of the last post received.
219−- audience of the last post sent.
249+- if you manually locked the audience, that audience.
250+- if typing a post, the audience when you started typing.
251+- if you activated a post, the post you activated.
252+- audience of the last post received.
253+- audience of the last post sent.
220254
221−Clear any 'implicit' audience setting by moving your cursor to
222−the start of the line and pressing backspace (whether the line is
223−empty or not). Posting a line clears the typing and activation
224−configurations.
255+Clear any 'implicit' audience setting by moving your cursor to the start
256+of the line and pressing backspace (whether the line is empty or not).
257+Posting a line clears the typing and activation configurations.
225258
226259### Nicknames
227260
@@ -239,4 +272,7 @@ configurations.
239272
240273`;unset noob` show urbit names instead of nicknames
241274
242−All nicknames must be 14 characters or less, lowercase. Nicknames are strictly local - like the names on entries in a phonebook. Sometimes in a post you want to mention someone you know by a nickname. Just type `~plato`, and `:talk` will replace it with `~your-urbit`.
275+All nicknames must be 14 characters or less, lowercase. Nicknames are
276+strictly local - like the names on entries in a phonebook. Sometimes in
277+a post you want to mention someone you know by a nickname. Just type
278+`~plato`, and `:talk` will replace it with `~your-urbit`.
docs/using/setup.md+41−33
@@ -1,50 +1,55 @@
11---
2−navhome: /docs
3−next: true
2+navhome: '/docs'
3+next: True
44sort: 2
55title: Setup
66---
77
88# Getting started
99
10−On disk your urbit is an append-only log and a checkpoint. Or, in simpler terms, a directory where we keep your urbit’s state. We call this a ‘pier’.
10+On disk your urbit is an append-only log and a checkpoint. Or, in
11+simpler terms, a directory where we keep your urbit’s state. We call
12+this a ‘pier’.
1113
1214## Initialize
1315
14−To create an urbit, we need an identity. This identity
15−is both a network address and a memorable name.
16+To create an urbit, we need an identity. This identity is both a network
17+address and a memorable name.
1618
17−You are probably creating one of two kinds of urbit: a 32-bit
18−"planet" or a 128-bit "comet." For a quick terminology guide
19−and high-level refresher, refer to this [handy reference
20−sheet](/docs/about/glossary).
19+You are probably creating one of two kinds of urbit: a 32-bit "planet"
20+or a 128-bit "comet." For a quick terminology guide and high-level
21+refresher, refer to this [handy reference sheet](/docs/about/glossary).
2122
2223If you have an Urbit invitation, you'll have a planet like
23−`~fintud-macrep` and `~fortyv-tombyt-tabsen-sonres`. To create
24−your pier:
24+`~fintud-macrep` and `~fortyv-tombyt-tabsen-sonres`. To create your
25+pier:
2526
2627 $ bin/urbit -w fintud-macrep -t fortyv-tombyt-tabsen-sonres
2728
28−This will create a directory `fintud-macrep/` and begin building
29−your urbit. This may take a few minutes.
29+This will create a directory `fintud-macrep/` and begin building your
30+urbit. This may take a few minutes.
3031
31−If you do not have a ticket, you can still make a 'comet', a wild
32−urbit drifting through cyberspace. Pick your own directory name,
33−it doesn't matter:
32+If you do not have a ticket, you can still make a 'comet', a wild urbit
33+drifting through cyberspace. Pick your own directory name, it doesn't
34+matter:
3435
3536 $ bin/urbit -c mycomet
3637
37−This will create the directory `mycomet/` and generate a 128-bit identity for your urbit.
38+This will create the directory `mycomet/` and generate a 128-bit
39+identity for your urbit.
3840
3941## Orientation
4042
41−When your urbit is finished booting you should see a `dojo>` prompt. Welcome!
43+When your urbit is finished booting you should see a `dojo>` prompt.
44+Welcome!
4245
43−By default your urbit is quite bare-bones. Let's stroll through what's already running:
46+By default your urbit is quite bare-bones. Let's stroll through what's
47+already running:
4448
4549### Shell — `:dojo`
4650
47−The command prompt in front of you is a simple shell and Hoon REPL. Let's make sure it works:
51+The command prompt in front of you is a simple shell and Hoon REPL.
52+Let's make sure it works:
4853
4954 ~fitund-macrep:dojo> (add 2 2)
5055
@@ -57,29 +62,30 @@ Good.
5762
5863### Messaging — `:talk`
5964
60−Use `^X` (ctrl-x) to change your prompt. Let's join the main Urbit chat channel:
65+Use `^X` (ctrl-x) to change your prompt. Let's join the main Urbit chat
66+channel:
6167
62− ~fitund-macrep:talk() ;join ~doznec/urbit-meta
68+ ~fitund-macrep:talk() ;join ~dozbud/urbit-meta
6369
6470`:talk` is stateful, so your urbit will download a backlog.
65−`/urbit-meta` is the place to ask questions, get help and talk
66−about anything Urbit-related.
71+`/urbit-meta` is the place to ask questions, get help and talk about
72+anything Urbit-related.
6773
6874### Web — `:tree`
6975
70−Urbit is also accessible through the web. Try opening:
76+Urbit is also accessible through the web. Try opening:
7177
7278 http://localhost:8080/
7379
74−in your favorite browser. You'll be prompted to use `+code`.
75−This page was generated by `:tree`, the basic Urbit web
76−interface. You can also access your urbit through
77−`http://fintud-macrep.urbit.org` (where `fintud-macrep` is your
78−planet name).
80+in your favorite browser. You'll be prompted to use `+code`. This page
81+was generated by `:tree`, the basic Urbit web interface. You can also
82+access your urbit through `http://fintud-macrep.urbit.org` (where
83+`fintud-macrep` is your planet name).
7984
8085### Filesystem — `%clay`
8186
82−`%clay`, the Urbit filesystem, isn't mounted to unix by default. Switch to the `:dojo` prompt and run:
87+`%clay`, the Urbit filesystem, isn't mounted to unix by default. Switch
88+to the `:dojo` prompt and run:
8389
8490 ~fitund-macrep:dojo> |mount %
8591
@@ -90,10 +96,12 @@ This should produce:
9096
9197which indicates the command was processed.
9298
93−`|mount %` will cause a `home/` directory to appear inside your pier folder. Changes to these files are automatically synced into your urbit.
99+`|mount %` will cause a `home/` directory to appear inside your pier
100+folder. Changes to these files are automatically synced into your urbit.
94101
95102## Learn more
96103
97−If you're eager to get started programming you're ready to head over to <a href="../../hoon/demo">the Hoon demo</a>.
104+If you're eager to get started programming you're ready to head over to
105+<a href="../../hoon/demo">the Hoon demo</a>.
98106
99107To learn more about using the system, let's keep going:
docs/using/shell.md+62−44
@@ -1,21 +1,22 @@
11---
2−navhome: /docs
3−next: true
2+navhome: '/docs'
3+next: True
44sort: 5
5−title: Shell (:dojo)
5+title: 'Shell (:dojo)'
66---
77
88# Shell (`:dojo`)
99
1010<div class="row">
11+
1112<div class="col-md-8">
1213
13−The `:dojo` is the place to quickly experiment with Urbit. On
14−the surface the `:dojo` is just a Hoon REPL. On the inside, the
15−`:dojo` is a system for operating on and transforming data in
16−Urbit.
14+The `:dojo` is the place to quickly experiment with Urbit. On the
15+surface the `:dojo` is just a Hoon REPL. On the inside, the `:dojo` is a
16+system for operating on and transforming data in Urbit.
1717
1818</div>
19+
1920</div>
2021
2122## Quickstart
@@ -51,78 +52,89 @@ Run system commands from `:hood`, like `reload`, using `|`:
5152
5253 ~your-urbit:dojo> |reload %eyre
5354
54−
5555### Generators
5656
57−**`+cat`** - Similar to Unix `cat`. Accepts a path.
57+**`+cat`** - Similar to Unix `cat`. Accepts a path.
5858
5959 ~your-urbit:dojo> +cat %/web/md
6060 ~your-urbit:dojo> +cat /~talsur-todres/home/2/web/notes/md
6161
62−**`+curl`** - Similar to Unix `curl`. Accepts a `tape`.
62+**`+curl`** - Similar to Unix `curl`. Accepts a `tape`.
6363
6464 ~your-urbit:dojo> +curl "http://nyt.com"
6565
66−**`+hello`** - Just prints the argument. Accepts a `@ta`.
66+**`+hello`** - Just prints the argument. Accepts a `@ta`.
6767
6868 ~your-urbit:dojo> +hello 'mars'
6969
70−**`+ls`** - Similar to Unix `ls`. Accepts a path.
70+**`+ls`** - Similar to Unix `ls`. Accepts a path.
7171
7272 ~your-urbit:dojo> +ls %/web
7373 ~your-urbit:dojo> +ls /~talsur-todres/home/2/web/notes
7474
75−**`+moon`** - Generate a random moon from a planet. No arguments.
75+**`+moon`** - Generate a random moon from a planet. No arguments.
7676
7777 ~your-urbit:dojo> +moon
7878
79−**`+solid`** - Compile the current state of the kernel and output a noun. Usually downloaded to a file in unix. No arguments.
80−
79+**`+solid`** - Compile the current state of the kernel and output a
80+noun. Usually downloaded to a file in unix. No arguments.
81+
8182 ~your-urbit:dojo> .urbit/pill +solid
8283
83−**`+ticket`** - Generate a ticket for an Urbit plot. Takes an Urbit name (`@p`).
84+**`+ticket`** - Generate a ticket for an Urbit plot. Takes an Urbit name
85+(`@p`).
8486
8587 ~your-urbit:dojo> +ticket ~talsur-todres-your-urbit
8688
87−**`+tree`** - Generate a recursive directory listing. Takes a path.
89+**`+tree`** - Generate a recursive directory listing. Takes a path.
8890
8991 ~your-urbit:dojo> +tree %/web
9092
9193### Hood
9294
93−The hood is the system daemon. See `gen/hood` and `app/hood`.
95+The hood is the system daemon. See `gen/hood` and `app/hood`.
9496
95−**`|hi`** - Sends a direct message. Sort of like Unix `write`. Accepts an urbit name (`@p`) and a string (`cord`).
97+**`|hi`** - Sends a direct message. Sort of like Unix `write`. Accepts
98+an urbit name (`@p`) and a string (`cord`).
9699
97− ~your-urbit:dojo> |hi ~doznec "you there?"
100+ ~your-urbit:dojo> |hi ~dozbud "you there?"
98101
99−**`|link`** / **`|unlink`** - Link / unlink a remote app. Accepts an Urbit name and an app name.
102+**`|link`** / **`|unlink`** - Link / unlink a remote app. Accepts an
103+Urbit name and an app name.
100104
101105 ~your-urbit:dojo> |link ~talsur-todres %octo
102106
103−**`|mass`** - Prints the current memory usage of all the kernel modules. No arguments.
107+**`|mass`** - Prints the current memory usage of all the kernel modules.
108+No arguments.
104109
105110 ~your-urbit:dojo> |mass
106111
107−**`|reload`** - Reloads a kernel module (vane) from source. Accepts any number of vane names.
112+**`|reload`** - Reloads a kernel module (vane) from source. Accepts any
113+number of vane names.
108114
109115 ~your-urbit:dojo> |reload %clay %eyre
110116
111−**`|reset`** - Reloads `hoon.hoon` and all modules. No arguments.
117+**`|reset`** - Reloads `hoon.hoon` and all modules. No arguments.
112118
113119 ~your-urbit:dojo> |reset
114120
115−**`|start`** - Starts an app. Accepts an app name.
121+**`|start`** - Starts an app. Accepts an app name.
116122
117123 ~your-urbit:dojo> |start %curl
118124
119125## Manual
120126
121−<h3 class="first child">Sources and sinks</h3>
127+<h3 class="first child">
128+Sources and sinks
129+</h3>
122130
123−A dojo command is either a source or a sink. A source is just something that can be printed to your console or the result of some computation. A sink is an *effect*: a change to the filesystem, a network message, a change to your environment, or typed message to an app.
131+A dojo command is either a source or a sink. A source is just something
132+that can be printed to your console or the result of some computation. A
133+sink is an *effect*: a change to the filesystem, a network message, a
134+change to your environment, or typed message to an app.
124135
125−Sources can be chained together, but we can only produce one effect per command.
136+Sources can be chained together, but we can only produce one effect per
137+command.
126138
127139### Sinks
128140
@@ -135,7 +147,7 @@ Set any envronment variable:
135147
136148 44
137149
138−(There are a few special variables that the dojo maintains. See below.)
150+(There are a few special variables that the dojo maintains. See below.)
139151
140152#### `:` - Send to app
141153
@@ -145,7 +157,7 @@ Send a `helm-hi` message to `hood`:
145157
146158 ~your-urbit:dojo> :hood &helm-hi 'hi'
147159
148−App usually expect marked data, so `&` is often used here.
160+App usually expect marked data, so `&` is often used here.
149161
150162#### `*` - Save in `%clay`
151163
@@ -153,7 +165,8 @@ Save a new `md` file in `web`:
153165
154166 ~your-urbit:dojo> *%/web/foo/md '# hello'
155167
156−The last component of the path is expected to be the mark (or mime type).
168+The last component of the path is expected to be the mark (or mime
169+type).
157170
158171#### `.` - Export to Unix
159172
@@ -196,16 +209,18 @@ Use `_` to run a gate (or function):
196209
197210`+http[s]://example.com` - sends a GET request
198211
199−`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the JSON `"hi"` in the body.
212+`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the
213+JSON `"hi"` in the body.
200214
201−`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the JSON `"hi"` in the body.
215+`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the
216+JSON `"hi"` in the body.
202217
203−Note that the first of these is a source while the last two are
204−sinks.
218+Note that the first of these is a source while the last two are sinks.
205219
206220#### `+` - Generators
207221
208−Generators are simple hoon scripts loaded from the filesystem. They live in `gen/`.
222+Generators are simple hoon scripts loaded from the filesystem. They live
223+in `gen/`.
209224
210225Create a random moon (from any planet):
211226
@@ -213,9 +228,10 @@ Create a random moon (from any planet):
213228 :: produces
214229 "moon: ~docsun-tamtem-your-urbit; ticket: ~bartug-hodbyr-fognum-ralmud"
215230
216−### Variables
231+### Variables
217232
218−You can use `=` to set an environment variable in `:dojo`, but there are a few reserved names that have special uses.
233+You can use `=` to set an environment variable in `:dojo`, but there are
234+a few reserved names that have special uses.
219235
220236#### `dir`
221237
@@ -228,9 +244,10 @@ Current working `%clay` desk and revision. Read / write.
228244
229245 404/hoon docs/ dojo/hoon lib/ listen/hoon md static/md talk/ tree/main/
230246
231−#### `lib`
247+#### `lib`
232248
233−Current set of libraries (`/lib`) in your environment. Can also be set with `/+`. Read / write.
249+Current set of libraries (`/lib`) in your environment. Can also be set
250+with `/+`. Read / write.
234251
235252**Examples:**
236253
@@ -242,7 +259,8 @@ Current set of libraries (`/lib`) in your environment. Can also be set with `/+
242259
243260#### `sur`
244261
245−Current set of structures (`/sur`) in your environment. Can also be set with `/-`. Read / write.
262+Current set of structures (`/sur`) in your environment. Can also be set
263+with `/-`. Read / write.
246264
247265**Examples:**
248266
@@ -254,7 +272,7 @@ Current set of structures (`/sur`) in your environment. Can also be set with `/
254272
255273#### `now`
256274
257−The current (128-bit `@da`) time. Read-only.
275+The current (128-bit `@da`) time. Read-only.
258276
259277**Example:**
260278
@@ -264,7 +282,7 @@ The current (128-bit `@da`) time. Read-only.
264282
265283#### `our`
266284
267−The current urbit plot. Read-only.
285+The current urbit plot. Read-only.
268286
269287**Example:**
270288
@@ -274,7 +292,7 @@ The current urbit plot. Read-only.
274292
275293#### `eny`
276294
277−256 bits of entropy. Read-only.
295+256 bits of entropy. Read-only.
278296
279297**Example:**
280298