text-aid-too

    1.1.7 • Public • Published

    Text-Aid-Too

    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.

    Screenshot

    Screenshot

    Installation

    Prerequisites

    You'll need nodejs and Coffeescript (sudo npm install -g coffee-script).

    The Easy Way

    1. Install the extension from the Chrome Store.

    2. Install the server (and its dependencies):

      sudo npm install -g text-aid-too

    3. 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
    
    Important
    • 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 to gvim -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).

    Automatically run as a background service

    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
    

    The Hard Way

    1. Clone the repo.

    2. make build - you will need Coffeescript.

    3. Install the server with npm install -g ..

    4. Run the server (as above).

    5. 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

    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)[https://github.com/smblott-github/text-aid-too/issues/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.

    Port

    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
    

    Security

    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.)

    Markdown

    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.

    Markdown 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.

    Help Text

    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]
    

    Release Notes

    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.

    Install

    npm i text-aid-too

    DownloadsWeekly Downloads

    1

    Version

    1.1.7

    License

    none

    Unpacked Size

    44.6 kB

    Total Files

    19

    Last publish

    Collaborators

    • smblott