I need a deep topic to hold ideas about my personal computing. This is it.
I replicate personal computing configurations between devices. A current technology used is syncthing. When I get a new device I install it; note: I don’t use the Android client, as I don’t have Android devices that meet my personal computing standards.
I use Gnome and Flatpak, so I install syncthing from Flathub.
flatpak install flathub me.kozec.syncthingtk
I currently have four synced directories:
- docs (
~/docs
) - my primary workspace; as projects finish I move them out of docs into an archive, keeping this a relatively lean amount of space. - sync (
~/.sync
) - currently syncs my KeePassXC vault, but separate for other, crucial files. - task (
~/.task
) - my taskwarrior files. I use syncthing rather than taskserver, since I only work on a single computer at a time, so I don’t get merge errors or anything. Occasionally I switch before syncing (I have it “watch” the directory, so syncing normally happens in near real-time), and the biggest issue I have is sometimes creating multiple versions of a recurring task template (one on both machines). - music (
~/music
) - syncs music from the archive to whichever machine I’m actively using. Considered syncing to phone for this purpose. Works well with my conversion to opus. - .dotfiles (
~/.dotfiles
) - configuration files. This was added to the sync roster as part of this exercise, because it makes a lot of sense of me.
To synchronize via syncthing one needs to add a Device Identification to the other device’s client. They provide QR code. I have two methods, depending on how rushed I am:
- Install Gajim, send ID to myself via XMPP+OMEMO
- Scan with barcode app and send to myself via Conversations and XMPP+OMEMO
Then I use the client on the existing device (likely to be Gajim) to get the ID and finish adding it.
I cache data feeds with FreshRSS, and normally read them with FeedReader, an RSS reader for Gnome. It is deprecated, and the developer is working on a client in Rust called NewsFlash. As FreshRSS uses the so-called “Google Reader” style API, and work to access it is underway in NewsFlash.
In the meantime I don’t have a clear upgrade path. I get by with FeedReader on devices that still have it.
flatpak install flathub com.gitlab.newsflash
I use KeePassXC for password management. I sync the vault via syncthing. Installed via flatpak:
flatpak install flathub org.keepassxc.KeePassXC
I use stow
to keep my dotfiles in order.
sudo dnf install stow
I spent considerable time considering if I should keep my dotfiles in git or fossil. But since I am already using syncthing, I’ve started syncing ~/.dotfiles
as well, and then using stow as needed for that machine.
To install my taskwarrior config:
[maiki@violet ~]$ cd .dotfiles/
[maiki@violet .dotfiles]$ stow -S task/
And done.
I use taskwarrior, and I get that from Fedora:
sudo dnf install task
Gajim for jabber chat! And OMEMO for privacy (who knows what the admin at mage.party can see?!).
Flatpak for the win:
flatpak install flathub org.gajim.Gajim
Flatpak apps may be containerized with access to each other, that’s how they have permission to operate together. For Gajim that means plugins are installed via flatpak as well, and have some docs at flathub · Wiki · gajim / gajim · GitLab.
[maiki@violet ~]$ flatpak search gajim.plugin
Name Description Application ID Version Branch Remotes
URL Image Preview Pl… Display a preview of links to images …im.Plugin.url_image_preview stable flathub
PGP Plugin XMPP Extension Protocol (XEP) for secure mu… org.gajim.Gajim.Plugin.pgp stable flathub
OpenPGP Plugin Experimental OpenPGP XEP-0373 Implementation ….gajim.Gajim.Plugin.openpgp stable flathub
OMEMO Plugin XMPP Extension Protocol (XEP) for secure mu… org.gajim.Gajim.Plugin.omemo stable flathub
Ayatana Appindicator… Integrate Gajim with the Ayatana AppIndicat… …m.Gajim.Plugin.appindicator stable flathub
Installing OMEMO as a flatpak is so simple! And it just works, too.
flatpak install flathub org.gajim.Gajim.Plugin.omemo
While I’m at it, I’ll go ahead and install the image previewer, which previews images served to me from the jabber server.
flatpak install flathub org.gajim.Gajim.Plugin.url_image_preview
Years ago I started customizing my user-dirs.dirs
, and have been reducing the directories in my home since.
Today, I keep the following user-dirs.dirs
in my .dotfiles
:
XDG_DOWNLOAD_DIR="$HOME/dl"
XDG_TEMPLATES_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/docs"
XDG_DESKTOP_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_MUSIC_DIR="$HOME/music"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/"
Which gives me this sweet home layout:
[maiki@violet ~]$ tree . -L 1
.
├── dl
├── docs
└── music
And Nautilus uses the config as well:
I use Deja Dup for incremental backups. However, I don’t use it on most computers, just lime
, the family server, which houses the photos archive.
flatpak install flathub org.gnome.DejaDup
The idea is that all my files I use actively are synced to lime
, and then backed up. That’s enough redundancy for me, personally.
I’m use a couple of binaries: fossil
and hugo
. Since these are essentially single user and may be static (meaning I choose when to upgrade, regardless of package manager), I’m going to try something new: using syncthing
on a new share at ~/.bin
.
If I look at my warez (the hard and soft instruments of processing), syncing parts of my “home” directory to various devices as needed really works for me. This could be a useful way to keep my binaries synced, when not using flatpak
.
I was going to add that to my .bashrc
and noticed:
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
So I moved .bin
to .local/bin
, which is fine with me. I’ll need to keep this in mind, depending on my environment…
My “personal computing” extends to at least one Android device, so it is worth noting how I use such devices.
Now that I’ve got LineageOS as the base, I install F-Droid, and install and configure select applications.
Oh, I actually configure F-Droid! But it is mainly to not use a “data connection” (meaning mobile SIM) to update, ever.
Looking at my Pixel XL, which apps do I need?
- barcode scanner (I rarely need it, but always do)
- Conversations (XMPP)
- …
And probably a different web browser…
I think I might start this from scratch, and not load a bunch of these until I reach for them, and then assess.
Oh, but definitely syncthing-android
!
When I check email I use a single computer to check all accounts, and process as a batch. Because sometimes email requires a response, I put aside this time to correspond.
I considered adding accounts to the tablet, but I prefer a full keyboard to process email, and I also don’t want my credentials carried on many devices. In this way I continue to marginalize email in my tech stack.