Ensō: design constraints of a focussed writing tool

61 pointsposted 3 days ago
by rpastuszak

36 Comments

luqtas

3 days ago

you can always install Emäcs and put this at your init.el file;

(menu-bar-mode -1)

(scroll-bar-mode -1)

(tool-bar-mode -1)

pronto, a solid decades old platform that is privacy oriented (whatever that means on text editors); runs flawlessly on Android too, has an easy sync with Syncthing (just add (global-auto-revert-mode) for real-time synchronization) to your computer/server; ALL shortcuts are customizable so you can set Copy/Paste/Cut to whatever is most ergonomic and crazy stuff like accessing your ibuffer with i-search mode for an easy navigation at your files that's keyboard-centric but you can use your mouse with its buttons doing whatever you want/set, just fine; org-mode...

it can even run on a, distraction free, terminal ^-^

methyl

3 days ago

This is truly an infamous Dropbox comment moment https://news.ycombinator.com/item?id=9224

spudlyo

2 days ago

Is it though? That comment recommended a hodge-podge of open source tools to approximate what Dropbox offered in as a complete solution. GNU Emacs literally has a several decades head start on any new niche electronic writing tools and is, in my estimation, a towering achievement in this space.

DoingIsLearning

2 days ago

Warning: this comment may offend some in the Emacs community.

> GNU Emacs literally has a several decades head start on any new niche electronic writing tools and is, in my estimation, a towering achievement in this space.

I love Emacs but I had to spend more time that I would like to admit making changes to my init file in the first months of seriously using it. The 'average' user expects to be able to hit the ground running with reasonable defaults.

A large fraction of my (blasphemous) changes was of course overriding keyboard shortcuts to match the expectations that average users have of what keyboard shortcuts should do, in at least the last 40 years of software. I don't have the mental bandwidth or appetite to learn incantations.

So to me I see emacs as a tool no different from Notepad++/VS Code but a tool I can actually open the hood and mod to my needs/preferences that also happens to have a huge community that I can leverage with all the packages and minor modes.

However, neither of this is realistic or practical as a key turn solution for the 'average' user looking for a distraction free editor.

teddyh

2 days ago

> A large fraction of my (blasphemous) changes was of course overriding keyboard shortcuts to match the expectations that average users have of what keyboard shortcuts should do, in at least the last 40 years of software.

You mean the same thing you can get by clicking the checkbox under OptionsCut/Paste with C-x/C-c/C-v (CUA Mode)? (And then, OptionsSave Options to… save your options.)

Some people really like to exaggerate the difficulty of Emacs, and claim that they spent ages modifying their .emacs files to do what is really the simplest of settings.

DoingIsLearning

2 days ago

(bind-keys*

    ;; file operations

    ("C-o" . find-file)         ; open file

    ("C-s" . save-buffer)       ; save file

    ("C-S-s" . write-file)      ; save as

    ("M-Q" . kill-this-buffer)  ; close file

    ;; folder tree

    ("C-d" . neotree-toggle)  ; toggle hide/show folder tree

    ;; buffer content operations

    ("C-a" . mark-whole-buffer) ; select all

    ("C-f" . isearch-forward)   ; find in file and highlight

    ("C-S-f" . query-replace)   ; find and replace

    ("C-z" . undo-tree-undo)    ; undo

    ("C-S-z" . undo-tree-redo)  ; redo

    ("C-c" . kill-ring-save)    ; Copy

    ("C-x" . kill-region)       ; Cut

    ("C-v" . yank)              ; Paste

    ;; font size

    ("C-+" . text-scale-increase)

    ("C--" . text-scale-decrease)

    ;; Pane/buffer switching

    ("M-1" . other-window)      ; toggle

    ("M-2" . previous-buffer)   ; previous
 
    ("M-3" . next-buffer)       ; next 

    ("<M-down>" . split-window-vertically)

    ("<M-right>" . split-window-horizontally)

    ("<s-up>" . shrink-window)

    ("<s-down>" . enlarge-window)

    ("<s-left>" . shrink-window-horizontally)

    ("<s-right>" . enlarge-window-horizontally)

    ("M-q" . delete-window)     ; close window

    ;; launch term

    ("M-0" . term)

    ;; code folding

    ("M-e" . hs-show-block)

    ("M-E" . hs-hide-block)

    ("M-h" . hs-hide-all))
edit: Added extra line breaks otherwise the comment text seems to be treated as a single block of text.

Arguably some of these are not standard anything (just something I was happy with) but equally there is also a lot of normal stuff people are used to in several software applications for many decades now.

teddyh

a day ago

I would still recommend using CUA Mode over simply rebinding C-x, C-v and C-z. CUA Mode does a few more things than that, and is smarter about it: <https://www.gnu.org/software/emacs/manual/html_node/emacs/CU...>

