Linux for Authors


Linux For Authors

Each time I finish a major project or start to think of a new one I like to collect my thoughts on what worked and didn’t work. This generally comes in two phases, reviewing contents and reviewing my workflow. Today I want to focus on describing my workflow and how it has evolved and why today I am so happy with the one I have built that is entirely open source. I would also like to detail how Linux can be used to great affect for Authors of any technical ability.

Author Workflow Mach I:

I started with Microsoft Word. There is absolutely nothing wrong with using Microsoft Word as your main writing suite. But for me, I found the ribbons and endless options overbearing and distracting. Also, I desperately hate white backgrounds for long writing sessions. It strains my eyes too much whereas a dark background of even yellowed-white helps a great deal.

And the biggest deal is that I am/was an amateur author. I don’t make the big bucks and every penny I can save by not purchasing software I can put into Cover Art or Advertising. So for me, the cost is the biggest factor, as the only thing that should be between you and your writing is a keyboard and a display.

Author Workflow Mach II:

My next project jumped around a lot from Word to Google Docs to Scrivener. I read countless forums that said Scrivener was the best for going from an idea -> ebook and it does a great job but at the end of the day I never felt like I enjoyed its workflow. I would have to spend so much time searching and getting used to its way of doing things that it distracted from writing. Corkboard organization does nothing for my brain.

Author Workflow Mach III:

Google docs but I wasn’t happy. You see in order to get to an open document you have to start the computer, log in, wait for it to load, start a web-browser, find the right website, enter credentials, wait for stuff to load, search through google drive’s filesystem to find the doc, then you may open the doc. At each point, there is a considerable amount of time invested in waiting and getting oneself dangerously close to internet distractions. As often said the best writing generally takes place as far away from the internet as possible. But the benefits of sharing docs and knowing that I was not responsible for backups was nice peace of mind which made it worth some of the effort.

During this phase, I started branching out to more and more obtuse and obscure editors in search of the perfect one. I tried focus write, PyRoom, and many others, but they never felt right for me.

Author Workflow Mach IV:

During this time frame, I have moved onto an entire Linux Based platform. Free as in Beer is near and dear to my heart, and I feel compelled to support and foster the open source community.

The workflow I used for NaNoWriMo 2017, was simply the Write! app. This is a $20 paid for app, which I got for free in exchange for writing a review. And it works great! I still would recommend it to anyone that likes a simple workflow with a distraction-free editor. But I didn’t like that it saves documents ONLY to the cloud and to get them “locally” I had to export to text. I didn’t like how locked in I felt, it became very close to Microsoft Word where the only way to access those files is through that specific proprietary program. What would happen if someday the service is unavailable and then I cannot retrieve my work? Unlikely to happen, but that’s not the way my mind works. A writer must do everything in their power to protect their creations from “acts of god” that would corrupt or destroy one’s files.

Author Workflow Mach V:

The goal, go as basic as possible.

At the end of the day after writing three books, it has occurred to me that the most important thing a document writing software can do is stay out of my way and do as much as possible to keep my hands on the keyboard. If it fails at that test I will reject it.

Here is what I have built over time and many trials and false starts. But I am very happy with this workflow. It’s a little “tech” focused, but these tools and ideas I think bring a more organic approach to writing on the computer.

Base OS:

Linux Mint – This is the most human-friendly version of Linux that there is and is equally accommodating to a newbie as it is to more experienced hands. I use it for work and play equally.


Terminal – I do all my writing, configuration and input via the command line. I 100% promise you that it is not as scary as it sounds and guess what? You have to write each and every command which will help engage that part of your brain.

For bonus points, if running Linux and select, Ctrl-F1it will switch you from desktop to command mode with absolutely zero graphics. What better distraction-free writing environment than one where you can’t even use the mouse. Ctrl-F7 to get back to desktop mode.

Dropbox – Simple and effective backup, has a client for every major OS and even mobile devices. So take your writing anywhere with you. Free up to 2GB, which is a hell of a lot of text.

tmuxtmux is a terminal session manager, that I use to split screen Horizontal and Vertical command prompts. That way if I need to reference an outline or look up a word, I never have to close or lose my spot where I’m writing.

sudo apt install tmux
Ctrl-B + Shift % - Verical Splitscreen
Ctrl-B + Shift " - Horizontal Splitscreen
Ctrl-B + Directional Arrow - Jump between screens
Ctrl-B + Hold Directional Arrow in/decrease size of screen
Ctrl-B + x - close Active screen

