Text-aid-too is a variation on the text-aid theme: it allows you to edit web inputs in your native text editor, such as Vim or Emacs. It's a combination of a Chrome extension and a server.
But Text-aid-too is different:
- In addition to traditional HTML inputs, it also works for
contentEditable
inputs (such as the GMail compose window). - It updates the input's contents whenever the file is written/saved, so you can preview your changes as you go along.
- In
contentEditable
inputs (e.g. on Gmail) you can optionally use Markdown mark up, so you can write rich text GMail messages in Markdown (experimental, see below). - The temporary file name has the appropriate extension for the input type (
.txt
or.html
, as appropriate). Therefore, your text editor can detect the file type appropriately. - It checks inputs dynamically, so it works on sites (such as Google's Inbox)
which toggle the
contentEditable
status on-the-fly.
The default keyboard shortcut is <Ctrl-;>
, but you can set your own keyboard
shortcut on the extension's options page.
You'll need nodejs and Coffeescript (sudo npm install -g coffee-script
).
-
Install the extension from the Chrome Store.
-
Install the server (and its dependencies):
sudo npm install -g text-aid-too
-
Configure the port and shared secret on the extension's options page (optional, but required if you want to use a non-default port or a shared secret).
Then, launch the server; which might be something like...
export TEXT_AID_TOO_SECRET="<REPLACE-ME>"
export TEXT_AID_TOO_EDITOR="gvim -f"
# Use the default port (9293)...
text-aid-too
# Or...
text-aid-too --port 9294
-
The editor command must not fork and exit. Its process must remain until the editor is closed. For example, don't set the editor to
gvim
(which forks), set it togvim -f
which runs in the foreground (or the equivalent for your favourite editor) instead. -
If you get an error regarding the "d-bus daemon not running", then see this post.
-
Text-aid-too will not work with other text-aid servers. Those use HTTP, whereas Text-aid-too uses its own web-socket based protocol. This allows it to update the input's contents on-the-fly (that is, on file write).
On GNU/Linux, Text-Aid-Too can be packaged in a systemd user service, so it is automatically started as a background process when you log in.
Create the unit file, and customize with your favorite editor:
mkdir -p ~/.config/systemd/user
cat >~/.config/systemd/user/text-aid-too.service <<EOF
[Unit]
Description=Text-Aid-Too
[Service]
ExecStart=/usr/bin/text-aid-too
Environment="TEXT_AID_TOO_SECRET=something-secret"
Environment="TEXT_AID_TOO_EDITOR=sakura -e nvim"
Environment="COLORTERM=1"
Environment="DISPLAY=:0"
[Install]
WantedBy=default.target
EOF
Protect your unit file, since it contains the password:
chmod 0600 ~/.config/systemd/user/text-aid-too.service
Enable the service for automatic startup:
systemctl --user daemon-reload
systemctl --user start text-aid-too
systemctl --user enable text-aid-too
Text-Aid-Too is now running as a service (and will be upon future boots). If needed, logs can be seen using:
journalctl --user-unit text-aid-too -f
-
Clone the repo.
-
make build
- you will need Coffeescript. -
Install the server with
npm install -g .
. -
Run the server (as above).
-
Install the extension as an unpacked extension; it's in
./chrome-extension
.Visit the extension's options page to configure the port and shared secret, if required (see below).
The editor command is set when the server is launched. Use one of...
# Like this...
text-aid-too --editor "urxvt -T textaid -geometry 100x30+80+20 -e vim"
# Or like this...
export TEXT_AID_TOO_EDITOR="urxvt -T textaid -geometry 100x30+80+20 -e vim"
text-aid-too
Example of usage with a GUI editor:
export TEXT_AID_TOO_EDITOR="bash -c 'pantheon-terminal -e \"nvim $1\"' --"
text-aid-too
(Apparently)[#11], gnome-terminal
works as follows:
export TEXT_AID_TOO_EDITOR="gnome-terminal --disable-factory -x /usr/bin/vim -f \"%s\""
text-aid-too
konsole
works:
text-aid-too --editor "konsole -e vim"
If an editor is passed on the commmand line and an environment variable, the command line takes priority.
The default port is 9293
.
If you use a different port, then you'll have to change it on the extension's options page too.
text-aid-too --port 9293
By default, there's no security. Any process on the local machine can access the server. That's not great.
To enable basic shared-secret security, set the TEXT_AID_TOO_SECRET
environment variable.
export TEXT_AID_TOO_SECRET="something-secret"
text-aid-too
You'll then have to configure the same secret on the extension's options page, of course.
(You cannot set the shared secret on the command line, for obvious reasons.)
Note: this is an experimental feature.
With the --markdown
flag, the server parses non-HTML paragraphs as Markdown
(but only for text from contentEditable
elements). For example, you can use
Markdown to write messages in GMail.
Tips:
- Prefer not to exit/close the editor until your done. Just write/save the file and your changes will be updated in the corresponding input.
- Paragraphs (separated by
\n\n
) are handled separately. So one paragraph can be HTML, while the next is Markdown.
At the time of writing, the help text is...
Usage:
text-aid-too [--port PORT] [--editor EDITOR-COMMAND] [--markdown]
Example:
export TEXT_AID_TOO_EDITOR="gvim -f"
export TEXT_AID_TOO_SECRET=hul8quahJ4eeL1Ib
text-aid-too --port 9293
Markdown (experimental):
With the "--markdown" flag, text-aid-too tries to find naked text
paragraphs in HTML texts and parses them as markdown. This only
applies to texts from contentEditable elements (e.g. the GMail
compose window).
Environment variables:
TEXT_AID_TOO_EDITOR: the editor command to use.
TEXT_AID_TOO_SECRET: the shared secret; set this in the extension too.
Version: 1.1.1
Options:
--port [default: "9293"]
--editor [default: "urxvt -T textaid -geometry 100x30+80+20 -e vim"]
--markdown [default: false]
Server version 1.1.5:
- Change default editor to
gvim -f
.
Server version 1.1.5:
- Better (although not perfect) separation of Markdown from HTML.
- Removed documentation of
%s
replacement (see 1.1.4, below). This may be removed entirely soon, it's not working correctly
Extension version 1.1.1:
- Tweaks to the options page.
Server version 1.1.4:
- Add replacement of
%s
in the editor command (if present) with the file name; otherwise the file name is simply appended to the editor command.
Previous versions:
- Lost on the mists of time.