Design ● OS ● Apps ● Whiteboards ● GNOME Shell ● System Settings ● How to contribute
Contents
Writer Application
This page aims to design a delightful GNOME application for casual writers, bloggers, journalists, novelists, &c.
Status
Needs design
Design in progress
Needs implementation
Implementation in progress
Stable
Designers
AlexandreUltré (Please notice that I'm not a designer and drawing is my Achilles' heel: I'm sorry for the lack of pictures and ask for help on this point)
Goals
Primary:
- making easy and pleasant to focus on what we're writing
- support for plain text and lightweight markup syntaxes
auto-saving (see No More Saving)
- file management into collections (explained below)
- export to other syntaxes
Maybe later (not detailed below):
support for non-lightweight markup syntaxes such as HTML, DocBook, LaTeχ, or MediaWiki
- support for lightweight WYSIWYG like RTF
- publishing into blogs
- dictation (that one would be really nice)
- import module (see Trelby in Relevant Art section)
Non-goals:
- printing, page preview or desktop publishing (even if Scribus is unusable)
managing presentation (I insist: this is a tool for writing)
- suggesting informations to authors (there is Wikipedia for this)
support for non-lightweight WYSIWYG (there are export & Abiword/LibreOffice for that)
- making the coffee (I prefer tea)
Relevant art
Before I switched to GNU/Linux, I was working on Mac OS X, where there are many applications specifically designed for writer. I tried some of them:
Notational Velocity (and its little brother nvAlt) are definitely some of my favourite writing applications. I used Notational Velocity as a main collection (for my notes, drafts & other generic texts) and nvAlt for my blog articles. From those I took the idea of collections, the powerful search, the mouse free interface, and the auto-saving paradigm.
iA Writer is the other writing application I used a lot, this time for writing fictions and administrative documents such as the status of my associations. I also tried the first version of Byword, but these two software are almost the same and a few details are better in iA Writer so I did not used Byword a lot. Whatever, I enjoyed their clutter-free interfaces with large, comfortable margins (plus the interface is hidden when you type), the light syntax colouration that grey markups, iA Writer's blue cursor (you always know where you are), the nice preview mode, the complete export module, Byword's on-demand dark theme, and, most of all, iA Writer's absolutely delighting focus mode, where all text is greyed, except for the current sentence you're writing, and where the cursor is horizontally centred.
Espresso is more for code than for writing, but I sometime used it with Markdown syntax colouration for texts with a lot of headers, because of its navigator. That would be nice to have something like that, but optional (hidden by default).
I also tried Day One, which has a very nice interface and is really good as a diary. I would have used it for my blog if it didn't had its two worse cons: it saves entries in a database instead of files, and its export module is not complete. We might have a look at its calendar view and list view for listing texts in a collection.
But now, I'm on GNU/Linux and I searched for equivalents of these applications. In vain (OK, almost in vain)… I explain:
There is no equivalent to Notational Velocity & nvAlt. The nearest is Tomboy, which is WYSIWYG and has a specific file format. I work for many text files with other people, who use different environment and applications than me. Plain text files possibly with lightweight markup is needed.
Pyroom and FocusWriter are clutter-free, but they lack of being pleasant to use. I even prefer to use Gedit, which is not really clutter-free.
Trelby is very good when writing scenarios, but not for other kinds of texts. That's normal: it's made for screen writing. But its import module and its support of Fontain might be nice… maybe to add later.
Recently, I've seen some discussion on LinuxFR (that's in French) about a that very same subject. I discovered UberWriter in it, which seems to be a good equivalent of iA Writer. Please notice in the future function sections the “drag-and-drop link and image inserting”; that could be very nice (with, in addition, a keyboard copy/paste operation that does the same).
Tentative design
Because of my pitiful drawing ability, I'm going to design our application through a usage scenario. But before that, please notice this tentative design is thought for a left-to-right language and might be adapted if it's not the user case… With that in mind, let's open our application.
Entering Writer
The first thing one may see is a GNOME Documents-lookalike window, with, on top, a search field already selected. The search engine searches into documents names and content (and may be used through the search field of the activity view). If one searches something and there is no result, pressing Enter will create a new document in the main collection or in the collection selected. On the top bar, one can see:
- on the far left, the collection drop-down menu (I'll explain later what is a collection), displaying “All Collections” or the selected one,
- centred, the search field,
- on the far right, a “New” button and the close window cross.
Then, if one goes in the application menu, he'll see the same menu as in Documents, except three things: there is a “Collection…” option (that allows the user to edit collections or see some statistics about them), there is a “Keyboard Shortcuts” option, and the views are “List” and “Calendar”. There is no grid view because it's irrelevant for text, and calendar view is proposed because we often think of “the text I've written yesterday” in order to edit it, and to adapt us to the case of students taking notes of lessons weeks after weeks. For calendar view, one can inspire from this picture of Day One. For list view, it may look like Documents' list view, except two things: there are no icons, document type or sharing, and the beginning of the entry is displayed just below its title.
Collections
Now that we're in front of our application, what are those “Collection” things? Wiktionary says a collection is “A set of items or amount of material procured or gathered together” or “Multiple related objects associated as a group”. Well, within the context of our application, a collection is a set of titled text entries gathered together. More precisely, a collection is what is gathering those entries together. With that in mind, a collection might be:
- some local database (like in Day One or the default in Notational Velocity and nvAlt),
some distant database provided through GOA (I'm thinking about CMSs, SimpleNote, Evernote…),
- some folder.
There are no sub-collections: the concept of collection is complicated enough.
Now, suppose that we know that a file is in a certain collection: we might use the drop-down menu showing “All Collections”. The very first choice is already selected: “All Collections”. Then, the first collection is “Documents”: that's every text documents that Writer can open in the “Documents” folder. If a user has never created a local collection nor connected a distant collection, then this collection is still listed. Below this one, other collections are listed alphabetically. Finally, the menu ends with “New Collection…” What if we click there? Well, a pop-up window will display and ask us:
- the title of the new collection,
- if we want a database or a folder (if we chose the database, it will propose us to use GOA instead, and if we choose the folder option, to choose the folder),
- what is the default format and, if we've chosen a folder, extension for new entries (for the choice of extension, I'll give you a personal example: my blog articles finish with a .blog.markdown extension).
- to confirm or cancel.
Why is it possible to have several local collections? That is a good question. If you write an isolated file that is connected to nothing, the Document collection is well enough. But the purpose for collection is not to differentiate entries from different services: it is to gather entries that make sense together. Imagine that you're like me a blogger. This would be fine to set all your blog articles together, no? Another example: you're a student and take notes of your lessons on your computer. Just create a Lessons collection! And if you're a blogger and a student? Yes: a Lessons collection plus a Blog collection. A last example, to be sure that it's clear. Writer is a tool for writers, including novelists. Well, if that is your situation, then a collection may be one of your books, with an entry per chapter, plus entries for describing characters, places, or general ideas…
Text edition
But now we want to write a new entry. Good choice. It's easy: we just click on “New”, beside the close button, or type Ctrl + N, or, if we already know how it'll be named, we type the title of our choice in the search entry and press Enter (but be careful: if there is something left in the list (or calendar) of entries, pressing Enter will… enter the first of them! To be clear, a “blank” screen might display “Press Enter to write a new entry”).
Now, we're in the editor itself: a central text field with large, comfortable margins, a top bar and an inconspicuous status area in the bottom centre of the window. The text of the entry is left aligned, justified, with active hyphenation. The font is monospaced and responsive (see this blog post from iA, and this one too). The markups are greyed (except for headings and list items, which are in the left margin) and text with emphasis (resp. strong emphasis) are italicised (resp. italicised and underlined with a grey line).
The top bar still has three areas: some going back button with some to-the-left arrow on it on the left side, the entry title at centre and a menu button with a wheel on it beside the close button. One can modify the title by clicking on it (or through Ctrl + L) and an untitled new entry is titled “Untitled”. The wheel menu show these options:
- Rename… (selects the title for modification)
- Duplicate (this is a background task)
- Move to Collection…
- Copy to Collection…
Language ↓ (for auto-completion & correction (see below for details); default is system's language)
- Correction…
- Go To ↓ (display a list of the headers as a sub-menu: the cursor will be moved to the header selected)
- Find (allows regular expressions)
Find & Replace (idem)
- Focus Mode (see below)
- Night Mode (i.e. dark theme) (Day Mode if dark theme is active)
- Preview
- Export…
- Revert Changes (since the document has been opened; can be undone with a Ctrl + Z)
All this top bar hides itself when we start typing. It displays back when we move the mouse or stop typing for a few seconds.
The status area shows two things: the number of words written and the number of characters written. When some text is selected, the status area counts words & characters only in selected area, and is shown as selected too.
Please notice there is no way to save: GNOME Writer uses an auto-saving paradigm. The file is saved every 30 seconds, plus when we close the entry (when we go back to the entries list or close the window). But if we close the entry without having named it, some pop-up propose us to give it a name, to eventually move it or copy it to another collection, or to move it to trash without naming. The closing of the entry is also the good moment for the application to propose correction to the user. In addition to that, if you close an entry and come back to it , you'll still be able to undo previous things done: the application keeps full history of editions.
Last but not least, we can add two nice features for the win:
When you copy or drag & drop an URI to the editor, a link pointing to this URI will be copied instead (but you can undo it and come back to the URI with Ctrl + Z), using the syntax of the entry.
When you copy or drag & drop a picture to the editor, it will be copied to the collection folder or local database or will be uploaded to the distant database (bonus: when you move or copy the entry to another collection, the picture(s) moves with it) and create the markup for displaying it, using the syntax of the entry; same with weather conditions if picture has also datetime. Here is an example with Markdown: ![Please add alternative text here](photo.jpg "Photo taken in Lille; it was sunny with 25° C.")
Focus Mode
Our very first goal with Writer is to make easy and pleasant to focus on what we're writing. The main goal of Focus Mode is to easily and pleasantly allow the user to focus even more on what he's writing. Concretely, the editor's Focus Mode is a “Normal Mode” with the following differences:
- The top bar and the status area are hidden, even if you don't type anything. You'll need to move the mouse to make them appear.
- In the same way, the mouse pointer will be hidden, except, of course, if you're moving it.
- The active line (the one with the cursor) is horizontally centred.
- All text is greyed, except the active sentence. Some options are proposed in the preferences, in order to focus on paragraph instead of sentence.
Preview Mode & Export
You've written a great article and want to see how it may look without all these markups. That's a very good idea. Let's go to the wheel menu and select “Preview” (or simply use Ctrl + P). The window may not look like different, but if you look closer, there are a few changes. First, your text is kind of WYSIWYG, like a web page. The status area is still the same, but the top bar changed a little. The back arrow leads to the editor, and the title (which now cannot be edited) is now “Preview of [add title here]”. The wheel menu has changed too, and contains these options now:
- Exit Preview
- Go To ↓
- Find…
- Night Mode / Day Mode
- Export…
Copy as ↓ (proposes to copy as HTML, LaTeχ, or Plain Text (this one means we copy the text without the markup))
Now that you've seen how your document may look like, and that you're happy with that, you may think it is not a working document any more, so you want to crate a PDF with it. Fine, so you click on “Export…” in the wheel menu. Before to let you export, GNOME Writer has analysed your entry and detected some misspell or possible error (see the correction tool below for more details): well, it opens the correction tool first and, when you've finished with that come back to exportation. Some pop-up appears and let you choose your exportation format. Possible formats are numerous, since Writer uses Pandoc.
At this moment, I don't know if we might let the user choose where to put the exported file, or if we might simply ad it in the same collection, or, regardless to the source collection, in Documents. What to choose? A possible solution may be to have a two options choice: “Place exported document in [name of collection] or Choose Location” with a link on the two final words.