Hacker News new | past | comments | ask | show | jobs | submit login

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.

Compositing was (shortly) after OS X.

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...

That's needlessly dismissive.

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".

This is why most of people love i3 as tiling wm. Just put it in top of gnome/xfce/whatever, run the first installation wizard and you are done.

On Gnome I can use "Super key" + left key if I need multiple aligned windows on my screen. Can you still convince me to try i3 :) ?

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.

You can save and restore entire windows layouts.

> Workspaces are per monitor so its easy to switch all screens at once or just one at a time.

This alone keeps me using i3.

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:

bindsym $mod+Tab exec "current_workspace=\\"$(i3-msg -t get_tree | jq -r 'recurse(.nodes[]) | select(.type == \\"workspace\\" and ([recurse((.nodes, .floating_nodes)[])] | any(.focused))) | .name')\\"; floating_workspace=\\"F${current_workspace%:*}\\"; if i3-msg -t get_tree | jq -e \\"recurse(.nodes[]) | select(.type == \\\\"workspace\\\\" and .name == \\\\"$current_workspace\\\\") | .floating_nodes | length > 0\\"; then i3 \\"[workspace=$current_workspace floating] move to workspace $floating_workspace\\"; else i3 \\"[workspace=$floating_workspace floating] move to workspace $current_workspace\\"; fi"

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.

bindsym $mod+grave for_window [class=“st-256color”] scratchpad show

Problem solved! Here is your quake terminal toggle.

What I like most about i3 is:

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've been getting into i3, but I haven't made any use of i3-msg yet. Are there any good tutorials to get started?

Check out Luke Smith. He has a few good tutorials on i3. He’s at lukesmith.xyz

Yeah. I’ve replaced IDEA tabs with i3 windows. They’re way easier to manage.

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.

i3 has much better multi monitor support.

>One problem with Vim is that you get so used to its key mappings that you’ll want to use them everywhere.

If don't already know about `set -o vi` in `bash`, prepare to be delighted.

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.

Xmonad in particular seems to be a special case of complexity at least partially for the purpose of enjoying said complexity.

After all nobody argues that buying a fishing pole and driving out to the lake is the fastest way to get dinner.

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.

I used to be a lift-and-shift guy, but Fedora upgrades are painless now. I've gone from 26 to 29 on my main workstation and it's been a breeze.

Even with Nvidia drivers?

Yup. Desktop has a 980Ti in it. One laptop has an MX150. The akmods rebuild and things continue as normal.

Maybe I'll take the plunge this weekend...

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 look at my times running 4 OSs simultaneously as a learning experience, not nonsense.

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.

I think I last compiled my own kernel more than 15 years ago, so times have changed...

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.

Here's a newer script that overall seems to work better: https://github.com/lingtjien/Grid-Tiling-Kwin

And the older script I used to use: https://github.com/faho/kwin-tiling

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).

[0] https://store.kde.org/p/1112552/

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.

Whatever flaws PulseAudio has had configurability and lack of features was so far as I know not really one of its flaws.

I'm pretty much you except KDE instead of GNOME.

> …and we can sometimes fail to appreciate that.

I've never met a Linux user who failed to appreciate that.

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?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact