Show HN: I wrote an entire book to build a mouseless dev environment
themouseless.dev
themouseless.dev
That was me, 6 years ago. My colleagues were pushing me to try the tools they were already using for years. They are very good developers, so at the end they convinced me to look at them.
I had to admit I was wrong.
I fell in love with these tools. From there, I built my system step by step, configured it as I wanted, according to my own needs. I had the feeling that I was more efficient with it, but more importantly I really enjoyed using it.
Fast-forward 2 years ago. An idea popped up in my mind: what about writing a book to pass on all the knowledge I had about this kind of mouseless development environment? What about enabling every developer to build their own system if they wanted to?
After shortening a trip in Asia beginning of 2020 because of Covid-19, I came back in Berlin without any job or even a flat, only some clothes and my old Lenovo x220. Fortunately, I found a temporary place to live where I decided to write this book.
I've spent hundreds of hours on it, and now I'm really proud to finally release Building Your Mouseless Development Environment, where I explain in detail how to build a similar system to the one I use every day. This system is based on Arch Linux, i3, Neovim, Zsh, and tmux.
The goal is not to impose a particular workflow; I tried to explain every single shell command and piece of configuration for the readers to be able to shape their systems to their own needs.
If you're curious, you can read the first 30 pages of the book, including the whole table of content there: https://matthieucneude.com/building_mouseless_environment_sa....
If you want to know how this system looks, I've made a short video (https://www.youtube.com/watch?v=67lbLKTm91U) describing the one we build in the book.
Last thing: If you already know and use all these tools, you won't learn much from the book I'm afraid.
Any feedback, positive or negative, is welcome!
Hah! If I kept count of every time I heard that about Vim, and then went ahead and read the article and learned yet another new thing about Vim, well, I'd be getting pretty good at Vim...
Don't sell yourself short. Even just seeing how others use the same software you use can be eye opening. I'm going through the linked PDF now.
One question: what did you use to make the book itself? I noticed the links in the chapter don't work, at least in Firefox's PDF reader, so if that is unexpected it might be a point to improve.
About selling myself short: you're probably right. I'm struggling with imposter syndrome, like many, so I've a tendency to do that. At the same time, I'm trying to be honest and I don't want to deceive people.
This makes one feel like a broken record, but this compels me to mention that there are major differences between 'gratis' and 'libre'.[0]
Open-source/free and for-profit are not at odds with each other. They describe different ideas.
Pretty much, yes.
Seriously, maybe I'll write in 10 years "I was wrong: just install Ubuntu and you'll be happy". It will be a very short book though... but it's good to change and not staying in our little bubble.
I think part of is is that varying my environment keeps me more conscious of what I’m doing and helps me avoid falling into ruts of behavior.
I tried Ubuntu a couple of months ago, as well as other distros (elementaryOS, Linux Mint, and Manjaro). For Ubuntu, it's better than before. These distros had some interesting ideas, but I'm still very happy with my system :D
I don't have any number, that's true. But I know that I enjoy using this system way more than any other I tried (including many "easy-to-use" Linux distros, Windows, or macOS).
As a result, when I discover this way of working, I began to participate way more in open source projects. In general, I didn't only like the result of what I was doing, I liked the way too. It changed everything for me.
I don't think we should always focus on the tools but more what we're creating with them. But if you use tools you truly enjoy using, I'm sure your productivity will increase as well.
This book is not to impose a system to anybody, it's more to dive into Linux and another way of working. That's why I explain everything in details: for anybody to shape their system and swap their tools as much as they want.
- read code - check docs - write code - test and look at logs
I use the keyboard for 80% of my work and regularly people (including devs) are in awe of the speed of my movements. I would even go so far and say that it improves Flow (psychology) by reducing mental overhead (muscle memory).
Best wishes! :)
That's a good point. To me, the speed is not the first appeal for this kind of system, but more the flow as you say, and it's difficult to demonstrate that on a video :D but I'll think about that for sure.
I just wanted to mention that a few years ago I swapped over to dwm from i3. If you haven't tried dwm before (it seems relatively little-known these days), then it might be worth spending an afternoon trying it out to see whether it suits your workflow as well as it does mine!
It's a lot more opinionated than i3, but if its opinions happen to match yours then it requires even fewer keypresses to zip windows around!
I had a newsletter, and my subscribers were super helpful. Seriously, without them, I wouldn't have finish the book. I thought about keeping the newsletter, but I already had one for my blog. So I simply asked them to switch from one newsletter to the other.
I'm not sure it was a wise decision, but maintaining two newsletter, a blog, and a book was a bit too much for me. I'm still thinking launching a newsletter about mouseless tools though, with tips and tricks; maybe later.
Similarly, there are several tiling window managers. A neutral description of the options and links to resources might have broader appeal. Text editors are another place where the right tool varies among people.
I guess what I am getting at is "highly opinionated" is better suited for ongoing processes than it is for soft goals. Arch Linux is highly opinionated. This makes reasoning about the ongoing process of maintaining a Linux installation consistent. The strong opinions of Arch Linux are orthogonal to the goal of switching to a tiling window manager. Ubuntu has a different way of reasoning about system maintenance that might offer less friction for other people. Tiling window managers are not dependent on distribution.
I'm not trying to change your opinion. Rather, I think that there are ways to make the book a more useful resource for more people by broadening it to "here's how I do it and here are some other ways that might work better for you."
Good luck.
1. You write something broad as you say. You present many options to the reader. The book is not practical anymore, because you don't speak about something in particular but some general ideas. As a result, the readers can't really practice with a concrete project, and they might end up lost in an ocean of links. If I wanted to do that, I would have created another "Awesome list of Linux tools" on GitHub.
2. You write something more focused, as I did: the readers can practice, you can describe and explain everything they're doing because the focus is more narrow. You eliminate a whole class of problems as well, because you know exactly the tools they're installing and using. As a result, you enable them to understand what's happening.
I went for the second solution, because I think we lack books which are really practical. I wanted the readers to be actively engaged into a project, learn by practicing, and be able to swap every tool they want afterward. Because they'll have a deeper understanding of Linux, a modal editor, a tiling window manager, and so on.
It's not because I use these tools that I want to impose them to the world. I choose these tools for the book because they allow the reader to understand what's happening under the hood. Even if I was using another wm or another distro, I still would go with these tools, because it allows me to teach what I want to teach. Because they're not too difficult for beginners if you explain them right. I think people are smart, and I think they can learn way easier than most people think.
To me, Ubuntu is highly opinionated. Who cares? It's not about me, it's about what the readers can learn from the experience. I'm not convinced you learn a lot by installing Ubuntu, or that you understand the benefits to work with a tiling manager, or you understand the important place of the shell in the Linux ecosystem.
Thanks for the good luck :)
The information available on the internet is vast, as authors it is more often our job to surface, connect, and curate a tangle of information to give readers, as you said, practical direction.
As personal choices backed by experience it’s a different context than a tutorial for others.
That’s what I am saying.
For me: I'd LOVE this book. I've been around the block, but don't know everything I know I could. Your criticism doesn't seem to have much merit when clearly there is a market for this book and clearly the potential buyer should be trusted to decide whether this book is right or not.
But there are still differences; I speak about them at the beginning of the book. For Arch Linux, the three important ones are for me:
1. Installing it teaches you quite a lot about Linux-based system. If you have any problem with another distro, you'll know pretty well what happens under the hood and you'll be able to debug the problem more easily.
2. Arch is a rolling release, which means that every program you use will be up to date. No need to wait for the next LTS like other distros. It has some drawbacks, but I think the benefits outweigh them.
3. It let you choose exactly what program you want. It doesn't install much by default. Freedom is important for me, and Arch just gives me that.
And did I speak about the crazy amazing Arch Wiki? And the repos which have... everything? Sorry I stop, I'm doing my fanboy here :D
The target audience obviously won't be a someone who already loves to tinker with a lot of different setups.
A book like this will be much better if it introduces an opinionated setup to follow.
Textual interfaces (e.g. code), reading, navigating filesystems, etc. is inherently discrete (folders have files, files have words, words have letters). For discrete applications such as these, I (and many others) prefer mouseless modes of interaction. A mouse can point at many different precise points for a given character in a word, but it's still the same logical place.
(Yes, I'm aware that pixels are finite and thus the continuous analogy is "technically incorrect". Its validity stands.)
That continues vs discrete actually makes a lot of sense. That analogy helps me put a finger on things I wasn't to articulate before.
No need to learn for weeks, it's:
-j/k for scrolling
- J/K move around tabs
- f to click a link
- gg/G to go to the top/bottom of the page
- o to enter new url
Not exactly the most intuitive keywords if you haven't used vim, but you try that a couple hours and then using a mouse feels like clicking edit -> copy instead of doing ctrl-C.
* arrow keys/PgUp/PgDn for scrolling
* Ctrl-PgUp/PgDn for switching tabs
* Home/End for top/bottom of page
* Ctrl-U for source
* Ctrl-L for switching to the omnibox
* etc
I guess some people might wince at the fact that they have to touch the arrow keys or Home/End/PgUp/PgDn, but my keyboard has those keys and I'm used to it.
Using the arrow keys makes the page scroll jerkily, in a way that complicates reading while you move. Using j/k (or u/d for fast scrolling) produces a smooth result similar to scrolling with the touchpad or a phone/tablet scroll.
I mean in the end, who really cares though? Whatever is comfortable to you is probably the best choice.
map c LinkHints.activateMode action=hover
You can change c to whatever key you want to trigger it. It works perhaps less often than I was hoping for, a lot of menus still won't work, presumably because they use JS or something else to trigger the menu.Easy to learn, hard to master. That's what I like, because you never stop learning.
The average confused user will probably do better randomly mousing around than trying to juggle keys, or even worse "visually" navigate using arrow keys or something.
But if the interface is powerful and the user is skilled (both significant "ifs") then important operation can be done before your hand would reach the mouse, let alone do anything with it.
I suspect the most efficient is a mix of both, mice are pretty good at selecting from a long list of options, for example.
A lot of IDEs these days contain pretty underpowered editors and slow you down by relying on the mouse too much. If that's all you've tried, you may not have any idea why keyboard interfaces can be a lot more efficient for some tasks....
It's what I tried to do. I don't know if I succeeded, but so far I had only positive return, so it's encouraging :)
About the mix of both: I agree if I'm a long period on my keyboard or on my mouse, but not interleaving the use of both.
Agree context switching between both too much is a pain.
`dap` was simpler for me and is easily repeatable with `.` in vim.
Either way, you're not touching the mouse.
I guess if you include chords of modifier keys, you could have 2⁴×4 possibilities, which would be extremely competitive with vim in this regard, although I haven't encountered an editing environment that did that. (That's not to say that it couldn't exist.)
I consider myself a proficient but unsophisticated vi user, and I seem to have at least 19 cursor movements that can be combined with selection or deletion in my muscle memory, in the sense that I would regularly use them without being consciously aware of how I chose one movement command rather than another. And that's not counting the ability to prefix them with repetition counts, which is usually a more conscious activity for me. I know that vim provides another dozen or more that I've never learned well, but it seems like other people have.
It does take time to internalize these, which is one reason we see so many people making "learn vim" games and tutorials. And I could imagine that they might not be the exact selection of movements that someone would find optimal, let alone easy to remember or articulate.
If speed and subconscious operation are the goal, then it's best to stick to as much keyboard only as possible, or alternately to learn to maximize the one hand keyboard + mouse approach (which can actually be very fast once you know your tools).
In any case, keyboard-only interfaces make the assumption that you know all of the shortcuts for each program you use. And boy they are inconsistent. They also offer zero discoverability for someone that did not read the manual (see the vim jokes). I like software that offers both good pointer UI + robust keyboard shortcuts for those who have learned the ins and outs and need to go faster.
Like other endeavors of growth, a good approach is to regularly make a small effort to learn a little more about something (like your tools, which includes keyboard shortcuts).
As one simple example, if you have a URL somewhere and you want to quickly open it in a new window, you just use the keyboard shortcuts to copy (which hopefully everyone knows), switch to browser (alt-tab or cmd-tab or even [cmd-space fire return]), ctrl-t or cmd-t to open a new tab, paste, return). This sequence becomes so hard-wired that you can go from seeing a URL to reading it in a new tab in a couple of seconds. And since it is hard-wired, your train of thought is not interrupted with common small thoughts like, "hmm where is my mouse pointer? wiggle mouse - ahh there"
But like I also suggested, with left hand on the keyboard and right hand on the mouse, and knowing a few very common shortcuts, you can be very fast at getting things done.
In both cases, knowing keyboard shortcuts is... key.
Lastly, there are some awesome tools like Keyboard Maestro or possibly Hammerspoon (I use the former, but have heard the latter is decent). With a bit of effort, you can make some really useful macros and do a lot. Heck, even just using Automator can do wonders. For example, it's pretty easy to make a file right click action that will resize and export an image into one suitable for web publishing.
The summary of all this really is that learning your tools makes you much more effective and performant. Seems obvious, but it's easy to forget.
Most of my time isn't spent slicing and dicing snippets or juggling windows. Rather it's thinking, planning, a bit of experimentation, reading, repeat.
And powerful, built-in auto complete with visual IDEs like IntelliJ or PyCharm make them hard to give up.
I just don't devote much time to mastering text editors. In fact I've had to change editors so often that mastery may have been unrealistic anyway.
I'm not sure everybody would like a development environment as I describe it, that's why I invite people to try Vim for example for a couple of week (I've some free articles on my blog about that) or i3, and see what they think about it. Exploring new possibilities is never bad.
About learning the tools: I agree, but you can learn much more from some tools than others. I think of Vim as easy to learn, hard to master because there is so many stuff you can do with it. But I used Intellij IDEs as well for a long time, and I don't think it's hard to master, because there's not so much you can master, except maybe the keyboard shortcuts.
That's why you carefully choose programs that are highly configurable so that you can integrate them seamlessly into your particular workflow.
The reason I use Emacs is not because it's a great editor. It's slow, often frustrating and since adding LSP support it crashes frequently. The reason I stick to it is because it gives me endless customization so that I can decide how I want it to work, instead of the author or some company deciding that for me. Learning to use it is therefore an investment in future time saving since I won't have to worry about it drastically changing or moving to another system if the company that supports it decides to change direction.
Good pointer UI + robust keyboard shortcut is quite good, but sadly most of the GUI applications do not allow you to use a consistent set of keys in different controls, but with vim you can. (use shortcut to open up some form and suddenly the shortcut changes, and rarely you can configure those shortcuts). And having a normal mode really appeals to me, as I don't have to reach ctrl/alt that often with normal mode.
Something I hate for some GUIs: they sometimes change their interfaces without any reason. I think about the whole Confluence thingies (worst interfaces ever IMHO), or even intellij IDEs. When I was working with them, I saw the preference menu changing at least 4 or 5 times. Perfect to confuse me. That's why I accepted to try the tools my colleagues where using, the ones I still use today.
On top these tools allow us to have a configuration in plain text, which is so easy to manage because we have so many mature tools to deal with plain text (git is a great example of that).
That’s why I use the vim plugins for vscode and jetbrains IDEs. Best of both worlds.
> In any case, keyboard-only interfaces make the assumption that you know all of the shortcuts for each program you use
When I use Gimp, I need to know where are the different options I want to use. It took me time to learn where I can find the best tools for my own needs. It's the case for any interface, GUI or CLI.
But where some CLIs really shine: you can customize everything to create your own little world, to bring a consistency between all your tools. That's the real power: flexibility.
It has its drawbacks too, but I the benefits outweigh them big time.
UI gestures are pretty undiscoverable without documentation too; but there's no manuals anymore. Even the books like XYZ: The Missing Manual are few and far between. At least editors from the 80s and 90s have documentation, even if nobody wants to read it.
/rant (not directed at you)
I don't see why I would use a specialized tool for hours a day without reading the manual.
> good pointer UI + robust keyboard shortcuts
vim jokes aside, you can use a mouse with vim, terminal, tmux, etc just fine. I sometimes do, but most of the time I find the keyboard simpler.
Others' needs are different.
So, for example, I use a plugin called Tridactyl in Firefox. It allows me to select any link, any button, or enter any text box in just a few keystrokes. I hit one key to tell it "I want to click something", essentially, at which point it highlights the links & assigns them letters; then I type the letters corresponding to my choice. It's competitive with the mouse.
Firefox isn't too bad without extensions, either, since it has the ' key. (Find, but restricted to links. So, ' + type the link text until match + Enter.)
My work keyboard also has keycombos that I can turn a few of the keys into a crude mouse, but it is so slow that it's usually not worth it.
Browsing code is easy to do with a keyboard - not sure I see how a mouse would improve things.
Browsing web: Firefox has since forever let you go to and open a link by typing a few characters in the link. I'll grant I don't always do it this way, but it is quite fast - unless the link is an image or something.
Finally, if you're one of those people who've had ergonomic pains, then avoiding the mouse can really help (depending on what the pain is).
But yeah, obsessing over not using a mouse is taking it a bit far.
It's not my case. I just think that when you deal a lot with text, like a developer, letting your hands on the keyboard is way nicer, instead of switching all the time between keyboard / mouse.
But I love to use the mouse when I'm on Gimp, or when I do some music, or when I post process some photos. You should use the best tool depending on the task.
(That said, creating a fully mouseless Arch Linux desktop environment is way more hardcore than anything I want to do, especially considering the less-than-stellar stability of desktop Linux.)
To me, "arch is unstable" is more an urban legend than anything else; the best is to try. And I can compare it to everything else I used for years: Win98 (oh my), winME (such a joke), win XP (way better), win 7 (really stable), Ubuntu (I had the impress to come back to win98 each time I was doing an upgrade), Debian (quite good), macOS (quite good because they don't allow you to do anything to crash the system, not nice when you have a problem). And so on.
And it's really not that difficult to install. I've one more chapter after the sample of the book I provide, and then it's done.
Which one? Vimium-FF? How well does it compare to Vimium in Chromium?
I've been wanting to switch from Chromium to Firefox but can't live without Vimium. If it works well, I'll make the switch.
Same holds true if you use excel, shortcut gurus generally far faster to accomplish the same thing.
Back when I used to play World of Warcraft, you could tell the clickers snd how bad they were comparatively against dudes who had hundreds of bindings.
It takes some upfront work to get those keybinds into muscle memory, but once you're over that hump a mouse feels cumbersome and clumsy by comparison.
Someone brought up the difference between modern UIs on here, mentioning that you are often clicking, then waiting, then clicking, then waiting. With a CLI tool you can do all your actions up front and in sequence and then let it run. You don't have to be present for the waiting.
Additionally, the system I describe in the book is centered around the shell, and it has so many good and mature tools for you to deal efficiently with text.
I love the mouse for graphic design, music composition, photography (post processing).
Browsing code is mostly done in an editor with the keyboard, for me. And Googling things isn't exactly something I spend hours a day doing.
Additionally, I make more mistakes clicking slightly outside what I'm trying to click on than I do using keyboard shortcuts which work without precise fine motor control.
Mouse is more finicky in many environments which are not a surface which is not a stable, flat, non-reflective, non-moving, non-vibrating desk.
But most importantly, moving the arm from mouse to keyboard, back and forth, over and over again, creates much strain, which translates to pain and long time-outs.
That said I control my browser with the keyboard and navigate my code from the command line. I suspect have similar workflow / opinions as op.
But I don't think the majority of the community around CLIs and keyboard-driven workflow are like that. It's just we like it, and we see benefits in this approach.
The keyboard is inevitable for writing (if that's what we talk about), so if any, the mouse may be dispensable. And reducing moving parts can help to improve focus.
P.S.: when approaching the cliff, 'retrograde' may be the thing.
(And also, was it not possible to generalize the information so readers don't have to switch to Arch to follow along?)
1. The reader would bump into many more problems because the book is less focused. It's about installing a whole system, so many things can go wrong already, and I wanted to reduce the friction by being precise. To be precise, I needed to know what tools the reader would install.
2. I use these tools because I know they can teach a lot of fundamentals. This means that, when you're done with the book, you should hopefully have enough knowledge to swap anything you want, even the Linux distro.
I think you're on something about the sample. You can look at my blog though, there are many free articles (look at the "mouseless" tag) which are more general and capture maybe better the essence of the book.
I don't think I'll ever read this book, but I want other people to read it. Actually scratch that, the entire world needs to know this is an _option_. This needs to be required reading in K-12 education systems.
EDIT: Is there a paperback copy available?
There is no paperback copy available, because there are many commands and pieces of configuration in there, and I thought it would be easier for everybody to be able to copy and paste.
That said, if there is a demand, I would be happy to look at that.
Last thing: I explain everything in the book, so you don't have to stick with this system at the end, you should be able to build your own depending on your needs. You can swap any tool you want (even the Linux distro if you want), hopefully you should have enough knowledge to do that easily.
Come to think of it, I'm also thinking while typing and navigating so I'm not sure this would save any time at all.
It might _feel_ faster though, which might increase the well-being of some developers.
If you are constrained by the speed of your typing while "programming", you are not really a programmer, you are just a secretary with a typewriter.
You're switching a lot between documentation, your browser, your shell, your IDE, your debugger, and all your tools when you're coding. What I'm describing in the book can really help you not always moving your hand between the mouse and the keyboard.
You think it's not a problem? Well, you should still try to see if you're right. It won't cost you anything: I've many free articles on my blog, linking to other interesting resources too, so be my guest :) I'm sure you'll learn some stuff.
Sure, actual writing is 5%, but the 95% remaining isn't just thinking, so it also benefits from muscle-memory switching to docs/test/code panes.
My dev env is mouseless (I use Vim and AwesomeWM instead, though) except for everything corporate (Gitlab, notably) and it always feels like a drag and slow AF. Only now I added vim-mr-interface and even with its shortcomings it's like night and day.
I used to think this was a property of my aphantasia. However, in recent years, I've heard a lot of people claim that writing is thinking. In fact, most writing out there is an artifact of thought, and not designed to be read by others. Few people recognize that distinction, and that's why good writing is so rare.
However what these kind of books/posts fail to sell is as much as software development is about building code to automate things, at some point in time one wonders if software development itself can be automated to a very large extent. The answer is writing code is a way of hand writing structured text. Therefore code should be generated like the very way we generate XMLs or JSONs. Compilers are a tool does that for a fixed set of syntactical things.
Now is it possible to have some kind of means, methods and techniques for general code editing/generation. Note this has nothing writing code faster. But this has to do with human labor required in achieving a thing. Eg. How many steps does it take to delete 10 lines of code with mouse vs typing 10dd in vim? Scale this problem for 500 lines. And see how deleting with a mouse requires one to execute as series of steps scrolling, selecting, hitting delete vs 100dd. Now how many takes does it take to delete 1000 lines lines? Say selecting 100 lines at a time, scrolling, deleting. Basically 30 steps vs 1 step(1000dd) in vim. Notice how adding more lines to deleting in a notepad'ish editors increases complexity of deletion O(n) vs 0(1) in vim(ndd)
See where this is going?
Now take this one more example. Say you have three tabs. You have to copy 3 lines from the first tab, delete the current line in the next 2 tabs, and paste the copied lines from the first tab. Say you have to do this for 1000 times. Notice how you have to do 1 copy operation in first, shift across 3 tabs one at a time, while deleting lines and pasting them. If you had to do this, just imagine mental and physical labor into this. Now let me introduce you to this cool little thing in vim/emacs called a keyboard macro. You can tell the editor record these key strokes and play it for me n times. Congratulations now you just went K x O(n) to O(1).
Let me make this even more attractive for you.
Let's say for every line of editing in first tab, you had to make 3 edits in second tab, and for every 1 edit in the second, you had to make 10 in the third. Human's were not born for to do this kind of sisyphean tasks. We intelligent species were born to arrive at O(1) from every O(n^k) tasks life has to offer us.
This is just one part. But there are many other examples like this. For example in Apache Pig, its common to write projections like $0 AS apple, $1 AS banana, $2 AS cherry... see no human should hand write code like this. It's not about speed. It's about wasted human labor. If there's structure to something it should generated.
If there's structure to not just code but anything we do it must be automated.
What needs to be taught is to see wasted effort and show us how to save it. Mouse or no Mouse, that's irrelevant.
Every human should refuse to do work, that can be done with a computer.
There are solution for that though, but I find them less convincing than the tools we have using our keyboard. So it's linked, but I agree that maybe this question of mouse / keyboard is not the central one.
It could even be as simple as moving cursor 1000 lines below or above. Or doing bulk operations.
And a quote from there: "The basic summary is cursoring around required a higher level of mental planning to organize the interaction, which apparently obscures the perception of the passage of time--think of being deeply engaged in something and being surprised when you look at a clock-- whereas the use of the mouse was done at a lower, mechanical level that left the mind free for higher things, such as complaining about the mouse."
Don’t be surprised; plan9’s acme is not a popular application and its mouse orientation is too radical for high flying reviewers to grasp the merits of its original workings.
That said, I don’t want to use a mouseless environment, I just want the mouse to be useful and efficient when I use it.
I think it's just that: exploring new possibilities. I'm happy I tried mouse-driven and keyboard-driven workflow, because I could choose what I like the most.
I didn't know about Acme. Thanks for that!
A wacom screen is intuitive, but surprisingly hard to use.
Then there are all of the rsi implications of a mouse. I use a roller mouse that I love, but older members of my family just can't figure that out.
http://blog.tyrannyofthemouse.com/2012/02/ending-tyranny-of-...
Unfortunately, I've had to give up on it for web browsing. Too many sites break the ability of my extensions to pick up clickable elements. I can probably find a long-term workaround, but I'll have to get up to speed on low-level details of what's going on.
Working strictly from the keyboard -- if and when it's possible -- is one way that I can really get "in the zone" and very productive.
[1] Example: clicking on a currency here [2] or a time window here [3].
I speak quickly about mouseless ways of browsing in the book, and to me the best solution would be qutebrowser for browsing the Internet IMHO. You should check it out.
On occasion, I need to do something highly repetitive in which case I’ll do something on the command line (with sed, awk, and peers) or I’ll open the file in vim, record a macro and apply it appropriately.
Am I missing something? Am I a weirdo or a dummy in that I’m not itching to type faster and interact more efficiently?
I'm using these tools to stop switching between my mouse and my keyboard all the time. It might not bothering you, and it wasn't bothering me either before I tried to spend most of my time on the keyboard.
After that, like many things in development, it's a question of preferences; but you can try and see for yourself. You don't have to buy the book for that: I've many articles about mouseless tools on my blog for free for example, and there are even more on Internet :)
Touch typing is not only about typing faster. It gives you this other ability of "running your control panel" out of the home keys only (four fings on each hand resting on a,s,d,f and j,k,l,;). When you have to lift one of the hands off the home keys and move it to the mouse to do anything, and I mean anything, it's super annoying and frustrating.
Those who never learned to touch type are not likely to grok the appeal of mouseless work.
I think this is the problem. If it can't be explained, it makes me doubt there are objective improvements.
This introduces a tiny bit more effort to using the mouse - you have to flip it over first. I find adding that little bit of resistance makes me much more likely to learn keyboard shortcuts, which in turn make me more efficient overall.
To name other tools that can support an environment like this and speak to me personally more than the ones in the article, there are:
- NixOS / GuixSD (declarative OSes; may save typing and mousing :) )
- fish (shell. Very nimble and comfortable!)
- xmonad (x11 autotiling window manager)
- Amethyst (macOS autotiling window manager)
- macOS keyboard shortcut definitions (these are surprisingly deep)
- iTerm2 (macOS terminal emulator; Has nice tmux integration)
- Quicksilver (macOS launcher utility. Very configurable and has quite powerful keyboard shortcut definitions)
- spacemacs (Vim-on-Emacs)
- Jetbrains IntelliJ-based IDEs are very keyboard-friendly
Any thoughts or comments about Regolith?
EDIT to mention that for people interested in getting into tiling window managers (such as i3), the Pop_OS distro also comes with its own, optional tiling wm that can be switched on/off, which might be a nicer and more approachable middleground for newcomers
It's my first time using i3 or any tiling WM for that matter. Took about a day to get used to the basics (sane defaults), and that's mostly all I've needed so far.
My one attempt to use the dedicated installer didn't work properly so instead I installed Ubuntu and then Regolith from PPA.
I like to adapt myself to default settings instead of the other way around, because that allows me to seamlessly move between workstations. So a carefully selected choice of default settings is a very nice thing to have.
I think a lot about mouseless computer interaction myself as I am making KeyCombiner[1], which is an application to organize, learn, and practice keyboard shortcuts.
Among many other things, it can map collections of keyboard shortcuts onto a virtual keyboard. This helps immensely when looking for free combinations or conflicts, which is often the case with VSCode and Neovim. You can have a look at the public VSCode collection[2] to see the visualizer in action.
KeyCombiner's concept of building your own shortcut collections could be very handy for your proposal to create your own cheat sheets. With KeyCombiner Desktop[3], you can instantly look up these cheat sheets. In addition to your own collections (cheat sheets), the instant lookup always shows the default keyboard shortcuts of the active application.
I've been using Idea essentially without a mouse for a few years now. It takes a little bit of time to get used to all the shortcuts, but it definitely pays of in the long run.
With some software or web pages you're better off with this kind of workaround than installing browser plugins or configuring the software, especially if you use them infrequently.
Another tip: use ' in firefox to search for links when the focus is not in a text area. For instance, typing |'comment| (without the pipes) here selects a link containing "comment", and you can circle through other matches with F3 / Shift-F3 just like regular searches.
0: https://github.com/alacritty/alacritty/blob/master/docs/feat...
Have you ever used emacs? I am a relatively new user and longtime vim user and curious to get your thoughts.
I tried emacs (I like to try many stuff :D) but it felt a bit too much "program which does everything". I'm a big fan of small programs which can complete each other. You know, the Unix philosophy: "Make each program do one thing well".
I'm not a big fan of the keystrokes either, but maybe it's because I'm more used to Vim. Maybe I should try more seriously one day.
I know because I had been on some of those unfortunate teams that transitioned to GUI that required to use the mouse and the teller's productivity decreased terribly - something that took 30 seconds ended up taking almost 4 minutes, and seeing this, the banks refused to transition to the "new and advanced" versions, until the old charmode UI was slapped on it again.
It takes some time getting into, but the rewards were worth it for me. I'm now relying on muscle memory for navigation, and my mouse arm inflammation is gone!
On a Solaris native desktop of all things. Only thing I noticed was a practically never did much idle web browsing.
But back then web pages were much easier to navigate by keyboard.
Some of the tools are already in my tool-belt but looks like there is plenty to chew on.
I think it depends how you try it. You need to go step by step, not swapping your whole system from one day to another. That's why trying these tools on a virtual machine for example can be nice. You don't have to use them, but you can come back to them when you feel like to. Or use them only for modifying config files and not your whole codebase, for example.
In any way, I'm sure you'll learn some stuff about Linux-based systems. It's always useful I think.
I did take a look at the sample and I’ll definitely get this book
For problems I have in programming languages, either way I look at the implementation of some unknown stuff (class, function, and so on), or I go on the official doc.
Other than that, there are many solutions for browsing without the mouse (but they're not working for every website). You should look at qutebrowser, or some browser extension like Vimium or Pterodactyl. I speak about it quickly in the book.
[1] https://chrome.google.com/webstore/detail/vimium/dbepggeogba...
[1] SoCli (Python): https://github.com/gautamkrishnar/socli
[2] so (Rust): https://github.com/samtay/so
Even if I love the Arch Wiki, the problem is: it's not tailored for beginners. Now, you could say that Arch Linux is NOT for beginners, but I think everybody should make their own mind. I think people are smart, even if they're beginners.
But you're right, sometimes the install change; that's why every update of the book will be free. I'll try to keep up with Arch Linux last updates.
Welcome, brother (or sister). We'll sing while burning some mice and love each others using a limited amount of keystrokes.
- tmux
- urview
- nvi
- lynx/felinks
- nail
- irssi + bitlbee
- fbi
- fbpdf2
- mpv
- rclone/cadaver
Perfectly doable.
> you are not bored typing for the milionth time a for loop?
I don't really follow you. Do you ever use a bicycle? You are not bored pushing for the millionth time the left pedal?
when i go ona a bike trip, i dont like wasting time on going through the neighborhood i know. so i take the train and go up to the more interesting part of the trip and have fun. do you know this trick?