My Linux Journey with some desktips
Here is the Linux journey I would’ve set to myself if I started getting into Linux.
Fedora: Sane defaults
I’d start with Fedora KDE Plasma. KDE is the most DE with sane defaults. Fedora has a sane release schedule, and has a sane default for native packages. This is unlike Ubuntu with Snaps and flatpaks everywhere.
Sane post-installation walkthrough for any Linux distro:
- Auto-cleaners for pacman and pamac caches.
- Mirrors
- Input Methods (1st step for non-English speakers)
- Firewall
- Mouse/touchpad sensitivity a. natural/logical scrolling b. tap to click1 c. Autoscroll: a very sane default from windows that is missing for some reason on Linux.2
- File indexing: for quicker searches.
- Snapshots/timeshift3
- Light/Dark theme3
- Theming options. E.g: What if users want text selection highlight to be blue (like Windows) instead of green (theme of Manjaro)
Turn off non-sensical defaults:
- Klipper Logs your clipboard by default.
- Always-shown scrollbar: a sane default that’s getting killed by modern UI.4 KDE, Firefox
Discussion: https://forum.manjaro.org/t/145759
Arch: Desktop from scratch
Gradually, after settling in with KDE and knowing basic PC jobs: sound, microphone, cameras, speakers, bluetooth, scanning, printing, I’d move to building the desktop again from scratch. The motivation for this step is that tiling window managers are awesome and useful tools, that mostly require you to build your desktop right from the beginning.
Start by slowly replacing GUI applications with desktop-agnostic GUIs. Then one by one, look into these topics:
- System tray
- Lock screen
- Session locking
- Download Manager
- Trash
- Dark theme
- Power Manager
- Notifications
-
- Notification center using dunst
- File chooser dialog
- File tags
- Dictionary: see my post about different dictionary formats.
- App menu
Programs and formats from scratch
Move to futureproof and plaintext format:
- Playlists: Better liberated playlists for music or audiobooks based off
.m3u
. - Flashcards: A more lightweight Anki
- Calendar: Set-up for syncing on Android
Download manager: userspace downloading scripts:
- Rootless PKGBUILD: for
~/.local/share/{fonts,icons}
. - Metalink
- Distro ISOs
Security hardeninng
Check Security post.
Gentoo: Building from scratch
- Build on PC. Install on laptop: Arch, gentoo
- Zero RF PC
- gvfsd disabling
- Autolock problem
- Firefox bell: forums
- Why /etc/profile needs to be sourced
- Static hostname
equery
metadata including package descriptionpactree
-equivalent for Gentoo
Linux Wishlist
Even after a fully comfy setup with Linux, I still miss some features back from windows, that I’m surprised they have no equivalent on Linux.
Binding files
There was an old feature in Windows that somehow bind files to each other. Try this on Windows: Ctrl+S to save this page as HTML, then rename the HTML file, you’ll get a dialog like:
If you rename this file, it will no longer blong to the folder ‘Linux - Wikipedia_files’
And when the html file is moved to another location, its asset directory is also moved.
The use cases for this are plenty. The most common one is when you have a lot of markdown files with corresponding asset directories (think of static websites generators).
When I switched to Linux, I just accepted this might require a lot of work to get implemented. But I was just looking into Extended attributes and thought it might be way easier. Of course, every file manager (and perhaps CLI utilities) might need to be reworked to respect the attached xattr, but it still simplifies the job.
Shortcut files
See also: [Wikipedia](https://en.wikipedia.org/wiki/Shortcut_(computing)
This is the “shortcuts” feature in Windows, where creating a shortcut of a file, still points to that file even when it’s moved. (and it’s commonly requested).
A shortcut file is different than a symlink in the sense that it just launches. There are many alternatives
- Create shortcut (Desktpo entries):
- (E.g: scripts using readlink, etc.) but file manager support would be cool.
Issues:
- Dolphin: launch support
- Dex: link support
- xdg-open: link support
- Related:
.directory
file; the equivalent of Vim modelines.
Hash sum database
The way I thought of to implement this in Linux is to have a .desktop entry as:
[Desktop Entry]
Type=Link
Name=k&r
X-md5=c388f83ebee784d49e981f298713fda2
instead of
[Desktop Entry]
Type=Link
Name=k&r
URL=file:///home/user/books/k&r.pdf
If it’s possible to implement this feature then it’s simple to write
script.sh k&r.desktop
that looks up this file given its hash sum in the
plocate database. This makes it so that k&r.desktop
doesn’t have to be
edited every time a file is moved.
Type-ahead find
Type-ahead find is such an underrated feature that I don’t think people really paid attention to despite being from the file explorer of WindowsXP.
It lets you select a file by typing its initial characters. So far, the best GUI file managers implementing this are Thunar and Dolphin (I think even Windows Explorer has it). But Dolphin annoyingly added a “filtering” feature that made pressing a space an annoyance. This made me look into terminal file managers that I can set them precisely how I want without being affected by such annoying updates.
I don’t know why terminal file managers insist on vim keybindings. They could be
the best for editing text but not for navigating between files. This is like
using j,k
to move up and down inkscape tools instead of just pressing p
for
pen or t
for text.
Workaround
Ranger almost has this feature, but you need to type f
to enter
“find” mode. If there is a way to enable “find” mode in Ranger by default, this
will solve the problem.
I’m currently using lf, and the current workaround I figured was remapping of all keys
# Nav
map <a-h> updir
map <a-j> down
map <a-k> up
map <a-l> open
map <enter> open
map <space> :toggle
map <c-w> quit
map <f-2> rename
map q push :find<enter>q
map w push :find<enter>w
map e push :find<enter>e
map r push :find<enter>r
map t push :find<enter>t
map y push :find<enter>y
Deflinker
In MediaWiki, you can reference an article just by using its title enclosed by
double square brackets: [i][[Arch Install]][/i]
.
In HTML/Markdown, either an absolute or relative path must be specified.
I’m trying to achieve having MediaWiki reference style in Markdown, and I’m mainly using Vim as an editor. I have two thoughts about how to achieve this.
Universal solution: “deflinker”. Where a script deflates a directory recursively using symlinks. This is similar to how static site generators work. So even if you organize your markdown entries in subdirectories, you still end up with all html files in root directories.
In effect, referencing another markdown file will be something like
[code]
This is a [url](/l/other.md) to another md file.
[/code]
Assuming files are deflinked to /l/
-
See Chromium#Enabling_autoscroll and Firefox#Middle-click_behavior ↩︎
-
A sane default because it shows you the current progress or percentage of page you’re viewing. What’s ironic is that websites now like Discourse re-invent the wheel by adding a progress line indicating where in the page you are. ↩︎