joeJoe’s Own Editor – simple, frills-free text editor. It does not get more basic than this. Joe understands basic markup language and has an advanced command syntax that can provide more powerful editing capabilities. But for our purposes, it forces one to keep your hands on the keyboard and DO NOT TOUCH the mouse. The mouse is the worst enemy of a writer.

Also, side note GRRM is famous for using the ancient word processor WordStar, Joe has a mode called jstar which will give you the same keybindings but on modern hardware and not windows. So know that I am not the only one and not just some rando kook that thinks this type of workflow is important.

Ctrl-K + s - Save
Ctrl-K + x - Save and Exit

git – I use a private repo hosted on bitbucket to track changes to my writing folder under Dropbox. This gives me two things, 1) another off-site backup 2) Revisions – If for some reason I’ve deleted a bunch of text (or wrote a bunch of junk), but I happen to have that document saved in an older revision, I can pull that back locally and revert or merge those changes back into the WIP document. Once I’m finished with a day of writing I check it into git and I can keep track of progress, changes, and goals.


Fun things:

Some scripts and tools to build your arsenal. For more up to date scripts and tools check out the Github I contribute to.

Creates a skeleton of files and directories for a manuscript. I generally execute this after I have a full outline and am ready to start the first draft.

# Builds Story Skeleton
# ./ nameofstory
_build_struct() {
   s_oneword=`echo ${story//[[:blank:]]/}`
   echo ${s_oneword}
   mkdir -p ${s_oneword}/{manuscript,notes,assets,misc}
   touch ${s_oneword}/manuscript/${s_oneword}
   echo "# ${s_oneword}" >> ${s_oneword}/manuscript/${s_oneword}
   echo "Init Date: `date +%Y%m%d_%H%M`" >> ${s_oneword}/manuscript/${s_oneword}
   touch ${s_oneword}/notes/
   touch ${s_oneword}/notes/
   touch ${s_oneword}/notes/
   touch ${s_oneword}/notes/
   touch ${s_oneword}/notes/
   touch ${s_oneword}/misc/
   touch ${s_oneword}/misc/
   touch ${s_oneword}/misc/
   touch ${s_oneword}/misc/
   touch ${s_oneword}/assets/
   echo "Story Skeleton for ${s_oneword} created"

if test $1; then
   _build_struct "${1}"
   echo "Usage: $0 nameofstory"
exit 1

Simple countdown timer for writing sprints

# Countsdown in seconds to zero
# ./ 5 - 5 minute countdown
if [ $# -ne 1 ]; then
    echo "usage: $0 MIN (example: $0 1)";
    exit 1;
while [ $CUR -gt 0 ]
   CUR=$(($CUR - 1))
   sleep 1

for i in {1..10}
   echo "!!!!FINISHED!!!!"

More Scripts can be Found on Github


Dictionary and Thesaurus

  • How annoying is it when you are stuck for a word and you have to break away from your writing and go research? A couple simple tools for creating Dictionary and Thesaurus lookup tools that one can execute from the command line and get back to work without breaking their focus.
$ sudo apt install dictd
$ sudo apt install dict-gcide #English dictionary
$ sudo apt install dict-moby-thesaurus #Thesaurus dictionary
$ dict -i gcide [word] - lookup local definition
$ dict -i moby-thesarus [word]- lookup local synonym
# Add commands to .bash_aliases so you don't have to remember them
# joe ~/.bash_aliases
alias thes='dict -d moby-thesaurus'
alias dic='dict -d gcide'
alias thesa='/home/name/scripts/thesalt'

thesalt – an alternative lookup script. One can extend this script to grab pretty much any text-based webpage and pull it down for local viewing.

# Command line thesaurus

BROWSER="/usr/bin/lynx -source"
HTML2TEXT="/usr/bin/html2text -style compact"
if test $1; then
   echo "Usage: $0 word"
   exit 1

Late Night

For the late night writing sessions, I absolutely recommend Redshift or F.lux for turning the white light down and bring a more natural yellow light to your screen. It has helped me tremendously with reading and focus.

Wrap up

So why is a person that should be most concerned with prose and dialogue so busy writing scripts and building such a technology-focused environment? Simple, Control, no other suite of software has given me this much control and complete ownership of my own files. The technology used here will not ever run out or expire or age out of usefulness as I myself will do. It is timeless and thus it can continue on for as many stories as I dare to write.

This is all very subjective and I’m not in anyway trying to claim this is the BEST or only way to write, but I have found it to be very effective for me. If you are feeling like the tools that you are using are holding you back for whatever reason, don’t ever be afraid to try. I can help and would be happy to provide advice to get you setup.