Last updated: 2022 May 24
- Node: Update
- Eagle: Create desktop entry
- JetBrains IDEs: Installation
- Matlab: Force nice SVGs
- Nautilus: Remote file access with SSH/FTP/SFTP
- Spotify Themes with Spicetify CLI
- Logitech mouse gesture buttons with Solaar
- Make PrusaSlicer default for 3MF files
Ubuntu comes with an old version of Node.js and it’s a pain in the ass to update and make it use the updated version. Node version manager (nvm) worked for me.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
In a node terminal/tab, list Node versions:
Install one of the versions, e.g.:
nvm install v10.9.0
Check that it’s now using the new version:
Source: Ask Ubuntu
Eagle is self-contained to a folder when you download and unpack, which is convenient for some things. But mostly not. I want to be able to open it like any other program.
Unpack the downloaded tar.gz file to
~/.local/share/Eagle/. You should now have a subfolder named something like
Create a file called
~/.local/share/applications/ containing the following:
[Desktop Entry] Name=Eagle Type=Application Exec=/home/<username>/.local/share/Eagle/eagle-<version>/eagle Terminal=false Icon=/home/<username>/.local/share/Eagle/eagle-<version>/bin/eagle-logo.png Version=<version> Categories=Development
<version> is the Eagle version number (like 8.6.3) and
<username> is your username. If you’re using a theme that has an icon for Eagle, you can replace the
Icon value with the name given to that icon. (For example, with the Papirus icons, just make this
Whenever you get a new version of Eagle, you’ll have to update the version number in this
.desktop file to point to the right location.
JetBrains makes nice IDEs for a bunch of languages (for us mere mortals who don’t use vim or emacs). But they don’t make installing on Linux super easy. Here’s how I do it.
- Download the relevant program and version from the JetBrains website (it’s a
- Extract the folder inside to
cdinto the bin folder:
- Run the launch script from the command line (something like
- When the program opens, click Tools > Create Desktop Entry. You can either make it user-specific or global.
If you’re installing an update, follow the same steps. Creating a new desktop entry should overwrite the old one, but probably differs by distro need to restart your session for it to take effect. (For me in Gnome, that’s Alt+F2, then
r). Also note that if you have a user-specific desktop entry, that will take precedence over a system-wide one.
By default, the created desktop file will use the icon in the installation folder. That means it will probably ignore an icon set by a theme (if you’re using one). You’ll have to do this after you create a new desktop file from updates as well.
- Open the desktop file (probably
~/.local/share/applications/jetbrains-<program>.desktopfor user-specific or
- In the line that says
Icon=change it to just the program name – e.g.,
Icon=pycharmand restart your session.
Sometimes Matlab decides that the figure you’re trying to export is too complicated for proper SVG exporting. When you go to export the figure with
saveas, it creates an SVG with embedded images instead of vector graphics. (This is all in Matlab 2014b and later, with its new graphics system.) After digging through Google results and documentation, there is a solution to force it to export as a vector image (from the
Set the renderer for your figure to
fig = figure; fig.Renderer = 'painter';
Then save the figure as normal:
And you’ll have a proper vector plot.
Sometimes it’s useful to be able to actually see the files that you are accessing remotely. So, instead of just using ssh in the command line, it’s useful to have a GUI. Instead of installing extra programs, though, you can just do it directly from within your file browser in Linux.
In the Nautilus file manager just enter into the location bar (you might have to hit Ctrl+L to edit it):
Or whatever your preferred accessing method is (ssh, stfp, ftp). (Also useful to remember: the change the location bar from buttons to a text field, hit Ctrl+L.)
The remote directory is then mounted and appears on the left side bar. It will stay mounted even if you close Nautilus, and you just have to click on it to re-open it. To unmount, just click the arrow next to it in the panel (like unmounting/ejecting a drive/disk).
Someone made a program that lets you add themes and extensions to Spotify. The Linux version only has a command line version, hence Spicetify CLI.
- Download the latest release (the Linux tar file)
- Make a folder and extract the tar file to it:
mkdir ~/spicetify tar xzf ~/Downloads/spicetify-x.x.x-linux-amd64.tar.gz -C ~/spicetify
x.x.xwith the version number you just downloaded)
- Make spicetify runnable from anywhere by your user:
ln -s ~/spicetify/spicetify ~/bin/spicetify
(This requires that you have
~/binas part of your PATH, as set up here)
- Generate a config file:
- When you get the above working with no errors, run:
spicetify backup apply enable-devtool
To get this to work, I needed to give write permissions to the Spotify install location: (This is the install location in my Ubuntu/Pop system; probably differs by distro)
sudo chmod 777 /usr/share/spotify -R
- Update Spotify with whatever changes you make:
There’s a whole repository of community-created themes for Spicetify
- Clone the
spicetify-themesrepository to Spicetify’s Themes folder:
git clone firstname.lastname@example.org:morpheusthewhite/spicetify-themes.git ~/.config/spicetify/Themes
(Note that the Themes folder location varies by OS)
- Change the theme:
spicetify config current_theme THEME_NAME
THEME_NAMEis one of the options in the Themes preview
- Apply the change and launch Spotify:
There are also Spicetify extensions, but I haven’t tried any of those yet.
Within the Solaar GUI, select the mouse (I’m using the MX Master 3) and click the “Rule Editor” button. In the “User-defined rules” section, right click and select “Insert new rule.”
From here, I created a sub-rule for each gesture direction. Right click on “[empty]” within the Rule and select “Insert here” > “Sub-rule.”
Right click on “[empty]” within the Sub-rule and select “Insert here” > “Condition” > “Mouse Gesture.” At the bottom of the window, begin typing the direction of the gesture, and it should autocomplete – for example “Mouse Up.” That’s all you need for the condition.
Now right click the “Mouse Gesture” condition and select “Insert below” > “Action” > “Key press.” At the bottom of the window, start typing the relevant key you want it to execute. You can also use “Add key” to add additional keys to the key combo you want to execute. For example I have “Super” + “W” set to move up a workspace.
Here’s what my configuration looks like for four gesture directions, plus reassigning the button underneath the scroll wheel.
Source: Solaar documentation
3MF is a compressed archive file format that (by default) Linux won’t distinguish from files like zip and tarball files. So if you just change 3MF files to open with PrusaSlicer, it will also change the default program for those others. To fix this, we need to tell get Linux to distinguish them with a new MIME type.
- Make a file named
- Copy and paste this into the file:
<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-3mf"> <comment>3D Manufacturing Format</comment> <icon name="application-x-3mf"/> <glob-deleteall/> <glob pattern="*.3mf"/> </mime-type> </mime-info>
- Update to use this new MIME type:
Now, you should be able to right click a 3MF file and set the default application to PrusaSlicer.
Note: The original instructions suggest adding the following line to
[Added Associations] section: application/x-3mf=prusa-slicer.desktop. However, this doesn’t seem to work when the
.desktop file using AppImageLauncher, so I find it easier to right click and set the default manually.