Linux guide for power users (2022)
xnacly.me
xnacly.me
I feel as if I'd qualify as a power user, who has used Windows since the 3.1 days, who has used MacOS since the Tiger days, and who has been using various Linux distributions since 1999 -- I definitely wasn't the intended target audience of this article.
With a title of "Linux Guide for Power Users," I was hoping for some interesting scripts or relatively unknown applications that might be fun to tinker with. I always love to learn something new that I didn't know before (an example: recently I discovered TimeShift which is really a fancy wrapper around rsync and BTRFS, but it's a pretty nice GUI to help create and restore snapshots that I wasn't aware of before).
Yea the title and the intro sentence have a subtle, but very important difference.
And I appreciate the effort but I’m ultimately still confused who the target audience is. I’ve only ever used macOS (like ~9 years computer experience) but currently setting up Gentoo, and being a “power user looking to switch to Linux” myself, I would’ve found it more helpful to summarize the Linux equivalents and added optionality to macOS “power user” things.
Eg u use yabai on mac, well here’s i3 and [other options]. Desktop environment? You actually can choose and here’s an overview. Like it went from “eli5 what’s a distro” to vim keybindings so there was that inconsistent definition of “power user.”
I’m obviously biased in terms of what I wanted to see but my larger point is the inconsistency
So the generic 'poweruser looking to switch to Linux' really makes no sense to me. You can't just be a 'poweruser' in the abstract. A poweruser is a poweruser of something, the thing they are highly proficient at using.
This may be oddly specific to myself, but I hate having to memorize internal IPs and like to address my computers with their hostnames. This article makes no attempt to tell me anything about hostnames, mDNS, DNS-SD, etc. on Linux. Is mDNS configured OOTB on most Linux distros like it is on Mac OS? If not, which implementations should I consider using? So on, so forth.
I also find it a bit amusing NeoVim is automatically chosen for the reader. I'll stick with Emacs, and I know many others will stick with VS Code or just plain old Vim. :)
You can add something like avahi and have Linux do more interesting things like reflection between interfaces/networks--critical for segregating your Chromecasts and other IoT devices.
How the hell have we gotten to a point where Linux closely reflects the instability of the Windows ecosystem. I'm not afraid of change, but I feel like the large majority of changes that are made cause me problems to the point where I now fear upgrading my distro to latest.
> I'm not afraid of change
If that minor issue is a reason to recompile a whole ui-toolkit, then I guess you should just stop applying any os update at all...
It's very much possible to be unafraid of change and still have strong preferences.
The maintainers proposed a similar patch to Gnome/GTK as a hidden option in dconf, but iirc their dev team took the opinionated 'our way or the highway' approach, as they've done on many other occasions.
I would agree with you on Gnome. It aped+ the macOS UX poorly and as a result, it feels like several random efforts thrown together with no cohesion or plot.
+: Subtle pun for old timers
I'm not sure where this affirmation comes from. Do you have "systemd-sysv" installed? What happens when you do run `init 0´?
init(1)[0] says:
For compatibility with SysV, if the binary is called as init and
is not the first process on the machine (PID is not 1), it will
execute telinit and pass all command line arguments unmodified.
That means init and telinit are mostly equivalent when invoked
from normal login sessions. See telinit(8) for more information.
telinit(8)[1]: The following commands are understood:
0
Power-off the machine. This is translated into an activation
request for poweroff.target and is equivalent to systemctl
poweroff.
> ipconfig isn't a command anymoreare you sure you're not mixing up the Windows command ipconfig[2] with the still ubiquitous ifconfig[3]? Even though it's considered deprecated in favor of iproute2's[4] "ip" command, I don't know any distro which has ceased making net-tools available, let alone unusable.
> systemd changed the whole subsystem from underneath me
I agree systemd has been pretty disruptive, but it has made me a lot more productive. Writing a unit file is dead simple, and it is capable of doing a lot of very interesting things. Hardening a unit is quite easy, for instance. You might already be aware of all that, but if not, I can drop some links on another reply.
Overall, from the one of your reply, I have the impression that you might be happier switching to a less opinionated distro like Void Linux or Gentoo. Something as curated as Ubuntu isn't a good fit for you.
0. https://man7.org/linux/man-pages/man1/init.1.html
1. https://man7.org/linux/man-pages/man8/telinit.8.html
2. https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/ipconfig
3. https://sourceforge.net/projects/net-tools/
4. https://wiki.linuxfoundation.org/networking/iproute2s/ipconfig/ifconfig/
> Overall, from the one of your reply, I have the impression that you might be happier switching to a less opinionated distro like Void Linux or Gentoo. Something as curated as Ubuntu isn't a good fit for you.
I agree, but I work in infosec. Nobody ever got fired for running Ubuntu, particularly when there's at least some auditing of source before they push out deb packages. I know there are minimal case studies, but one day someone will get malware into a distro, I'd like to reduce the risk that it happens to the distro I'm running.
I also moved away from Gentoo ~ 10 years after systemd was mainstream, at that point it was basically impossible to get Bluetooth Audio working without pulseaudio, which seemed impossible to run without Systemd. I fully understand that Systemd is probably better in a lot of use cases and I really don't care what's running under the hood, provided it doesn't get in my way.
Edit: And the reason I hate whatever is responsible for the 'ip' command is that it's virtually impossible to google specifically for that command (y'know, because 'ip' was a protocol not a command, convoluting things unnecessarily)...
(and agreed with all of your other points, and there's still something to be said for the push button utility of ubuntu, etc; to your point, a lot of infosec people, including at large enterprises, prefer gentoo.. I know many of them and am one myself.)
Oh, absolutely. It could be forgiven if the documentation wasn't so spectacularly useless. The man page just covers that there are OBJECTs you can call, and that you should do for instance 'ip address help' to see what you can do. I encourage anyone to actually do that. A familiarity with Backus normal forms is required to decipher that "help".
Just install 'net-tools' and good ole ifconfig will be in /sbin...
Amen. I just replied to the upthread comment with the same example of uselessness before reading this comment.
For me, I can't see how anybody actually used/managed linux systems before they standardized the api for creating/managing daemons. A simple convenient api layer for saying to a machine "I want this program running always."
The shell script cosmic horrors underneath to implement the interface were not.
Some of your complaints are practical but 2 specific ones I'd note: "ip" has been the tool you wanted to use since even the mid 2000s - ifconfig wouldn't even show you every IP on an interface since then unless it had an alias. Something that may help you make the transition is the "-brief" (-br for short) switch which gives a very compact simple output that is a little easier to visually parse. If you're using a systemd-networkd system, "networkctl status" is also handy.
For systemd, I have never been bitter about it, but while it has changed many commands and interfaces or ways you work, if you just dig a tiny bit below the surface it has SO many modernsations and conveniences that more than make up for it. Make your own rosetta stone for your top commands, but then look around at all the other things systemctl, etc, offer and find some pluses to make the pain worth it :)
if you know what `init 0` is then you'll be able to pick up on Gentoo and it'll be the new distro for the rest of your life. another excellent option is Void or Alpine (both of which I prefer on servers, but Gentoo makes a better desktop because it's incredibly flexible).
Would I do it again? Nah, probably not. Am I glad I did it in the first place? Eh, I was young, had a spare machine, and a bit of a masochist then. But I did learn quite a lot in the process.
These days, I think the closest you can get to the experience I had is building your own Linux from Scratch distro.
I tried to use OpenBSD for a while at home, and it mostly worked out, but making my VPN work with it looked so complicated that I went back to Debian.
It took me an afternoon to get it working.
This "feature" never fails to amaze me and I stumble over it _every_ time I use the file picker. And for the life of me I do not understand why someone would implement it this way.
What bugs me most is that file name in the name field is already highlighted but instead of inserting text there when typing it starts to fill in another input field. I wish someone could explain. It just feels asinine. Every time.
You can't. From what I've seen GTK / Gnome devs are incredibly unaccommodating to functionality that they don't agree with. https://bugzilla.gnome.org/show_bug.cgi?id=754302
The patch I'm using:
https://pastebin.com/Ek1tTcsm - this is 'file-chooser__typeahead.patch' which I sourced from a github somewhere
I've been using Linux since 1995, and I'm completely lost sometimes. The manpage for `ip` is frustrating compared to the `ifconfig` one.
If only the Mac UI wasn't so spectacularly primitive, or Windows wasn't so impressively anti-user, I'd probably switch.
Thankfully I don't share many of your UI woes because I'm on Mate.
Keep in mind that availability of software is not as good as Ubuntu although you can use flatpak if nobody has created a package for something and you don't want to.
> * containing a fully configured system (yes bloat, idc its a beginners tutorial)
So is it for beginners or power users? Or can that be the same person? Choice of Manjaro is also curious, considering its history.
--
I'm writing this from an installation I made today using it.
Reasonable and good question. I tend to see that as orthogonal (but with some overlap) as "power user" is more of a mindset to me.
Can you elaborate?
[1]: https://www.reddit.com/r/linux/comments/wr2dps/manjaro_let_t...
Ironically, on mobile Manjaro has shipped unstable and WIP patches, leading to issues and annoyed maintainers [0]
It's your guide, but as a non-technical Linux power user of over 2 decades, I don't think I would recommend Windows or Mac power users make the immediate shift to the (Neo)vim and i3 "metaphors" (if that's the right way to express it). I'd recommend KDE for Windows PUs and Pop? Peppermint? (I forget which disto aspires to the MacOS look and feel.
I started using Emacs for Org because I don't program, and I gradually added email, file management, irc, gopher, roam, and other "functionality" as I became more proficient. I finally switched any key binding I could anywhere to Emacs, but I would never suggest Emacs to a Windows or Mac PU unless they already used it, let alone modal editing if they never used it and didn't live in a text editor.
When I started using Org there were not many decent open source plaintext information managers that could also do agendas, to-dos, etc. I mostly used Zim prior. Not all PUs live in text editors, program, or edit configuration files in a modal editor. Why would someone who uses a text editor primarily to edit configuration files do so in a modal editor unsteady of Gedit or Kate or even nano or micro?
Today, I would likely recommend Joplin for a PU who wants open source plain text information management plus a multitude of plugins on any platform and any GUI text editor with good syntax highlighting and customization and a Desktop Manager. It would allow for more gradual transition because being a PU on Windows or Mac means making significant changes would actually be more difficult.
But you can have my Emacs when you pry it from my cold, dead hands.
All of the rough edges I've encountered (usually) have resulted in a better understanding of how software actually works.
Instead going fully Linux had its pain points, but the learning, exposure to everything and the experience was well worth it. Looking back, so many of the issue I ran into ~10 years ago barely exist today - at least I rarely run into those kind of hurdles either due to more experience or the ecosystem just being quite stable and mature now.
It’s too dumbed down. Settings don’t exist or are buried. The interface has gone backwards. Cloud and internet spam embedded everywhere..
The only reason I was still on windows was for gaming, and even that is mostly a solved problem on Linux these days.
My next main install is old faithful ubuntu server.
The best distro for a new Linux user is actually the same distro your best friend uses. When things get dire it's good to have a direct help (Arch Wiki is great but one needs to know how to extract most or its knowledge).
100%.
Although an experienced GNU/Linux tinkerer can probably easily help you with any distro unless you're using something really exotic (i.e., it's immutable, non-GNU-based, non-FHS, or something like that). I run NixOS but I support a Kubuntu system for an older relative, and it's not really a problem.
I've only used Ubuntu for work, and typically the versions of things are quite out of date. Where as Arch, for all it's warts and costs (setup, maintenance etc) gives you those things for free.
I haven't found Arch that much more difficult to work with. For 2 years I used it on a work laptop without issue. Only recently messed up something while updating firmware drivers which requires more than 5 mins/week/month to diagnose.
Having up to date packages also mean having new bugs you have to deal with, for some users having a stable things outweigh having cutting edge.
Never understood people obsession with distro, whatever work for you is fine, they are all linux+open source tools
'Stability' is an overloaded and confusing term. In the world of Linux distributions and their variants, 'stable' doesn't mean 'less likely to crash', but just 'unchanging'. Arch Linux isn't less 'stable' in the sense that it is more prone to bugs or glitches. It's less stable in the sense that it's always up to date.
The main benefit of stable distributions is that proprietary software works better on them. Hardware that only has drivers for particular kernel versions work forever. That sort of thing. They're not actually more stable in the sense that they're more reliable, at least not just because they don't update. I think they tend to have more bugs, because they tend to patch the software more and the upstream is usually better at doing that than the random Debian maintainer (or whatever) is.
>Never understood people obsession with distro, whatever work for you is fine, they are all linux+open source tools
Yeah there are differences though. The people that distrohop between a bunch of distros only to install the same big GNOME or KDE stack every time... I don't get it at all. On the other hand, Gentoo and Arch and Debian, for example, are all very different in the way they organise and install packages. The user experience at the end of the day isn't really so different though. It matters far more which desktop environment you use (if any) than what distro you run.
At best Arch is something like "Gentoo with training wheels", but I see it more like "Ubuntu Minimal but different". I mean its whole marketing thing is "OMG Arch is super duper customizable, make your own choices!!!", but it falls short of Gentoo in that regard.
To me it seems like it's made specifically for the r/unixporn crowd; people who just want to customize the look of the OS and specific programs without much regard for the underlying things.
I don't know if this is still the case but when installing Arch, it used to be that you would start with a very basic set of essential packages and then build everything up from scratch. That is a great way to become a power user. However I thought the whole point of Manjaro was that it's an Arch variant which does a bunch of that for you, so Manjaro's a weird choice for this guide.
Edit: Looks like doing a vanilla Arch install is still pretty gangsta: https://wiki.archlinux.org/title/installation_guide#Install_...
Last year I wanted to make flatpak use a different partition. Some searches (and reading the docs) later, I decided to use /etc/flatpak/installations.d/ to add an extra location. I set up environment.etc to create the file, but flatpak ignored me. After some futzing around I eventually ran strace and realised that it was searching the nix store, and not /etc. So I wrote an overlay to have it create the file during build so it existed in the store.
Being able to recognize that NixOS may be looking at an unconventional location was what allowed me to make that work.
I don't think it has to be this way forever, but it would take a special type of guide to help someone navigate learning the GNU/Linux userland and NixOS' take on it at the same time and we don't really have that.
Similarly, I wouldn't recommend Ubuntu to beginners because the dist-upgrade process is very scary and unreliable (in fact, I don't think I've ever seen dist-upgrade succeed fully without errors or manual intervention), so I wouldn't want to have that unpleasent surprise waiting for them when they aren't ready for it. The situation around snap is also likely to leave a sour taste in their mouth ("Why am I being nagged to close Chrome 2 weeks from now? And why am I still nagged after I just closed and reopened it?!" not to mention "Why can't I open this file in Chrome?").
For beginners who want to learn how things work — Slackware. That distribution guarantees the beginner will soon graduate to a non-beginner status, or understand that it’s not for them. It’s a really quick result. Ubuntu et al. just make it so people stay beginners forever.
I really like the Arch trend among beginners; it doesn’t quite have the educational value of Slackware, but at least they try.
For people who just want to use a computer for normal things I’d recommend an immutable distribution that doesn’t break (Fedora Silverblue / openSUSE Aeon) and a friend who can help (ideally — with remote access). The second component is essential with any OS.
If a tech-oriented friend asked for a recommendation I'd recommend EndeavourOS because of the rolling release and great documentation, but also because I could go over the pros and cons with them in person and make sure they are ready for it and because I know they'd have at least one friend who could help them out when in trouble :)
In my experience, most long-term unix nerds today seem to end up using (a) whatever is in front of them or (b) vanilla Debian.
“[Insert random AI tool] will make all users become power users!”
By my framing, that’s literally impossible. There’s always people that can do/get more value out of the thing than the majority, ie power users
I wouldn't consider myself a systemd poweruser, for example. I still haven't really wrapped my head around its operating model. I have to read the documentation too much, and I often think one thing is wrong but something else entirely is going on.
When I was young, I had a Compiz-enabled cube desktop (maybe with conky running) and it was super cool and stuff and I enjoyed it, so this is in that realm.
Nice of author to share his setup, though. It's often the case that explicit instructions like these help me when I'm searching for something so I always support the writing of them. I don't think this should have been posted here, though.
1. Install Xubuntu
2. Start your session
3. Run
sudo apt update
sudo apt install pocillo-icon-theme materia-icon-theme fonts-clear-sans
4. Go to the Appearance properties. Under style select "Materia-dark-compact", under Icons select "Pocillo", under Fonts select "Clear Sans".5. Remove the default desktop wallpaper, use something else.
6. Edit the XFCE panels
6.1. Create a panel to use as a start menu/taskbar/clock.
6.2. Create a panel to use as a dock. Make the icon size larger and make it autohide. Add multiple "Launcher" items to it with the programs you regularly use.
7. Install more stuff
# The most similar terminal to iTerm2
sudo apt install tilix
# Similar to Alfred on macOS
sudo apt install kupfer
# Install a web browser
sudo apt install firefox
# Webcam software
sudo apt install guvcview cheese
# Flatpak
sudo apt install flatpak
8. Go to https://flathub.org/ and install other useful software.9. Install an office suite (for example, https://www.freeoffice.com/en/)
For games, Lutris and Steam are your friends.
- You can install JetBrains Desktop, then install all the IDEs you need. Once you open your desired IDE, disable the unneeded plugins, and exclude the directories you don't want indexed. You can also disable feature you don't use like folding, code lens, breadcrumbs, etc.
- Install Rust (https://rustup.rs/) then install useful Rust system tools such as ripgrep, fd-find, bat, hyperfine, helix editor, tokei, etc.
But if I had to pick a font, GTK theme and icon theme from the ones shipped with Ubuntu, I would pick that.
I also assume most people would prefer those settings to the theme that is included with XFCE.
Ubuntu or debian with KDE already has equivalents to all of those things. It's just 1. Install Kubuntu/Debian/KDE Neon 2. Start 3. Skip the installs, firefox is already there, KDE already has a good terminal and search 4. Keeping the default layout is fine because its already windows-ish but better 5. Don't install flatpak because it's not necessary for getting started, if ever
consider my position, a 9-5 computer guy who lost almost all of my interest in operating system. i just want to get my job done, be it writing software for my employer or redeploy some containers on aws or what you have. in order to do that, i'd need a decent set of toolchains and other things. i wouldn't want to tinker with my graphic driver or any drivers if that matter either. if you want to convince me to use linux fulltime, you'd need to give me a guarantee that i can just sit down, install the damn os including drivers, and the dev. toolchains in less than an hour. but no! the article shows how to be "THAT LINUX GUY".
Author should have focused on Arch instead. Especially since they use Arch themselves.
I am guessing they are not aware what Manjaro really is, and how it is run.
> Manjaro
well, acceptable i guess...
> (yes bloat, idc its a beginners guide)
huh
I am quite happy with Debian 12, though.
This isnt good advice for power users.
quite the contrary, https://github.com/arindas/manjarno
> but once you've got it setup it's easier to maintain.
In general, this is not the case compared to more out-of-the-box distros like Debian, where upgrading is simply a matter of "apt update && apt upgrade".
sudo apt update && sudo apt dist-upgrade -y
"People who use Ubuntu know Ubuntu, people who know RHEL know RHEL, but people who use Gentoo know Linux"
some good info/instructions - liked the virtualbox guide.