Manjaro: Day 1

I've been meaning to try Linux as my primary desktop OS again, to see if it has come to the point I am able to actually do this. Previous attempts at doing this failed due to a combination of things, most of which are related to my personal preferences, but also have been at least in part due to some OS, UX or software limitations. I would not want to rely on any OS other than Linux for any server setup, but for a Desktop OS it has always been incredibly hard to beat macOS for me.

Manjaro has been at the top of my list to try, because I've heard many good things about it. But I also wanted to try something other than Ubuntu. For my next experioments I have chosen Manjaro 18.5.1 with KDE Plasma — the recent-most version as of this writing.

What follows is a short series of posts with my notes that I've written out while trying out this experiment, both positive and negative. As I am very new to using Arch, I'll more than likely be making more than a few mistakes along the way, so keep that in mind. This is really not a how-to guide, more a personal diary of sorts of me becoming familiar with a new-to-me environment.

Let's start.

Installation

Installation was pretty straight-forward, as most OS installations are these days I suppose. I added an SSD to my system that will be dedicated to my Linux setup. I did not remove any of my other drives. Unfortunately it does seem like Manjaro ended up screwing up my main OS drive's boot partition, even though I specifically said it should install to this SSD. I guess I should have removed all other drives, but this being a test to see how mature Linux as a desktop OS is, I wanted to see how it would work in a normal, expected setup.

Screenshot of Manjaro's Advanced Keyboard settings panel.

Bluetooth

Bluetooth works out of the box, but not entirely. I am not sure if this is very specific to my hardware, or if there is something else going on, but I was having a lot of trouble using my bluetooth-connected keyboard from boot. Even though my keyboard (and trackpad) pair on a hardware level, and even though the OS seemed to be aware of them and even claim they were connected, I couldn't actually type or anything. I had to remove and re-pair the devices, but I have thusfar failed to get this working consistently throughout reboots and when switching to and from my other OS.

I only have one Bluetooth PCIe card that does hardware-level pairing, my tiny USB Bluetooth dongle does the usual software-level type pairing, so I cannot try with different hardware to see if it is indeed hardware-specific. I'll have to leave this as-is for now and delete-and-re-pair every time I boot into one OS or the other, using another keyboard and mouse to set this up. Not ideal, but I'll live with it for now.

Keyboard

I wanted to try to see if I could change the default behavior of my keyboard to more closely match macOS shortcuts and general behavior, as I am most comfortable with those. Think cmd+c instead of ctrl+c, for example. Unfortunately, this seems to be somewhat easier said than done.

It seems like Manjaro opted to use hid_generic for my Keyboard instead of hid_apple, so the usual recommendations for configuring an Apple keyboard don't work for me. I have tried to no avail to get this to behave differently, but from what I can gather this seems to be a bug at least in part related to something in the Linux kernel.

For now it means I have no working media keys and no working fn key. Hm.

I was able to change screenshot making shortcuts to somewhat match macOS'; cmd+shift+3 for full-screen, cmd+shift+4 for selecting part of the screen, and cmd+shift+5 for the current window. That last one isn't actually the same, but it fits the standard options close enough.

I found that in System Settings > Input Devices > Advanced > Alt/Win key behavior I can enable Ctrl is mapped to Win and the usual Ctrl keys to enable copy/paste using the command key, but this somehow also breaks the window snapping shortcuts (by default mapped to Super + arrow keys, something I have been using quite a bit since trying out Manjaro as new Terminal (sorry, Konsole) windows open up weirdly off-screen with their window title bars off-screen, so I can't drag them until after I snap them first.

Ok, giving up on this for now, I switched back to just using plain vanilla Windows/Linux keyboard shortcuts. Guess I'll be using my pinky finger instead of my thumb for copy/pasting for a while. Not a very great start, but new things are always at least somewhat uneasy I suppose.

Package Managers

Coming from Ubuntu/Debian with their apt-get, and macOS with brew, I had to familiarize myself with Arch/Manjaro's package managers. It seems like the default method is by using pacman. Arch also seems to have two repositories, although I am not sure what the official terminology here is.

Main repository

The Main repository seems to contain "core" packages as-well as "Community" packages. It is what you download and install packages from when using the pacman command. Common stuff like Git, Firefox, VLC, can all be found here.

Arch User Repository (AUR)

The Arch User Repository only  contains user-created content, but is different from the main repository's "community" content. I believe the main difference is that when you install something from here, it actually compiles it from source and then installs it. Whatever is added here isn't "supported" yet, but might very well end up in the main repository sooner or later. It also seems like proprietary stuff might only be available here, like the Microsoft-branded VSCode, which I assume will never be available through the main repository due to license incompatibilities.

Pacman commands

As mentioned before, you can install from the main repository by using the included pacman command. The syntax isn't as obvious to me as apt-get or brew, so I'm writing out some commonly used ones here as a personal reminder:

Command What it does Apt-get equivalent
pacman -Syu Sync database & upgrade all packages that have updates apt-get update && apt-get upgrade
pacman -S code Install VS Code apt-get install code
pacman -Ss code Search for "code" apt-get search code
pacman -Rsc code Uninstall VS Code apt-get remove code
pacman -Rns $(pacman -Qdtq) Uninstall unneeded packages apt-get autoremove -y

AUR Packages with YAY

By default Manjaro comes with pamac, which is a very similar looking command from pacman, which I'm sure was intentional, but can also be kind of confusing. As I had seen Yay mentioned several times, I wanted to try that out, so I installed this. Interestingly enough, Yay is available as an AUR package, so you can easily install it using pamac install yay.

After this you can install AUR packages by running yay «search term», kind of like you're happily proclaiming it. It will reply with a list of results based on your search term, asking you to enter the number(s) of whichever result you would like to actually install, if any. I am not sure if yay is actually any better than pamac, so I will have to give it some time to see which one suits me better.

Screenshot of the 1Password X modal showing.

1Password

I use 1Password both for personal and work, so this is a crucial tool. While 1Password does not have a full-fletched Linux application, they do have a command line version and a Chrome and Firefox extension called 1Password X, so I installed that. I have yet to try the command-line version, but for now I'll just have to switch to Firefox whenever I have to log in to something.

Node, Yarn, etc.

Fortunately an easy one; pacman -S nodejs yarn npm and we're done.

Screenshot of the open-source version of Visual Studio Code.

Visual Studio Code & Visual Studio (MonoDevelop)

VSC was easy enough too; you can install the OSS version of it by running pacman -S code. There's also an "Microsoft-branded" AUR package that you can install using yay visual-studio-code-bin, though I am not sure what, if anything, is functionally different between the two.

The same can't be said for Visual Studio, however. The open source equivalent here is MonoDevelop. Checking out the official MonoDevelop website shows no official download/installation options for Arch-based Linux distributions, which is a little alarming.

I first tried yay monodevelop-stable, as it sounded like a good one to go for, but it failed to build for me. Specifically the step where it tried to build fsharp failed, and several attempts at making that work failed for me, so I gave up.

I then tried yay monodevelop-bin, which fortunately ended up seemingly working. It was able to successfully build, and a quick test to boot up the editor showed it actually launching.

I couldn't actually load up one of my projects to fully confirm it as I ran out of time, so I'll leave it here for now, and will pick it up from here with my next post.

Continued in part 2 here.