Also, you can prefix code blocks by two extra spaces on each line:

  (bind-keys*
   ;; file operations
   ("C-o" . find-file)         ; open file
   ("C-s" . save-buffer)       ; save file
   ("C-S-s" . write-file)      ; save as
   ("M-Q" . kill-this-buffer)  ; close file
   ;; folder tree
   ("C-d" . neotree-toggle)  ; toggle hide/show folder tree
   ;; buffer content operations
   ("C-a" . mark-whole-buffer) ; select all
   ("C-f" . isearch-forward)   ; find in file and highlight
   ("C-S-f" . query-replace)   ; find and replace
   ("C-z" . undo-tree-undo)    ; undo
   ("C-S-z" . undo-tree-redo)  ; redo
   ("C-c" . kill-ring-save)    ; Copy
   ("C-x" . kill-region)       ; Cut
   ("C-v" . yank)              ; Paste
   ;; font size
   ("C-+" . text-scale-increase)
   ("C--" . text-scale-decrease)
   ;; Pane/buffer switching
   ("M-1" . other-window)      ; toggle
   ("M-2" . previous-buffer)   ; previous
   ("M-3" . next-buffer)       ; next 
   ("<M-down>" . split-window-vertically)
   ("<M-right>" . split-window-horizontally)
   ("<s-up>" . shrink-window)
   ("<s-down>" . enlarge-window)
   ("<s-left>" . shrink-window-horizontally)
   ("<s-right>" . enlarge-window-horizontally)
   ("M-q" . delete-window)     ; close window
   ;; launch term
   ("M-0" . term)
   ;; code folding
   ("M-e" . hs-show-block)
   ("M-E" . hs-hide-block)
   ("M-h" . hs-hide-all))

spudlyo

2 days ago

Consider the audience we are writing for, I believe many of us who read Hacker News have greater aspirations than that of the ‘average’ user.

user

2 days ago

[deleted]

leovingi

2 days ago

But it's true. I've written a novella-length book in emacs org mode and using a simple keyboard shortcut ended up with a generated ready-to-upload-to-KDP PDF.

As far as writing tools are concerned, nothing else has come even close and that's with very minimal config tweaking.

rpastuszak

2 days ago

I get this comment quite often tbf, but I enjoy the slight variations of configs people share :)

spudlyo

3 days ago

There is also the writeroom[0] and olivetti[1] modes for Emacs that focus on a distraction free writing experience.

[0]: https://github.com/joostkremers/writeroom-mode

[1]: https://github.com/rnkn/olivetti

DoingIsLearning

21 hours ago

I didn't know Olivetti minor mode and I'm loving it.

I am writing a research proposal now with Olivetti. Came back to this thread to thank you.

Also thank you to Paul Rankin for bringing back this nice focus mode of vintage computing.

ashton314

2 days ago

I use Olivetti whenever I have a single window visible. So nice.

fyt2024

2 days ago

I would use emacs in a blink of an eye. It is such an incredible and powerful software. Unfortunately it lacks a decent editor.

ashton314

2 days ago

Alt-x package-install RET evil RET Alt-x evil-mode RET

Har har, and I'm sure you know about that. What's neat though is that snippet should work in plain stock vanilla Emacs—no need to setup package sources! Emacs 29 has gotten some much-needed improvements.

curtisblaine

2 days ago

Syncthing, by the way, is discontinuing their Android app.

jdougan

2 days ago

No fear, there is a fork! Called, imaginatively enough, Syncthing-Fork.

fipar

3 days ago

I second your suggestion.

Or, alternatively, do as I did and just have an entry for darkroom-mode in your visibility Hydra :)

luqtas

3 days ago

this 10 year old package was updated only 4 years ago! does it still works? /s

jpcom

2 days ago

in Clojure we come across this question all the time, it's really quite a delight when you realize that packages do not have a "Done" category on github; for some languages they need it.

teddyh

2 days ago

Ëm̈äc̈s̈?

w-m

3 days ago

I like the app and don’t need any customization options. Downloaded it after an earlier HN discussion I think.

The workflow of typing, then selecting a file name to save at the very end makes me somewhat uncomfortable. What happens if the app or the computer crashes? Will everything be gone?

This stops me from writing for really long sessions in there. Don’t want to type for an hour only to find everything is gone.

rpastuszak

2 days ago

OK, so:

- almost every keypress is saved (+ the size limit is in MBs), so there's no need to worry.

Having said that, this is really useful feedback - somehow it has never occurred to me that this is not obvious, which is silly. That's on me of course. Thanks!

I'll: - add a save shortcut (for forced save) with a visual cue (e.g. a toast saying "saved") - add better copy + another way of marking occasional save points

If you have more suggestions, shout.

turnsout

3 days ago

Man, best of luck: "simplicity" and "personalization" are in pretty tight tension. Should inspire some interesting solutions!

rpastuszak

3 days ago

Yup, that's one of the reasons I've been quite hesitant to add any features of the past few years!

I think it boils down to:

- intuitive vs. learned design (think: a window with a big X button vs. a terminal;) - limiting scope creep (so far I've been ok with that in Enso)

So:

- the UI will have a hint of the additional features (more visible on the first load), BUT - it should be perfectly accessible, intuitive and visually appealing to new users (that's easy, because this app from a technical pov is a dumbed-down text field with autofocus on)

An almost perfect example for me would be Winamp/WMP in 2000-2010s. You'd know instantly how to play your MP3s on it, but if you're curious/bored enough, you could customize the hell out of it, make it yours.

Another one would be... a wallet with custom artwork! or, any small practical item that is often customized or personalized.

So, something that feels mine but is also transparent, doesn't get in my way.

(I'm still thinking about finding the right way to describe this concisely. If you have better examples -- shout)

turnsout

2 days ago

Yeah, sounds like you want something that has a simple and approachable UI but allows you to dig deeper when you need to. Not to point you to a competitor, but check out what iA Writer does with the UI on the Mac. While you're typing, it feels like there's no UI at all, but when you move the mouse, you get the full range of Markdown editing features.

jpcom

3 days ago

"It doesn't get in my way, it doesn't try to extract value from me."

How am I supposed to pay my internet

jarko27

10 hours ago

Wow. I just found Ensō and it's freaking awesome. I often use focus mode in IDEs if available. Probably I'm going to try it instead of my Obsidian.

Also, I wish something similar existed for mobile as well.

James_K

2 days ago

A lot of the elements on this website overlap eachother.