Hi everyone. I've been thinking about creating a custom Linux distro for a while now, because a separate /home partition and shell scripts only get you so far in restoring your setup without repeating work each time.
I'll list some of the likely (and likely non-negotiable) as well as potential things I intend to bake in, and things I can't include (but might make it easier to install):
These are for multiple reasons; namely, aggressive branding, advocacy of sex positivity, available GitHub org name, and just plain insolence.
Being a MacBook Pro user, I need as much out-of-box hardware support as possible. Before the Arch/Manjaro users chime in, there's more to hardware support than the latest kennel and *cringe*\ AUR (just ask MBP users about backlight support).
When possible, use PPAs for up-to-date versions of software with better system integration and less chance of breakage (e.g. GIMP, Inkscape, LibreOffice, etc.). Same for FOSS third party repos (e.g. Node.js, Yarn, Docker CE, etc.).
Instead of throwing a temper tantrum and disabling snapd system-wide for everyone like Clement Lefebvre did with Linux Mint, opt for the easier solution to get a real Chromium deb package (not a wrapper for the snap like in recent versions of Ubuntu) like he should have done.
I don't care about your refusal to learn a new init system or whatever other concerns you may have about systemd. It works, and works extremely well. If you feel like hacking Devuan, have at it.
They're all easy enough to enable that I'm not getting involved in this stupid holy war over universal Linux app delivery mechanisms; besides, when available, Homebrew for Linux (aka Linuxbrew) is superior (in size and performance) to the three others most people fight over anyway. GNOME and Linux Mint especially need to grow up about this.
Note: Homebrew for Linux does not support casks.
I've shelled out enough for Apple hardware over the years, only for MacOS installs to eventually fail to install on each system, that I feel zero remorse for running it virtualized on a non-Apple host OS or on non-Apple hardware. Same for Windows licenses, and WSL can't compete with bare metal Linux.
My desktop is very Unity-like (but not) in nature:
- Unity/MacOS style top panel
- Window Buttons show on hover when maximized on left
- App Title and Global Menu at left-middle
- Notification Area, Clock, and Show Desktop button on right
- Window buttons on the left (I hated this at first in Unity, but eventually came to agree that it is a more efficient use of space)
- Window titlebar hidden when maximized (since buttons and title are in top panel)
- Dark mode by default
- Left panel/"Dock"
- "Start"/"Launchpad" button, window list button, and Icon-only Task Manager (with Windows 7-10 style window previews on hover) at top
- Trash, Activity Switcher, and Virtual Desktop Switcher at bottom
- Hot corners (clockwise, top left to bottom left):
- Show "Start"/"Launchpad" menu (also activated with "Windows"/"Command" button, and by clicking visible menu button)
- "Show Desktop"/"Hide All Windows" (also by clicking button right of clock applet in top bar)
- "Show All Windows"
- "Desktop Grid" (virtual desktops, also switchable by hotkeys or clicking on applet)
If I could squeeze everything into one top panel, I would (I could without Global Menu, but I love it too much).
Sure, I could just keep those settings in my separate /home partition (and I do), but I want to share this desktop paradigm with anyone else who might be interested.
[sudo] apt [install|search|etc] is fine for most things, but sometimes you need a better way to search, browse by category/repo, or view dependencies and installed files. Sadly, none of the modern package installer frontends do this well. Muon is beautiful and full-featured, but buggy, so ugly old granddaddy Synaptic may still be the way to go.
I know what you're thinking:
Yes, I did say that, but the "Rolling Rhino" discussion (and subsequent GitHub repo) show how it's possible to switch to the
This will break
sudo apt-add-repository [PPA], but that can be worked around if
devel branch is otherwise stable enough.
This allows things like:
- using pacman (and Arch repos) for package management. Still exploring the value in this.
- Other nice utilities I'm still exploring.
Combined with apt pinning, so I can get the best of both worlds: Neon's rolling release KDE Plasma, plus the rolling release base of "Rolling Rhino"
A personal preference, since I want to get back into making music and will need WineASIO
The easiest way to accomplish this would be to base off of Kali Linux or Parrot Security OS, but those are unstable on their own and adding their repos will destroy anything Ubuntu-based. If Nitrux's pacman implementation works stably enough, I can try adding the BlackArch repos.
To make it easy to see all app install options (APT, Snap, Flatpak, AppImage, Homebrew [and maybe pacman?]) in one place.
Third party repositories like Google Chrome, Brave, Opera, VS Code, Slack and others will be enabled, but you'll have to install those apps yourself (I will work on adding quick access to their installs in a welcome app - provided you have internet access, of course).
You can always install [insert inferior DE here] yourself, or create something based on this distro with your preferred DE. What you can't do is find a better combination of polish, performance, and configurability than recent versions of Plasma. Does that limit you to X11? Probably, for the time being, but in my experience Wayland still isn't ready for prime time even on (the much heavier and less configurable) GNOME.
Just because I side with one or the other on a few design choices, that doesn't mean I want to imitate either in actual design. The beauty of Linux is that you can make it anything you want it to be, so why pretend it's some other OS which assumes I'm too stupid to make those choices?
I also want to make sure I'm not missing features/apps/etc. which are easy to implement, won't add too much bloat, and would benefit myself and/or other users.
I may not add them to the default install, especially for languages I don't use and wouldn't begin to know how to test, but I'd like to make them as easy to add as possible.
Comment below, and I'll update this post with an issues link once I set it up.