Everyone here scoring serious brownie points with their advanced setups. And here I am, having used Linux for my personal setup for 15 years, using pre-installed Ubuntu on a practically default GNOME desktop. It's wonderful that I can do that and be satisfied with that, without significantly hampering the possibility of advanced setups like the ones here.
Despite all the systemd's, PulseAudio's and whatnot's, the customisability is still far greater than it is on OS X and Windows, and we can sometimes fail to appreciate that.
I've had and seen the coolest desktops on Linux and other unicies. If you're knowledgeable, you have available to you some amazing things.
Linux did lag in performance, but features like virtual desktops, notifications, transparency, and other things were easily a decade ahead of OSX and Windows.
I remember in 2008 in class, playing World of Warcraft via Wine in a window, while also taking notes, tailing logs, streaming music, and writing code, on a pentium III with 2G of ram. If I wanted full attention for WoW, I could go fullscreen, while xchat would still display my IRC messages along the top of the screen.
This simply was not possible on a Windows machine.
I loved to see people's faces light up and have them say "How did you do that??". Oh, I'm using Linux.
Sliding windows, multiple terminals bound to hotkeys, and graphics that were not bound by some UX gatekeepers that are afraid to overwhelm people's senses.
I think it is good to play to your strengths. Linux will never be Windows or OSX.
Yeah, I remember that Quartz was far more advanced than X. My favorite at the time, e16, never supported translucency or transparency very well. But I love that it tried.
It's probably nostalgia talking, but I miss the gnarly desktops that used to be so common.
I remember when Hulu came out in 2009, the default reaction from the community was to release python scripts that auto-ripped it and piped the video into mplayer. Today, the reaction is to compromise our OS by supporting Widevine DRM or some other nonsense.
It probably did more to advocate for Linux when we weren't afraid to be different, or break the rules for the user.
Maybe it's egotistical, but this used to be the experience of using a Linux laptop ten years ago:
https://xkcd.com/272/
Linux actually felt more capable than Windows in a lot of ways, except maybe some hardware support.
Today, it is:
Oh, you're using Linux because you couldn't afford a Windows license, right? Linux is to Windows as OpenOffice is to Microsoft Office?
Absolutely second that. I also had my nerd times when I dedicated every free minute to Gentoo compiling, or to configure my screenrc, Xorg.conf, make menuconfig or whatever was in fashion. But in the end, it's an OS, a GUI, it's the basis for getting real work done. I used xfce, GNOME, KDE, it all gets the job done. But somehow I can no more get enthusiastic about spending hours for configuring a tiling WM like Xmonad. I just cannot seem the benefit behind the steep learning curve. And I use my touchpad and my trackpoint. Sorry for that...
Setups such as in the article aren't the result of "nerd times" and spending hours configuring just for fashion. They grow slowly over the years out of necessity and annoyance with your current setup.
> it's an OS, a GUI, it's the basis for getting real work done.
The basis for "getting real work done" is workflow. There is no need to be 100% efficient to be productive, but some people, like probably the writer of the article, like to push it to the upper limits, because they might be extra sensitive to "mouse lag" or some other reason.
There is also the extra perk of consistency. Due to their nature, xfce, GNOME, KDE change and consequently break things. Setups like in the article hardly ever change, even after major upgrades.
P.S.
Also, as the writer mentions, Thinkpad x200: one of the finest GNU laptops ever. Real keyboard, all Fn keys work. It at a point where if software is too heavy to run on it, it's simply not worth running at this time. Any potential software advantages do not outweigh the superior compatibility and haptic of the hardware.
I used to have Gentoo, specially when I was a student. It was definitely an interesting experience, and the skills I learnt are useful in many other contexts.
But when I started working, I switched to Debian, maintaining a Gentoo was a bit costly, and when I wanted to try out something, compiling everything was really slow (you frequently have to wait a few hours).
I still use a minimal setup (dwm with some customization and helper scripts: https://github.com/kakwa/dwm-desktop), and frankly, once it's done, you barely have to touch it, I've not touched my setup in years.
I've heard this a lot. You've spent time on something just because it was interesting to you and not because you saw the benefit of the investment. Naturally, by wasting time solving a problem you never truly had/wanted to solve it's easy to come to a conclusion that it is a waste for everyone else too.
However, I did the same thing as you did and I still use a tiling WM and CLI programs without touching (95% same) configs in the last 5+ years. I am (anecdata I know) faster than anyone who has worked with me and uses a touchpad while editing. All that while being hardware/location independent because I can always replicate my setup easily.
As a related side-note, using a tool properly is a huge productivity booster. I've seen people go from editor1->editor2->editor3 spending significant time learning each tool and still repeating that writing a few config files is a "waste of time".
On my left side of my screen, I have a series of code windows that I can reach in a tabbed fashion. They're in different code editors. On my right is a notepad stacked vertically with a web browser with documentation. I want to open a new terminal and have everything scoot to the side, then go back to the way it was after I close it. How do I do that with "Super key" + left?
It's something that doesn't seem useful until you've done it for a while, and then it's hard to go back.
Workspaces are per monitor so its easy to switch all screens at once or just one at a time.
Further i3 has keybinding modes which are sets of keybindings that are activated together. These work like user definable vim modes. A given binding can do one or more operations, and optionally exit the mode.
A brief example.
Everything not in a mode is in the default mode.
A command mode wherein every key is either an action or a mode entered by tapping and releasing left shift.
A workspace switch mode entered by w in command wherein a key is bound to switch to switching to that letter ws. eg left-shift -> w -> a switch to workspace a
An open mode wherein keys are bound to individual applications eg t for terminal b for browser. left-shift -> o t open terminal
Another mode to move a given window to given letter workspace. Another to do the same and switch to it. Another to focus the same app defined in the open mode. Another to get the app from the letter ws.
A mode to control audio including hotkeys for navigating tracks, changing volume, switching all playing streams to different devices, toggling playback.
A mode to kill either the focused app, all in the current workspace or all in the screen. left-shift -> q -> q for current focused, q w for the workspace q e for all visible windows.
You can tab or stack(vertical tab) any app.
You can assign particular workspaces to monitors and particular apps to particular workspaces.
You can a built in tool to run commands based on window rules.
i3's "scratchpad" alone is worth switching. You can show/hide a floating window on any workspace with a single hotkey. I use Chrome's app mode to launch dedicated windows for frequently used sites (Calendar, Slack, DevDocs) and I can call them up easily. Works wonderfully for native apps, too, like Spotify.
I tried Gnome recently, and although it's very polished, I switched back to i3 because it wasn't nearly as intuitive to drive with the keyboard.
Honestly, I don't like scratchpad. If you use it on multiple windows, doing `scratchpad show` multiple times causes one window to appear, then disappear, then next window appear, then disappear... and it does this across workspaces. I don't understand when I'd need something like that. It's a weird feature.
Instead, something I really wanted was to be able to toggle the hiding and showing of all floating windows per workspace. It sometimes happens that I just want to work with floating windows for a while, and the number of windows explodes, and I end up with all these floating windows on top of my tiled windows. Using i3 with the default configuration, I had to manually move all floating windows out of the way to get to the tiling windows below, and then move them back when I wanted to work with them again. That was cumbersome, so I did this:
Now, I just press Super+Tab and all floating windows on workspace e.g. 6:some-topic get moved to new workspace F6, and when I press it again they're moved back to 6:some-topic, right where they were. This is workspace independent; the windows belong to a workspace. I can hide the floating windows of however many workspace I want and call them back and they won't get mixed.
I think it's pretty cool that i3's configuration and tooling allow for this kind of advanced configuration. It's like I added a whole new feature.
> If you use it on multiple windows, doing `scratchpad show` multiple times causes one window to appear, then disappear, then next window appear, then disappear... and it does this across workspaces.
You need to create a keybinding that calls `scratchpad show` using a window class qualifier to target the app you want. That's the key to making the scratchpad useful.
1) You can control it from the shell (and hence scripts and hotkeys). For example, `i3 "move to workspace prev"` moves the window to the previous workspace.
2) You can obtain a lot of information of the window manager state (all windows, their sizes, their tree structure, the marks, etc) from i3-msg in JSON format.
1 and 2 mean that the WM is very highly programmable via the programming language of your choice.
3) Workspaces are not fixed. Empty workspaces don't exist unless you're currently in them. You can move a window to a workspace of any name and it will get created. Empty a workspace and when you move away from it, it will be destroyed. This makes it very convenient to work with temporary workspaces.
4) Windows are arranged in a tree structure. Normal windows are leaves. Containers are the branches that take you to those leaves. Containers can be in 4 modes: vertical, horizontal, stacked, or tabbed. That last one means you can tab any set of windows. Why do so many applications implement tabbing when it should be the window manager's job? Stacked is very cool in that it's like tabbing, but the window title doesn't shrink with each added window you have in them. Anyway, this point means that you get a lot of flexibility in how you organize your windows.
5) The configuration gives you a lot of control. These are many small things, so I won't list them all, but as an example, I can put a colored prefix on window and container titles to remind me what they're about without having to focus on them and see their content. I can also match new windows by some criteria and have them appear in a container I tagged without them gaining focus. This is very useful for when I'm doing something in the shell that will cause a window (or multiple) to repeatedly appear but I don't want to lose focus from the shell and I don't want the new window(s) to appear on top of it. As an example of this, I may be running selenium tests which could cause a browser window to appear to show how the tests run. I may also be doing some ad-hoc statistics in octave (cli) and have graph windows appear.
You can change window focus from the keyboard, have more than two equally-sized windows, split in both directions, control the wm via i3-msg commands, autostart programs easily.
I use dwm, but it is similar. It has a master area and a stack. The windows "snap" functionality is in several DE now, including gnome. The difference in tiling wm is that 1) it is far more flexible than just one window left and one window right 2) it doesnt take an extra keyboard shortcut, it organizes them automatically.
I would say flip the question around: if I can automatically tile windows, why would I use gnome where I have to do it manually?
Actually, I found this pretty useful. I have to use "graphical" programs (browser, IDE, email client) rather than terminal based ones. And the graphical ones seem to assume that their windows are pretty large.
Let's say I start my server in my IDE and I use my browser to interact with it. Then the bottom right of the IDE (where the console output of the server is) will be visible even with the browser in focus, and so I can see what the log output is doing.
I have got keyboard shortcuts that move windows to predefined positions with predefined sizes. E.g. full height but only the right 85% of the screen. Or full width but only 90% of the height.
I use it but it is slightly annoying actually. It is vi emulation not vim emulation so e.g. diw does not work. Similarly visual mode involve opening the command line in vim. This can be a little jarring.
I've been using Linux in some form for 15 years. Like you, it's been some pre-packaged usable out-of-the-box distro (Xubuntu, Crunchbang, Mint). I've never once compiled a kernel, as I never had to, or saw the need, and it doesn't seem like fun (neither would fixing the compile errors the inevitably come up when I try to compile anything from C/C++). I've never had audio problems that everyone else seems to have, and I don't get the uproar over systemd.
It all seems to work for me. Am I too much of a Linux noob to appreciate these problems?
The important thing: don't feel like you have to compile a kernel, complain about audio drivers, or use a tiling window manager to be part of 'the club'. The only reason I use Gnome3 instead of xfce these days is the eye candy, and I don't feel bad about it.
If you think that stuff seems interesting, go for it. I'd recommend you install Gentoo in a virtual machine for the fun of it, and to learn about things like init systems, filesystems, software dependencies, etc.
The correct way to use Linux is whatever way you're using it.
15 years ago I used to do Gentoo stage 1 builds and fuck around with all that nonsense. Nowadays I slap Fedora + XFCE on my desktop and every 12-18 months I do a major lift and shift upgrade. I run mostly stock settings as well.
No you're not a noob. All the nonsense I used to go through was just that... nonsense.
Having followed a similar path myself, I'm not sure I'd call it entirely nonsense.
These days it's quite rare I need to dip into that toolbox, but I'm regardless quite glad I learned everything Gentoo taught me. It's often made the difference between "oh that's unfortunate, let me fix it" and "shit, I need to re-install".
I've been using Linux in some form for about 20 years (starting with Slackware), and use it as my default at home for the last few years now. I also just mostly run stock Ubuntu these days. I had some issues running a "headless" system that I only logged into remotely a few years back which required tinkering with config files that I would have rather avoided, but even that seems to have mostly ironed itself out now. I mostly just use Super+left and Super+right for laying out windows, nothing fancy there. Makes it very easy to have your "input" (editor/IDE) on left and "output" (browser or terminal) on right.
Absolutely. I, like many others, spent quite a few years in the gentoo/arch+minimal riced tiling wm camp but am now happy and comfy on "bloated" fedora 29 and kde. More than anything it just feels like i've grown out of it, and it's nice having a computer I can actually rely on for once.
You may want to look into getting a tiling plugin for KDE. I'm in pretty much the same boat as you, used to use tiling WMs but now on Arch + KDE. The KWin tiling plugins are fairly simple - the only configuration is setting shortcuts to move windows around and resize them (I use super+WASD to move between workspaces, super+ctrl+WASD to move windows around on the screen, super+alt+WASD to move windows between workspaces, and super+Q/E to resize windows). That's it - the plugins make using the computer easier in 95% of cases without adding too much complexity, for for the other 5% you just toggle off the tiling and do it manually. And of course the mouse is still usable to move/resize windows.
I currently use the Sticky Window Snapping[0] plug-in which allows resizing tiled windows together (see the demo at the link) and that does most of what I need. A lot of what I do now is fairly horrendous when attempted with a tiling window manager (music production with lots of vst windows open, using mouse heavy programs like Vivado and gimp), which soured me to tilers after using them for years.
I still have my treasured xmonad config available as an xsession for when i'm just doing dev things, and use it most of the time on the laptop I do programming with, but in general plasma5 is such a step up from any older versions of KDE it just works really nicely for everything else.
I'll have a look at the KDE tiling plugins although I'll be surprised if it can replace my xmonad setup (would be nice though).
I haven't used KDE for 10 years or so, but what makes you prefer that over a tiling wm? Considering you were already there, the learning curve must be zero, and nobody is forcing you to spend any time modifying anything. It kind of just works. At least it does for me.
There are a very few things that I will drop into Gnome to do (I think it's Gnome at least), and I dread it every time. Too many menus everywhere, too much animation, tiny targets that I need to hit with the mouse, etc.
KDE5 is super nice and doesn't resemble the horrors of KDEs past, at least in my opinion, you should give it a try after all this time to see all the great work they've done since you last saw it.
Have been using mainstream (more or less) stock distros for years.
My customizations are so they're hardly worth noticing. Notably I spend more time fixing a default Windows (show file extensions for known file types etc) than on a typical KDE setup.
I've used Linux as my primary system since 2001 (WinXP wouldn't run on my PC at the time), with a wide variety of distros from Mandrake over Debian, Arch, Gentoo and a bunch of others. Usually going all out on customization and tweaking.
These days, I run an almost bone-stock KDE Neon (which is based on Ubuntu LTS), with a couple of PPAs added to get the latest versions of a couple of the applications I use the most, and that's about it. I keep the default desktop/panel layout and theme, the most customization I've done is turn off all notification sounds and switch to focus follows mouse with no auto-raise.
KDE gets out of my way and lets me do what I want perfectly fine in its default state.
Same for me. The one key feature (that everything else probably can be configured to do if it doesn't do it now out of the box) that I mold my workflow around is the ability to roll the mouse wheel on the background in KDE and switch virtual desktops that way. For command-line (which I'm in all the time), I use yakuake which slides a terminal window down from the top of the screen like Quake used to do with it's console. This simple feature makes it easy for me to switch between a gui-oriented way of thinking and handling the next coding change in a terminal. You can peel off another shell in yakuake and surf between them. Silly, I know, but for me it works great.
I'm also a Vista era convert to linux and still using a practically default Ubuntu image. However this fits with my original ethos for changing - at the time I was running a brand new business and just didn't have time to trouble shoot my OS. I ran Debian for about 6months before realizing that my time at work could be better spent focusing on my customers instead.
It's liberating to know I can burn everything down, reinstall, pull my dot files from git and get coding again.
I envy you a bit, because a standard GNOME to me is about as useful as Windows, just more stable? :P
I don't run a complicated (to some, compared to this it's probably only half-complicated) setup because I want to, because I fiddled with it until it didn't get in the way anymore.
Well, for instance, there's this meme that GNOME only removes stuff, and people complaining that "GNOME developers don't let you do anything". To me, my knee-jerk response to that is always: this is Linux! Use something else if you want more customisability, because you can!
There is the notion of "opiniated software" which I am a fan of. Seems to that I probably would be quite happy with GNOME if I would be a Linux user.
More to the point though, doesn't a complain such as you stated imply that the complaining party is aware of high configuratibility as an expected standard?
I'm always kind of amazed at this kind of desktop setups, and I guess they're not suitable for lots of people for the simple reason that most users have a "consumer" relationship with computers and not a "producer" one.
My biggest question here for people with this kind of text setup would be: don't you surf the web? Do you use then lynx or another text web browser? What about services and platforms that are designed from scratch with images and video as a prominent part of that UI? (Twitter, Facebook, Amazon store for example)?
I guess you simply switch to a visual browser and some visual tool to play video (vlc, mplayer), but I'm curious and I wonder if that text/keyboard mode can be satisfying or convincing for users that are used on the traditional visual UI with windows, icons and the mouse paradigm.
I see the advantages here (OP mentions some of them), but I wonder if the trade offs for the normal user are to big to work in this kind of setup. Who would you recommend this to?
It's not all-or-nothing. Just because you use a tiling window manager and like to operate it with the keyboard doesn't mean you can't use your mouse any more.
I used to use i3, and I used Firefox for browsing.
I used the keyboard to layout the windows where it was more convenient, but I clicked on buttons with a mouse when that was more convenient.
I now use the standard Ubuntu setup, not for any particular reason, just because it's the default. I often miss being able to conveniently layout terminal windows with just a few keystrokes. Trying to keep terminal windows neatly tiled with a non-tiling window manager is so annoying that I don't even bother.
That makes perfect sense, of course. The way the author speaks about that setup could make someone guess that he does everything in text mode. It would help to add information about those other user cases in which the mouse and a visual app comes forward.
Firefox and a Windows VM are the major reasons for me to reach for my mouse. There's also nm-applet, and obviously gimp and inkscape, but I rarely use those. Oh, and cut'n'paste tends to be easier with the mouse, though xsel can sometimes be useful. Everything else can be controlled from the keyboard. (Like the OP, I use XMonad as well.)
For videos in particular, mplayer can be controlled purely by keyboard. There are GUIs for mplayer (I seem to recall anyway), but I've never used them.
Whether this is the right setup for anyone in particular depends on which apps they use often. Not everything maps nicely to the "everything is text" doctrine. But where it does, the wins are major: text is super easy to handle, index, search, generate. It's easier to record macros to handle text than to do GUI stuff. It's easier to write little tools to process and generate text than to do anything GUIish. Output of these tools again is text, so it composes in the same way that shell pipeline does. Version control works best with text. It's like tarpit of win, the more you dig in the more sense it makes :)
I mean the idea isn't to never use the mouse, just use it where appropriate and don't do the back and forth of mouse to keyboard which slows you down. (One great aspect of thinkpad's trackpoint is that you never need to move your arm to click something)
I mean it's kinda dumb to reach for the mouse to hit C-c C-p enter then reach for it again to focus your editor.
> most users have a "consumer" relationship with computers and not a "producer" one.
Linus Torvalds avoids Linux distributions like Gentoo or Arch because he believes the whole point of a distribution is to make it easy for the end user to install and use useful apps on top of it.
He also doesn't care about trivialities like bash vs zsh. It doesn't (and shouldn't) matter to 99% of people.
>Maybe we can recognize different users have different needs, and what's right for some isn't for others.
Exactly, and that's supposed to be the whole reason we have different distributions in the first place, so that they can cater to people who have different preferences.
>Yeah, when you spend your life in a shell, the choice shouldn't matter, right ? Just like carpenters shouldn't care about saws...
To be fair, I think that on just about any distro it should be pretty easy to set a different shell like zsh for your preference. It's not quite the same as wanting to run i3 on Ubuntu.
I can't speak for everyone, but I use a tiling window manager with Firefox on a specific tag ("virtual desktop", but not) which I browse mostly using VimiumFF, an extension that gives me vim keybindings for navigation. Pressing "f" puts a small tag over each link with a set of characters (ff, jj, de, df, etc) and typing the characters in that tag opens the link.
This sounds fantastic and I was about to install it, but I paused when I saw the required permissions:
Access your data for all websites
Read and modify bookmarks
Get data from the clipboard
Input data to the clipboard
Access browsing history
Display notifications to you
Access recently closed tabs
Access browser tabs
Access browser activity during navigation
... this seems excessive - especially clipboard and historical items.
Those are all necessary permissions since the plugin is basically building a completely new keyboard-driven chrome. It is not simply a skin that remaps a bunch of key bindings.
For example, to open a bookmark from the command line requires read access to your bookmarks in order for the plugin to present you with the list of bookmarks and eventually allow you to search or navigate it somehow. The same applies to opening something from your browsing history or resurrecting a closed tab. Tab switching requires access to the tabs. Clipboard access is for things like copying URLs or the selection in visual mode to the clipboard.
Vimium itself is open source on GitHub and you can see for yourself what it's doing with your data. The Firefox port is by one of the most active project contributors.
In this instance I would imagine that for browsing they would use either Qutebrowser or Surf. I run a very similar setup and use firefox, but that's only because I have about 300 tabs open in normal setup :)
Just because they run urxvt per workspace doesn't mean they can't run another program in a specific workspace, though. It's not a terminal-only setup in the same way that the tty is a terminal-only setup.
I personally use Chrome or more recently Firefox with Vimium installed. Vimium allows most web surfing to be done without a mouse.
https://vimium.github.io
I use w3m which can display images inline (im sure there is a way for lynx to do this as well) I use this for 4chan and HN.
For all other web needs I just hit super+shift+w and it makes a new chromium window in a new workspace.
Writing custom keybinds for launching weirdly specific applications is my favorite part of i3. My least favorite part of i3 is dealing with parts of the UI that I am very used to being graphical, like sound management. I end up installing gnome applets but I would love an alternative to widgets in i3bar.
Well, I have a very similar environment, but I use KDE instead of xmonad and therefore have a much more consumer-oriented desktop at first sight. In addition, I hide my tmux and vim in yakuake, so that I have access to them at any time via a hotkey (F12).
When you look at my monitor you see just a clean, normal desktop with a few Firefox windows (1-3) and maybe a dolphin in the taskbar, not realizing there are a bunch of shell sessions hidden behind a hotkey ;-)
I'm a veteran of Linux for 23 years, and been Windows free for 15 years or so. I love Linux. I love my lightweight i3 setup. Neovim, neomutt, weechat, ncmpcpp...
What's the appeal behind Wayland? I've been using X for a while now (linux n00b) and I really enjoy having everything like this, there even are a couple apps I use specifically for X11.
It's not perfect, but personally I appreciate the better security model of Wayland. Although it can be annoying if you have to do screensharing/recording. On my older laptop, it also feels more responsive.
I'm on Wayland via Fedora, and we use Zoom for company video conferencing. About 2 months ago they released a new version that started supporting screen sharing on Wayland. Works perfectly.
Edited for grammar and to add this:
My point being is that it's slowly but surely getting better and better.
Which version are you using right now? I have the latest one and it does not allow me to share anything else than a white canvas.
Do you launch zoom somehow differently? For me it behaves like a regular XWayland app
Sadly I'm not able to test this since I'm not running Fedora and GNOME. I'm using sway.
Interestingly enough, Zoom change log does not seem to mention anything related to Wayland support: https://support.zoom.us/hc/en-us/articles/205759689-New-Upda....
Thank you for your comment, will try this in GNOME some time.
Sway has too many bleeding edge dependencies last time I checked, so it’s hard to get built and running on a “conventional” desktop-oriented desktop like Ubuntu.
The author has iirc even actively discouraged Ubuntu and Debian from packaging it, because he doesn’t want distro users creating bug reports on older versions (ie noise) for bugs already fixed in git master.
Once sway lands for regular distro-users, I’ll be there. For now I’ll stick to i3.
I've been using Linux every day for 15 years now. I love Linux desktop, not perfect, but neither is Windows. I started with Gnome 2, jumped over to KDE 4 and now KDE 5. Very happy with how well and smooth everything works.
Every time I have to use the slow windows computers at the college I teach at I wish they would put a lightweight linux on them. I wouldn't go full command line but all I'm doing is a browser and word processing. A chromeos-like experience would be fine. Of course what really kills my work computer is the anti-virus. I f I could just disable that then the computer would be a lot more usable.
I was super happy when about 10 years ago I went to the local public library near my parent's house and they had installed Linux onto their card-catalog workstations. I hope it worked out for them. I know it was more likely to perform better than another OS on the same hardware.
A bit tangential, but would you know if there is an extension that would provide Vim bindings only in textfields? I really miss not being able to use regular expressions (or simple search) in a plain text input.
Once upon a time I ran a very minimal setup with using awesome. Tiling windows were great but I found I missed some things that Gnome had done for me. So I'm back on Gnome but replaced Metacity with XMonad, which was a surprisingly easy change. That was back in 2012. Since then there's a lot of churn in Ubuntu with first Unity then Gnome 3. But it hasn't taken that much work to keep everything trucking along, especially thanks to gekkio's PPA that now does most of the work in getting xmonad integrated with Gnome.
I might change one or two things every year, moving from gnome terminal to kitty recently, for instance, but I'm happy with my setup and it's served me well.
I do something similar, but running plasma, replacing kwin with i3. I think a solid desktop environment with a tiling window manager is the best of both worlds.
It's been about 10 years since I used linux on the desktop. I notice this post on the front page and think: "Great! Let's have a look at what a modern linux desktop can look like.."
Oh.. It looks exactly like running a high resolution VGA-mode console with tmux and no X. :P
Over the years I have been going more and more towards the text interface side. It turned out that very few things are inherently graphical. If you know how to use a shell and a text editor you have the opportunity to do everything in a very straightforward way. That way can be very seductive as it never changes all that much. You can go decades without having to learn anything significantly different. The world of the big time desktop environment is still finding its way. It has been a mostly a bunch of arbitrary changes so far so for now at least I choose the simple way.
That's not a modern Linux desktop setup. For that, you'll need to see the default install of an up to date distro. Spoilers: it looks like the desktop of any modern OS. For example, GNOME resembles OS X.
Eye candy remains available. One of the things I love about Linux on the desktop is that you're free to use that stuff or not, according to personal taste. And personally, I find that eye candy reduces the space available for text, which is much more information-dense. A screenshot from my machine would look much like the one in the article.
> I find that eye candy reduces the space available for text
Not all eye-candy does that. Some years ago, because I missed having some eye-candy, I installed a compositor, made my windows translucent and got them to do opening and closing animations. I also put a screensaver as a moving background. It looked very cool and was just as information dense as it was originally. However, with so much eye-candy, it was hard to focus on the content and I felt my eyes strained. I ended up feeling much better when I turned it all off.
Right now, I don't even have a background, but I find information-dense tiling-wm setups have their own aesthetics. If you asked me what looked cooler / better / more usable, a "modern" GUI (like Windows, OSX, or Ubuntu's default) or a tiling-wm setup with mainly terminal windows, I'd have to say it's the latter.
Background: Started using vtwm back in the early 90s, then on linux once it became viable. I now have a muscle memory associated with switching and manipulating virtual desktops to the point that I can't even tell you what keys I'm hitting without thinking about it.
Whenever a linux-windows-setup post appears on the HN or reddit front page, I look at it with interest, and then realize that there's no way I'd achieve any productivity gains in a reasonable time.
So maybe the moral of the story is: Choose correctly the first time, because you might be using your wm until you become an old guy/gal too set in your ways to even think about switching.
I've been using Linux at home without any windows installation for a couple of years, and about 11 years in dual-boot. But my installation resembles a 'windows' computer much more.
I use xfce, but most of my time is spend in a terminal with tmux running for the window configuration. Though, I do have some 'snaps' installed. (Discord, Spotify). So I'm not running entirely inside of the terminal.
For me, this balance is perfect, for any serious work I can just use the terminal/tmux/vim setup, and for relaxing I just have spotify, discord, youtube,.. open on a second monitor.
As for distro, I'm running Debian. I've tried a few others (openSUSE, Fedora, Ubuntu, #!) and by far #! was my favourite for some time, but when it discontinued I went for Debian. I should check out BunsenLabs :)
A while back I moved to Arch with Xmonad, dmenu, tmux etc, but for about a year now, my workstation has been the same tools on top of Ubuntu Server. I have an Ansible playbook that I can apply to a fresh install and have almost my whole working environment ready to go - just a few things I haven't got around to including/automating.
The great thing about running this kind of setup is that you need a deeper understanding of Linux to do all the things that you would otherwise rely on a fully-fledged DE to do for you. For me, this has translated into greater fluency on servers, because my daily driver more closely resembles one.
My setup is Ubuntu Budgie and i3 for hardcore sessions, but I also have been using Ansible even for configuring my desktop with great success. It's really convenient when getting new hardware or doing a reinstall.
Off topic, but I really enjoyed his post about commuting to work by bike[1]. I was in Krakow, Poland, and getting around by bike was a joy.
Unfortunately, here in Ukraine drivers are very aggressive and the infrastructure for biking is just not in place.
I'm heading in similar direction. also using Arch Linux, VIM. do like i3 & tmux, using suckless terminal (I like terminal in true colors). and tend to favor default settings everywhere unless really really forced. installation takes couple hours (IF you know how) - lasts for eternity.
Most modern terminals support true color now [1]. My current favourite is Alacritty because of the combination of speed (hardware acceleration), simplicity (no menus or dialogs), and configurability (including key bindings) with a simple plain-text file that can be kept in version control [2].
He has got a nice setup, especially as he's able to choose all of his own software. I've been using Linux as a primary OS since the 90's but I still need to interact with Windows for work.
I used to dual boot my work laptop, which was made easier by Office 365 webapps becoming more usable, but still there were lots of gaps.
This summer I got a new work laptop, and just cloned the existing M.2 drive onto a bigger, faster one I purchased. Now I run the work laptop as a VM image through QEMU/KVM on top of my regular Debian desktop.
This works remarkably well, and has improved my workflow a lot as I now never have to dual boot. Windows even runs faster this way, due to the faster M.2 drive. I'm not sure how I'm going to explain it to the IT department if I ever have to get the laptop repaired though.
> I've been using Linux as a primary OS since the 90's but I still need to interact with Windows for work.
My current job force me to use a Windows computer. You know, it's the company policy. Well it's the last time I take a job witch doesn't let me control my computer and use GNU/Linux.
It feel like I m using the wrong tool for my job. Like use a stone to put nail instead of a hammer.
> I'm not sure how I'm going to explain it to the IT department if I ever have to get the laptop repaired though.
Maybe I'm misunderstanding your setup, but could you not clone the Windows VM partitions to the old M.2 drive (I'm assuming you kept it), swap it back into the machine, make it bare metal bootable, and hand it to IT like that? That way your larger M.2 drive with your whole setup stays safe and secure, and IT is none the wiser.
You are right in essence, but there are a couple of complications:
- If the laptop is broken beyond use, I won't be able to write to the M.2 and I don't have an external M.2 enclosure (and the most likely fix here would be to switch out the drive to an equivalent laptop, then try and boot it up)
- I actually tried writing the image back to the M.2 at the weekend, and it it wouldn't boot, Windows had some error about a required device not being connected on one of those bootup BSODs
Thanks for the follow up. For your second point, my experience has been that you can fix booting when writing a Windows VM partition to a real drive but it involves some BCD black magic and doesn’t always work. Windows 10 in particular has given me issues when trying to do that but it’s fairly straightforward in Windows 7. This guide is written from the perspective of going the opposite direction (real HD to VHD) but it’s basically the same procedure:
Slightly offtopic: the author says the background of https://hisham.hm/htop/ shows live statistics, that's not the case as far as I can tell, just 4 pre-recorded images shown successively.
Ontopic: Quite impressive setup. For me it would be too strictly regulated for a comfortable use, though technically I like it. To each it's own.
Thanks to Alexander Waldeck for the idea of having htop
itself as the page background! His page actually presents
a live htop session -- mine is just an animated gif with
a few frames stolen from his page. :-)
The drunken-security.at page is offline as far as I can tell, but as I recall it he eventually had to drop the htop background as people were DDOSing him to see the results.
I really love cwm. It’s a really nice window manager. I used to use Emacs a lot too, but now I just use mg for simple file editing and IntelliJ.
I switched from OpenBSD awhile ago to Linux because 1) OpenBSD is dog slow and 2) a lot of software doesn’t work right with it. However, it’s probably the nicest operating system I’ve ever used.
How does your setup work with a second monitor that comes and goes?
Use case: I have a laptop that I take everywhere for me, but I plug into a second monitor while at work. I also use multiple desktops, and this pattern is sometimes causing windows to jump to another desktop when disconnecting the monitor.
I had the same issue using unity/gnome on a laptop with 1-3 monitors. After I switched to i3 I was forced to set the monitor config manually with xrandr. I set up keyboard shortcuts for switching between 1-3 monitors. This fixed all the issues with automatic window placement since the window manager no longer tries to do this in an automatic fashion.
Tiling window managers definitely have a learning curve, but after I spent a weekend switching to one, I can't see myself ever wanting to go back to floating windows.
I have two bash scripts that set things appropriately -- laptop.sh and desktop.sh. Xrandr, xinput, xset things. There's probably a better way to handle this but it's not inconvenient enough to make me figure it out (or duckduckgo it).
My setup isn't the exact same as his but I've never had any problems plugging in a projector on my XMonad laptop. In the XMonad schema windows are always associated with one of the 9 workspaces and each screen displays one workspace with the windows all scaled to fit nicely in the display. When you unplug a screen the windows on the associated workspace stay on that workspace and don't go anywhere else.
Even though Pentadactyl is not under active development anymore, I'm pretty happy with Vim-Vixen. It doesn't have "caret mode" (from what I can tell) but the switch was very smooth. There are also a lot of other options for vi-browsing for Firefox now.
I've been using Ubuntu on an Thinkpad L460 for about 9 months now full-time. While there is a curve and I'm always looking for new ways to solve problems. What running Linux has done for me that I didn't expect is to make sure all my code plays nice with other projects.
Example: I've got processes that make models out of stock data and does backtesting. Even though I use my own custom code for a lot of things, I make sure that in the end if someone wants to dump into numpy/pandas they can in just 2 lines.
I started out with Linux to use a free hand-me-down laptop and I stayed when it was powerful and I could still make a living coding with it.
I have been using a very similar setup for 12 years now. In the past few months I've been wondering what the Linux experience is like for newcomers and "normal" users. I am considering doing a clean install with a full fledged modern desktop environment such as KDE. I may not be able to manage such an environment, I fear that it's too constrained compared to controlling everything that runs on my computer. But I'd like to try.
Has anyone done a switch from very minimal keyboard first lightweight environment to a modern desktop environment? If so, what was it like?
I did. It feels good. The interactions are smoother, file managers are more useful. Had to tweak some shortcuts to emulate some moves I am used to in tiling managers.
I went from awesome to KDE (kubuntu 18.04lts).
I do webdev, cm and reports at the moment.
I believe the terminal only approach suits most sysadmin, devops and the like ; not your run off the mill wordpress dev.
In my current setup, I do not even have a file manager installed. I just use the coreutils (cd, ls, mv, cp, rm, etc.).
I'm not doing webdev, I mostly program in different languages (Racket, OCaml, C, and Python mostly) and write a lot of LaTeX. Most of my time is spent in Emacs (it's also were I'm doing my emails) and Firefox.
In addition to graphical file managers, I'm also wondering what it's like to use a mail client such as Thunderbird, Kmail, or Evolution.
Graphical file managers are really good at managing pictures and random arbitrary selections.
I am not using mail clients anymore, only webmail (I have a thunderbird install at work that is used as some kind of back-up/dumpster). I don't spend a lot of time in email or calendars though.
It sounds like a sort of "best of both worlds" scenario...i'm interested in any suggestions. The last several years had me use more debian-centric distros (formerly Ubuntu, nowadays Mint). Is there a pair of DE+tiling WM setup that you suggest might be good? I'm open to recommendations!
For me XMonad+Gnome has worked pretty well. There's a nice PPA[1] that gives you most of what you need then you load the Gnome compatibility options[2] in XMonad config file and everything works. Well, there is one annoyance in that there's some sort of race condition and I have to restart xmonad after everything is up (alt-q by default) if I want windows to avoid the task bar like they should. But that only an extra second when I reboot.
I use i3 daily but every couple of months I switch over to Gnome (I have both installed). I appreciate the appearance of Gnome, but I get frustrated with it's handling of multiple displays (I dock the laptop at work and have two monitors). With i3, the windows stay on their virtual desktops and it's pretty seamless when I dock and un-dock.
That said, it's not very attractive. My partner thinks it's looks bizarre and I don't think I could slide my laptop over to, like, anyone and have them be productive.
it's always surprises me that linux developers still care about ctags...
There are more powerful solutions and easier to setup (YouCompleteMe, for example). I was completly sold out when I tried for the fist time a few years ago. I was pretty happy to drop all my ctags's related scripts.
I use YouCompleteMe at work for large projects (and it still sometimes struggles with looking up some symbols), but for my rather simple personal projects ctags has always been good enough.
> rem -m -b1 -q -cuc12 -w$(($(tput cols)+1)) | sed -e "s/\f//g" | less
Regarding composability:
Suppose I want to add the following to that calendar:
1. two little emojis (or ASCII art) at the top to scroll among months. Bound to left/right arrow keys, and also clickable with mouse. This is a common feature of the calendar widgets I've seen.
2. clickable mutable daily content. So if I peruse my calendar and spot an error I can click to select, fix it, then click off it to update it.
My Linux desktop setup at work is latest Ubuntu LTS + Sublime Text + Spotify + Docker. At home I use latest Ubuntu + Sublime Text + Spotify + Steam. If I ever need to reinstall Ubuntu at home or work, I'l go with the minimal installation option. I'm guessing that I get to go with the minimal installation when I buy/get new laptop, since there is no reason to do a fresh install otherwise.
This is great fun. I'm running a very similar setup on a Raspberry Pi Zero W. I can plug it into an HDMI screen to start it up but then I can just run it headless via SSH.The "disk" size is 8Gb and my setup occupies 1.6Gb. 12 hours battery life with a 6000mA/Hr battery...
Really nice setup. I'm using ubuntu for a little while and I'm hooked with the idea of deeply customizing a linux setup to be energy efficient and highly productive.
I recently saw a thing about xmonad not under any circumstances being ported to wayland, due to its very high level of integration with X. Which to me read as, would require a rewrite rather than there can be no successor. Still, someone does have to actually put in the work.
Mine is tmux/vim, and firefox. If someone changed the rest of it, I'd think something looked a little odd, but I'm not entirely sure if I'm using Mint Mate or Mint Cinnamon.
linux user/dev here since 1995, few years ago went back to windows.. never looked back.. happier now I never have to worry about shit not working and just do my kernel dev in different ways. I'm no longer interested in tons of desktop config either, more interested in apps that can do more for me, with less of me interacting with the computer to make that happen
I've been developing on Windows for the past year, from a mixed OS X / Linux background, and it has been a seamless experience, the only things I miss are the ease of installing packages like Node or Redis or Postgres, but those are done only the first time I boot up a new Windows installation so the pain is amortized in the time I spend not worrying about random lockups or drivers not working.
I disagree, I think that a terminal implies connection to a larger computer that is doing most of the work. In this case all of the work is being done on the local machine.
I do agree that this person has many terminal sessions open, but they are also running Firefox, playing music, etc.
I don't see at all why you're saying it's not a desktop setup. It's obviously a workstation computer with media capabilities. The word desktop implies pretty much that. In contrast to desktop, there are portable computers and servers. Today the difference between portable and desktop amounts to just additional power management tools, so it's pretty much the same. So there's just workstation and server, ignoring Androids, Google Chrome laptops, etc. This is certainly not a server.
As to the content itself, the insights, configs and tools listed are great. My setups have very similar objectives, but solving a lot of these mundane problems can mean days, so I'm definitely saving this for later.
That's an interesting point, but I think it's fair to say that usually when you're talking about a desktop computer you mean a computer whose interface is on your desk, similarly to how a laptop relates to a lap.
For what it's worth, I find the desktop metaphor in UX design a pretty tiring historical artefact. A desk, as a workstation, is the way it is because of physics. Computationally driven user interfaces don't have those constraints and it's awkward, not to mention short-sighted, at least in my opinion, to force one upon the other.
> It's obviously a workstation computer with media capabilities. The word desktop implies pretty much that.
What? No.
A desktop is a computer sitting on the top of your desk. And on the software-side there is the Desktop Metaphor, which describes an interface that behaves like the top of your desk, with free arrangement of all meaning of your work.
This article on the other side describes a workspace with multiple machines and mostly no free arrangement of work-elements. So it's not fullfilling the hardware-definition, and pretty weak on the software-definition.
This article is clearly about a workspace that blows beyond the classical workspace-definition of a desktop. Which is good IMHO, but means we need better namings for such things, and even if it's just for the sake to distinguish different tools and workflows. We are now moving to integrate Mobile Devices like iOS&Android into our workspaces, and on Windows-tablets we have touch-interfaces which start to be very different from normal mouse&keyboard-interfaces. And then there is also the classical terminal-interface, which this article is very heavy leaning toward.
I don't understand the gatekeeping and deliberate misinformation in your post.
> A desktop is a computer sitting on top of your desk.
Besides the fact that the author indicated he's using a laptop hooked up to a 40" monitor, kind of necessitating the computer to be sitting on his desk, his use of "desktop" in general is referring to his everyday workflow. For some people, that's Windows and Windows specific apps. For others, it's macOS and its specific apps. For yet others, it's a Linux or BSD desktop environment, whether stock or customized. The fact that he's using a laptop as a workstation does not magically render his established work environment "mobile", and even if it did, he's still using a desktop environment of his own making.
> This article on the other side describes a workspace with multiple machines and mostly no free arrangement of work-elements.
Maybe we're reading different articles, but I see no mention whatsoever of what you're going on about. I see where he at one point mentions "multiple computers", but this in no way invalidates his desktop environment and software setup as violating some made-up rule about what is or isn't a "desktop".
I currently use five computers at home not counting my iPhone: A HP EliteDesk set up as a Windows gaming system, a Dell PowerEdge T310 server running Slackware Linux, converted into a workstation by adding a GPU and sound card and tweaking the BIOS, a mac Mini for music production and general Mac-specific things, a Raspberry Pi 3B+ for experimenting with IoT, and a HP Elite X2 convertible laptop for quick tasks away from my desk and occasional use at work.
Now, according to your logic apparently I can't possibly have a "desktop" setup because I use more than one computer, of more than one form factor, for more than one task at a time, and not always glued to my desk. That's total bullshit.
You claimed that the author had no right to call his desktop setup a desktop setup based on your own made up rules. That is the very definition of gatekeeping.
Also, please tell me where I insulted you. I called you out for gatekeeping and did so rather politely. If you consider a rebuttal to be an insult I’d advise you to grow a thicker skin before interacting with others or you’re in for a lot of disappointment.
Well, I would say yours is not a desktop setup ;-)
I mean, desktop usage is meant for people who work with computers. They spend several hours a day in front of them and therefore require ergonomic chairs and the like. If you want to use your laptop on your couch, that is completely okay, but you are probably not doing some of the things people at desks are doing (like decrypting compilers errors etc.).
> I mean, desktop usage is meant for people who work with computers
Practically everyone works with computers.
> They spend several hours a day in front of them and therefore require ergonomic chairs and the like.
That includes almost everybody.
> like decrypting compilers errors etc
I do that on my couch.
Desktop setup is a computer set up for desktop use, AKA, _for regular people everyday use_, that come bundled at most with some productivity suite (usually Office or Office clones).
Xmonad is not desktop ready, on the contrary, it harms Linux penetration on the desktop segment.
Ubuntu is a desktop setup, Fedora is a desktop setup, ElementaryOS is a desktop setup (etc. etc. etc.)
If you are compiling, you are already a pro user.
A desktop user doesn't fight with the default configuration, a desktop user adapt to the default configuration.
They might change the desktop background and WM theme, and that's all.
When I think of a "desktop" computer, I think of a form-factor suitable for placement on a desk. I can stretch that to include a machine you keep under the desk or even a laptop that is attached to an external keyboard and mouse.
I don't think about the software installed on that computer at all.
Also: desktop computers, in my opinion, pre-date the "desktop metaphor" and GUI environments.
> Also: desktop computers, in my opinion, pre-date the "desktop metaphor" and GUI environments
I kind of doubt that. When the metaphor was introduced by Alan Kay in 1970, there were no desktop computers. If you consider microcomputers the first desktop computers, which you should since their predecessors, minicomputers, were "cabinet" computers, then the Micral N in 1973 would be the first "desktop" computer.
I think your splitting hairs on this one. The Micral N also didn't have a GUI environment and it was clearly destined for the top of someone's desk. In my opinion that makes it a desktop computer.[0]
When Alan Kay was working on GUI environments, it was on equipment that pretty much nobody could access, it was very expensive and few units were sold. Still, it's interesting to note that the Altair was not a desktop computer that could literally sit on a desk: it came in a cabinet that was meant to sit on the floor.[1] ;-) The irony!
When Apple released the Macintosh, I believe most people were interacting with desktop computers that lacked a GUI desktop environment. Specifically I was thinking of the IBM PC XT [2], although, as you note, there was more to the field than just that.
> What makes you think he can't cast media or browse Amazon on his laptop while sitting on the couch?
I never said he can't, it just took a lot more time for him than it took for me to do it.
Are regular drivers going out for groceries tuning their engine to perfection everytime they need to go buy milk?
That's what a desktop is all about, a computer sitting on a desktop dedicated to a worker, not a pro, and expert, a tuner, a nerd, a geek, someone who loves machine carnally.
Just regular folks that know ho to do what they have to do and that's just it.
I've been a Linux user for the past 15 years, I installed my first Slackware in 1996, but I wouldn't say my setup is desktop ready.
I don't know how many of my 13 thousands coworkers would have been able to solve the problems I had with Debian and my Lenovo P-70 multi monitor setup.
I'm sure many of them think I'm crazy spending so much time on it, when they have a problem they call IT and until IT doesn't solve it, they are not working, and are happier.
You seem to be projecting a lot. He never mentioned that it took him a long time to do anything. And just because he doesn't use a readymade workflow or a graphical user interface for some of his applications his setup is not a Desktop setup?
> That's what a desktop is all about, a computer sitting on a desktop dedicated to a worker, not a pro, and expert, a tuner, a nerd, a geek, someone who loves machine carnally.
This has to be the weirdest bikeshedding argument I've ever seen. The only reason I can think of why you're so insistent on this distinction is to brag.
> I don't know how many of my 13 thousands coworkers would have been able to solve the problems I had with Debian and my Lenovo P-70 multi monitor setup.
It certainly is a 'desktop', it might not be yours but it bears resemblance to mine. The 'desktop' metaphor might have been equated with complicated all-integrated environments like Windows, MacOS, Gnome and KDE but in the end it comes down on something-on-a-computer which provides a place to work and access to the resources the computer has to offer. Like physical desktops these come in al shapes and sizes ranging from an empty slab with a lamp and not much more to ornate baroque monstrosities with a zillion drawers, Rolodexes, mail-in-out-boxes, staple machines, paper dispensers, coffee machines, vortex portals and flux capacitors.
Some ascribe to the diction that 'perfection is reached when there is nothing left to take away', depending on your starting point you either end up with a lightweight environment like Xmonad (et al) plus a few tools or at a lobotomised full desktop like Gnome.
> It certainly is a 'desktop', it might not be yours but it bears resemblance to mine
It does resemble mine, either.
In fact I'm not a desktop user.
> or at a lobotomised full desktop like Gnome
That's super not nice.
Regular people want a tool, not something you fall in love with and spend most of the day refining.
Most people have hobbies outside of the tech world, they will spend hours growing their gardens, but couldn't care less about "keyboard focuesed" or "run programs in the terminal" or "I quickly noticed the huge compile time of KDE".
If they can't use it properly, like they are used to, it's broken for them.
Despite all the systemd's, PulseAudio's and whatnot's, the customisability is still far greater than it is on OS X and Windows, and we can sometimes fail to appreciate that.