Moving to Linux, Building my System

By Brad Lazaruk, Fri 05 July 2024, modified Fri 05 July 2024, in category Development

Anaconda, AppImageLauncher, Filen, Internxt, Linux, Mega, nbfc, Pop!_OS, Timeshift, Ubuntu, Work in Progress

Herein lies all the things I did to get my system to the state it is in today. Mostly this is a record so that I can re-create it if need be. But hey, it might also be helpful to someone.

  1. Install the system. Just accept all the defaults from the installation media. Make sure to enable the disk encryption and record the passwords.

  2. There are some great points here. I also probably am writing up this document because of being inspired by Willi. Thanks!

  3. Install Timeshift to capture backups of the state of the system. This still needs more testing to determine if it’s useful.

  4. NoteBook FanControl

    1. I found that the fans were not coming on effectively and the system was a bit hot. Installing this app and setting it to the “HP Spectre x360 Convertible 15-ch0xx” config has fixed this up.
  5. As part of my initial requirements to make the system look as much like Windows 11 as possible, to aid in my unconscious acceptance of the system, I’ve installed Dash to Panel. The configuration of it and the default dock are generally:

    1. In the system settings:
      1. Disable the default dock in the Settings > Desktop > Dock.
      2. Toggle some settings for the Top Bar in Settings > Desktop > Desktop Options. Remove the Workspaces and Applications Buttons. The Super Key Action should continue to be set to Launcher. Window Controls should have both Minimize and Maximize Buttons enabled.
    2. In Dash to Panel settings:
      1. The settings are backed up in ~/Documents and the differences between my settings and the defaults are not necessarily all captured below. Need to expand on this as further tweaks are identified.
      2. Position: remove the Applications button and set the Taskbar to Monitor Center.
      3. Style: Set App Icon Margin to 4. Tweak Animate hovering app icons settings.
      4. Running indicator: set focused app to Metro and unfocused apps to Dashes.
      5. Panel style: Override panel theme background opacity and set it to 50%, and enable the Dynamic background opacity.
  6. File Syncing / Backup

    1. This has been quite an adventure.
    2. My preferred sync option, Proton, doesn’t have a Linux app for their cloud drive (as of early July 2024). I tried Internxt and have had more problems than success with it. At this point I’m taking advantage of my free Dropbox account and Mega account to do some syncing. I also purchased a lifetime 100GB account from Filen which is working great. So right now I’m basically leaving everything in the various locations they were in before I moved to Linux and if I ever need something that’s when I get it to the local system and find a new permanent home for it.
      1. The big advantage right now is that Mega and Filen allow me to sync the local directories without moving them. Internxt allows me to backup the directories in place (except for the errors with the backup service), but if I wanted to sync them I need to move the directories to the Internxt Drive directory, and then symlink from my home folder. I don’t really want to do that and have to manage it (plus, it doesn’t reliably work right now).
    3. I also needed to capture game save information for the 2 or 3 games that I ever play. These were purchased through Steam for my Windows system. Thankfully they are functional on the Linux system with the Steam ProtonDB Windows emulation. To backup the game save information, I found the Windows filesystems in home//.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata/ and added those to my sync client.
      1. I chose to not use Steam Cloud here because I just have too many save files right now. When I get those reduced to a volume that can reliably live in Steam Cloud then that’s the path I’ll change to.
    4. I tried using Déjà Dup to create the backups and while it works well there isn’t a lot of reason to add another tool to the backup pipeline when Mega and Filen are syncing things just fine. I did try using Déjà Dup to run backups and store those in my Internxt Drive and let that sync up but that introduces a potential data loss between the time I change a file and the time of the next backup and sync. Again, since Mega and Filen sync in near real time there was no reason to use Déjà Dup here.
  7. Adding launcher icons for things that don’t otherwise have them

    1. For example, Anaconda.
    2. Thankfully, Joe Lotz has a page for this. Thanks again Joe.
    3. Just crete a desktop file in the applications directory: gedit ~/.local/share/applications/<application name>.desktop.
    4. And then add data to the file:
    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=<app name>
    Exec=<path>
    Icon=<path>
    Terminal=false
    1. Since I’ve only had to do this for Anaconda so far, I can make a list of the app icon locations fairly quickly:
      1. /home/<username>/anaconda3/lib/python3.7/site-packages/anaconda_navigator/app/icons/Icon1024.png
  8. Getting the graphics to work

    Pop!_OS has a few graphics options built in to the power menu. Initially I set mine to hybrid, thinking that it would be best to use the lower power integrated graphics as the default and then use the discrete GPU when necessary. Now, it became necessary when I was running some machine learning python code, which I was able to get running by adding the command __NV_PRIME_RENDER_OFFLOAD=1 <application>, per the support page.

    But when I tried running switching between GPU enabled apps and integrated apps, especially when using the docking station, I found the system started having power problems and would inevitably freeze. Sometimes these freezes could be recovered by removing the system from the dock, and sometimes I needed to hard reboot and lose whatever I was working it.

    I also found that I was unable to use my two external monitor plus laptop panel setup as the resolutions and zoom settings could not be set such that all three panels were useful at the same time.

    I suspect that my laptop simply does not use the discrete GPU for the external display(s) when in hybrid mode. It looks like maybe this is a bug with xorg, or that the problem may be solved with the new Cosmic DE.

    The solution was to just switch to using the nVidia graphics mode. Since then the performance with the dock has been fine, the system is not freezing when switching between applications, and I can once again use all three panels at the same time.

  9. Integrate AppImages

    1. Use AppImageLauncher
    2. Designate a directory to store the appimages, and set something to back it up if you like.
    3. Install the launcher:
    sudo add-apt-repository ppa:appimagelauncher-team/stable
    sudo apt update
    sudo apt install appimagelauncher
    1. Run the app and customise the integration directory to point to your designated directory.
    2. That’s it. Running appimages will pop up the launcher to ask if you want to move them and add launcher icons.
    3. Thanks to ostechnix.
  10. AntiVirus

    1. I get that a lot of advice says to not bother installing AV for Linux, but I’m hardcoded to need to see AV on my workstation. To this end, I installed ClamAV and ClamTK from the Pop!_Shop to be able to use it quickly.
  11. Keeping lists of installed applications

    1. To restore from a crash I’ll need to know what is installed.
      1. apt list --installed
      2. ls /usr/share/applications
      3. flatpak list
  12. Screenshots

    1. The default screenshot app is fine, but I like to be able to do quick pixelisations or annotations. On Windows I’ve been using Greenshot for years, but they have no Linux option.
    2. Thankfully, Flameshot exists. Does everything I need it to do on Linux.
    3. Install the DEB from their GitHub so that you can configure the system to use the Print Screen button to take a screenshot with the flameshot gui command. There may be a way to do this with the flatpak version that is available through the Pop!_Shop.
  13. Changing the behaviour when closing the laptop lid

    1. Thankfully I didn’t need to do any of this. But just in case this might be useful
  14. The fingerprint reader

    1. Apparently is not supported by either the gnome option or any of the other options I was able to find and try, such as fprint.
  15. LibreOffice

    1. Again, I’m interested in kinda forcing myself to stick with Linux by making it look as much as possible like my more familiar Windows surroundings.
    2. So, tweaking LibreOffice a bit doesn’t hurt.
    3. I also found that the versions of LibreOffice that come with Pop!_OS don’t seem to upgrade to the newest versions. To resolve this I did a fresh install of the Linux versions of the apps, and then removed those older ones that came with the OS.
  16. Photo Manager

    1. One of my big problems is that over the years my photos have become very duplicated and spaghettified. They are spread over hundreds of folder and renamed here and there in attempts to identify or save meta data. At times I’ve done mass restores to separate folders that then were merged - it’s a nightmare.
    2. After looking through some options, I settled on digiKam to try and help me sort this out. It looks like it does a great job of identifying duplicates which is the first step for me. Now I can go through all the files I have and sort them as I import them and remove the straight up duplicates.

Customise Apps

  1. vscodium
    1. Change the terminal with the command palette terminal: select default profile.
    2. Set up sync with the Settings Sync extension. Make sure it’s set to Auto Download and Auto Upload, add and remove extensions, and quiet sync (otherwise it keeps popping up an output window and taking the focus from any terminals that are running).
  2. PyCharm
    1. Change the terminal here too - use the New Terminal
  3. pandoc
    1. Required for some of my static sites. pandoc is a pain but it’s easy to fix thanks to this post. Basically, in conda you can get it working with conda install pandoc, and without conda there are other things that need doing.