This setup is for creative/development tasks. Before blindly installing everything listed, go over the Software Details sections to see if the software could be useful.
- Pre-Install
- Install
- Initial Boot
- Set Up Display
- Installing / Updating the Kernel
- System Tweaks
- Create Common Directories
- Don't Require Password for Sudo
- Install Base Software
- Clone This Repo
- Set Up Shell
- Set Up Repos
- Set Up Shares
- Install Software
- Configure Software
- Back Up or Restore Data
- Useful Keyboard Shortcuts
- Useful Commands
- Useful Places
- Theming
- Troubleshooting
- System going to sleep after a few seconds on the Login screen
- Kernel Panic error after choosing "recommended" nvidia driver
- "error: out of memory" on boot right after grub menu
- Chrome Saved Passwords Not Showing Up in Settings
- How to Free Up Space?
- PulseAudio Volume Notification Keeps Popping Up
- File Managers randomly freeze when transfering CIFS files
- System Freezes/Locks When Entering Suspend
- Can't Boot Past Grub Menu
- "Couldn't Connect to Accessibility Bus" Warnings When Opening/Starting Something From CLI
- USB Drive Slow to Eject or Suffers Data Loss
- Steam Not Recognizing Bluetooth Controller
I use Ventoy to install my distros, so just download the distro and drop it in the designated isos
folder on your formatted USB drive.
Issue: Ventoy won't boot Solution: In order to allow Ventoy to load, you'll have to disable Secure Boot in the Bios. In some cases, to change the Secure Boot setting, you'll need to set a supervisor password. Once the password is set the Secure Boot option will no longer be grayed out and can be disabled.
Issue: Can't install Linux due to RST being enabled Solution: Go into the Bios. Location may vary, for me I found it under Main > Sata Mode > Changed it from
RST Premium with Optane
toAHCI
.
- Once the distro boots into it's live environment, double-click the Install item that should be on the Desktop.
- Choose the option to Erase disk, which should then ask you to choose the file system. I chose ZFS.
- The next screen prompts to choose the disk to install to. I want to dual-boot Windows and Linux and am installing Linux to a freshly installed unformatted drive.
There's a splash screen that can hide potential issues during boot, so disable it while settings things up.
sudo vi /etc/default/grub
# Replace `splash` in GRUB_CMDLINE_LINUX_DEFAULT with `nosplash`
sudo update-grub
I've had mixed results with Driver Manager (for installing the video driver), so this is the manual way of doing what it does.
-
Check what video driver is currently being used
lspci -k | grep -EA3 'VGA|3D|Display' | grep 'Kernel driver in use' # Should output a line with `nouveau` or `nvidia`.
If using an
nvidia
driver, you can find the version withcat /proc/driver/nvidia/version | grep -E 'Kernel Module [0-9]+' # or nvidia-smi | grep -E 'Driver Version: [0-9]+' # Should output a line with a highlighted number, which is the major version.
-
List available drivers to install
ubuntu-drivers devices | grep 'driver ' | grep -v '-server - ' # Should output lines like # driver : nvidia-driver-<VERSION> - distro non-free recommended # driver : nvidia-driver-<VERSION> - distro non-free # -- # driver : xserver-xorg-video-nouveau - distro free builtin
Generally use the
recommended
driver, then try the versions below it if you have issues. -
Install the driver
sudo apt install <DRIVER> # <DRIVER> being something like `nvidia-driver-450` or `xserver-xorg-video-nouveau`
If you want to uninstall a driver
sudo apt remove nvidia-driver-<VERSION> && sudo apt autoremove
If you have multiple monitors, launch Display
- Select your main monitor and toggle it to
Set as Primary
if it isn't already set. - Set the
Rotation
of other monitors if they're rotated. - Drag monitors roughly into the correct positions.
- Apply, keep changes, rinse-and-repeat while adjusting monitor positions.
- Under Settings I also unchecked
Enable fractional scaling controls
. Not sure if it was actually hurting anything, but I disabled at during some troubleshooting and things have been stable so it stays off for now.
Notes:
- If you have a dock that has one monitor hooked up, and another monitor is hooked up to a laptop, you may want to stick with the
nouveau
driver. It's the only one that's given me stable performance with a second monitor (via a dock).
I usually handle the kernel update via the Update Manager. Just be careful not to reboot before recompiling the NVidia modules (if you're using an NVidia video driver).
The theory is that after a kernel upgrade the new kernel is not active before the system is rebooted. To recompile the nvidia modules the new kernel needs to be active so this hasn’t been done as part of the upgrade process. So when one reboots after a kernel upgrade, the nvidia module is not able to communicate with the kernel (which usually leads to a user not being able to boot to the Desktop). The solution is to simply upgrade the linux-headers-<VERSION>
which will automatically trigger a recompile of the nvidia kernels.
sh sudo apt -y install "linux-headers-$(uname -r)"
The drivers should start working again even without a reboot.
```sh
# list installed driver
dkms status
# <ndvidia_driver_ver>, <kernel_ver>
```
- There's a limit of 15 characters for the
hostname
fornetbios
. You can runtestparm -s
to see if your hostname length is ok (when it's not you'll seeWARNING: The 'netbios name' is too long
).hostnamectl set-hostname '<NEW_NAME>'
mkdir -v -p ~/{.ssh,Downloads/{archives,debs},Projects/{3D,Code/{Apps,Games,Gists,Scripts},Img,Vid},Software} && chmod 700 ~/.ssh
echo "${USER} ALL = NOPASSWD: ALL" | (sudo EDITOR='tee -a' visudo)
sudo add-apt-repository -y ppa:git-core/ppa
sudo apt update && sudo apt install -y apt-transport-https git tilix vim
Expand for Software Details
Package | Description |
---|---|
apt-transport-https | Allows the use of repositories accessed via the HTTP Secure protocol (HTTPS), also referred to as HTTP over TLS |
git | Version control |
tilix | A tiling terminal emulator for Linux using GTK+ 3 |
vim | Configurable text editor for CLI |
Expand for Git Settings
# Only required if you plan to push changes to a repo
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
# Create key for github (if you don't already have one)
ssh-keygen -t ed25519 -C "<IDENTIFYING_COMMENT>" -f ~/.ssh/github
# print out key so it can be copied
cat ~/.ssh/github.pub
Add new key to https://github.com/settings/keys
Expand for Tilix Settings
Open Preferred Applications and change Terminal to Tilix
.
To fix the warning you get when you open Preferences:
- In your
.bashrc
or.zshrc
file addif [ $TILIX_ID ] || [ $VTE_VERSION ]; then source /etc/profile.d/vte.sh fi
- If
/etc/profile.d/vte.sh
doesn't exist run:sudo ln -s /etc/profile.d/vte-2.91.sh /etc/profile.d/vte.sh
Open Tilix Preferences
┎────────┒
┃ Global ┃
┖────────┚
(check) Save and restore window state
(check) Automatically copy text to clipboard when selecting
┎────────────┒
┃ Appearance ┃
┖────────────┚
Theme variant: Dark
┎──────────────────────┒
┃ Shortcuts > Terminal ┃
┖──────────────────────┚
Paste: Ctrl+V
┎────────────────────────────┒
┃ Profiles > Default > Color ┃
┖────────────────────────────┚
(uncheck) Use theme colors for foreground/background
Unfocused dim: 50%
Expand for Vim Settings
wget https://raw.githubusercontent.com/the0neWhoKnocks/setup.linux/main/distro/mint-cinnamon/files/.vimrc -P ~/
[ Optional ] Expand for DisplayLink Install (for Targus dock)
There are issues syncing monitors with DisplayLink on Linux especially when using Nvidia drivers.
# Download and install DisplayLink driver
wget https://cdn.targus.com/web/us/downloads/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu.zip -O ~/Downloads/driver__Targus_USB_DisplayLink.zip
unzip ~/Downloads/driver__Targus_USB_DisplayLink.zip -d ~/Downloads/Targus/
# Install deps
sudo apt install dkms
# The next step will prompt for a restart, skip it.
sudo ~/Downloads/Targus/displaylink-driver-*.run
# Patch udev entry, otherwise the system will freeze during boot
sudo vim /opt/displaylink/udev.sh
# find the `start_service` function around line 104, and change to:
- systemctl start displaylink-driver
+ systemctl start --no-block displaylink-driver
# save and exit
# Clean-up
rm -rf ~/Downloads/Targus
# reboot and verify things work
sudo reboot
If you want to remove displaylink, run:
sudo displaylink-installer uninstall
I ran into an issue where the system would freeze at the boot logo if the dock's USB was plugged in (only after the driver was installed). With the USB unplugged everything was fine. During boot I noticed it was hanging on the udev
service. I ran ls -la /etc/udev/rules.d/
and the only rule in there was 99-displaylink.rules
which was executing /opt/displaylink/udev.sh
. I came across a few posts to fix the freeze during boot:
- Post that calls out real fix which calls out
--no-block
- There was another that said to use
sudo systemctl mask systemd-udev-settle
. It worked, but it didn't target the issue specifically and could have masked other issues.
This is only required if you want to use the helper scripts.
cd ~/Projects/Code/Scripts && git clone git@github.com:the0neWhoKnocks/setup.linux.git && cd setup.linux/distro/mint-cinnamon
Install oh-my-zsh, plugins, and my custom theme (requires this step)
./bin/set-up-zsh.sh
Expand for Extra Tilix Settings
Print out colors to be manually added. Not needed if you have a dconf
backup.
cat ~/.oh-my-zsh/custom/themes/zsh-theme-boom/colors.sh
Open Tilix Preferences
┎────────────────────┒
┃ Profiles > Default ┃
┖────────────────────┚
┎─────────┒
┃ General ┃
┖─────────┚
(check) Custom font: FantasqueSansMono NF Regular 16
┎───────┒
┃ Color ┃
┖───────┚
(updated colors to match my zsh theme)
I have a private gist that contains a shell script with all the git clone
commands so I don't have to deal with finding all the repo URLs and remembering where everything should be cloned to.
Only required if you need access to a network share.
This an on-demand approach, like for a laptop that may not always be on your network. (requires this step)
(
cd ./bin
./user-script.sh --install "${PWD}/lan-shares.sh" "LAN Shares" "Utility to mount or unmount network shares" "drive-multidisk" "-gui"
)
- Run the new Launcher that was added to the Desktop
- Configure the settings for the share.
- The mounted folder needs to be in
/media
, or it won't be automatically detected.
- The mounted folder needs to be in
- Configure the settings for the share.
Here are some sources for finding alternatives to software you may have used on other OS's:
(
sudo add-apt-repository -y ppa:alex-p/aegisub
sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer
sudo add-apt-repository -y ppa:kdenlive/kdenlive-stable
sudo apt-add-repository -y ppa:lucioc/sayonara
sudo apt-add-repository -y ppa:remmina-ppa-team/remmina-next
sudo add-apt-repository -y ppa:ubuntuhandbook1/handbrake
sudo apt-add-repository -y multiverse
sudo apt update
sudo apt install -y aegisub cairo-dock cairo-dock-gnome-integration-plug-in cheese chromium dconf-editor flameshot git git-gui grsync grub-customizer guvcview handbrake hydrapaper inkscape kdenlive kid3-qt libnss3-tools lolcat meld mkvtoolnix-gui okular p7zip-full peek python-is-python3 python3-notify2 remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-vnc sayonara solaar soundconverter steam sticky vlc xclip xserver-xorg-input-synaptics
# remove some stuff that gets installed that I don't need
sudo apt remove hypnotix kwalletmanager
)
These require a User to answer prompts
sudo apt install sddm sddm-theme-breeze ttf-mscorefonts-installer wireshark
Optional
sudo apt install -y figlet obs-studio pavucontrol plasma-sdk
Expand for Software Details
PPA's can be found a couple of ways:
- https://launchpad.net/ubuntu/+ppas
- Or go to https://launchpad.net/PACKAGE_NAME, like https://launchpad.net/grub-customizer.
- Click on the Maintainer's link
- See if there's a Personal package archives section. If there is look for your package and click on the link.
- I then look through the dates for the Overview of published packages section, to see if it's an up-to-date package and being maintained.
Package | Description |
---|---|
aegisub | Subtitle editor |
cairo-dock | Customizable icon dock |
cairo-dock-gnome-integration-plug-in | GNOME integration plug-in for Cairo-dock. Needed for things like emptying trash |
cheese | Allows you to take photos and videos with your webcam. |
chromium | Browser without all the Chrome overhead |
dconf-editor | Tool to allow direct editing of the dconf configuration database. Sometimes allows for changing low-level settings not exposed in most GUIs. |
flameshot | Swiss army knife of screenshot tools |
git-gui | Handy when wanting to do per-line commit-staging |
grsync | A simple GUI for the rsync |
grub-customizer | Easily change and compile grub config |
guvcview | Capture images or video with webcam. (It's the only thing I've found that gives the option to mirror video) |
handbrake | Tool for converting video from nearly any format to a selection of modern, widely supported codecs |
hydrapaper | Allows for different images on multiple monitors |
inkscape | Tool to create vector images (Adobe Illustrator alternative) |
kdenlive | Video editor |
kid3-qt | Audio tag editor (TagScanner alternative) |
libnss3-tools | Network Security Service tools (installs certutil which I use to install certs for Browsers) |
lolcat | Add rainbow colors to text in CLI |
meld | Visual fill diff tool |
mkvtoolnix-gui | A set of tools to create, alter and inspect Matroska (mkv) & WebM files |
okular | Universal document viewer (PDFs, etc.) |
p7zip-full | Adds 7zip binaries for CLI |
peek | Simple screen recorder with an easy to use interface. Captures a specific parts of the screen, and can output '.apng', '.gif', '.mp4', and '.webm' |
python-is-python3 |
This ensures the symlink for python3 to python stays up to date during updates. |
python3-notify2 | Send Desktop notifications via Python |
remmina | Remote Desktop client |
sayonara | Music player |
sddm | A modern display manager for X11 and Wayland. ( Alternate DM than the default lightdm) |
sddm-theme-breeze | Clean centered theme with avatar |
solaar | Logitech unifying reciever peripherals manager for Linux |
soundconverter | Converter for audio files |
sticky | Post-it note app for your Desktop |
Steam | PC Gaming platform |
ttf-mscorefonts-installer | Installer for Microsoft TrueType core fonts. Needed to display fonts properly in browsers |
vlc | Multimedia player |
wireshark (meta-package) | Network traffic sniffer |
xclip | Copy from CLI to clipboard |
xserver-xorg-input-synaptics | Enables smooth/inertial/kinetic scroll for touchpads on long documents/webpages (requires reboot) |
Package | Description |
---|---|
figlet | Generate text banners for CLI |
obs-studio (non-flatpak) | Record or stream video |
pavucontrol | PulseAudio Volume Control |
plasma-sdk | Applications useful for Plasma development. I use it for Cuttlefish (an icon viewer) |
sqlitebrowser | A GUI based SQL toolkit |
Expand for Tweaks
Webcam apps may require a system reboot for them to work correctly.
Expand for kdenlive Settings
[ Environment ]
[ MLT env ]
(make sure paths point to current binaries (Melt was pointing to old path))
[ Default Apps ]
Image editing: /var/lib/flatpak/app/org.gimp.GIMP/current/active/export/bin/org.gimp.GIMP
Audio editing: /usr/bin/audacity
Animation editing: /usr/bin/glaxnimate
Expand for Steam settings
- Open Steam.
- Settings > Interface.
- On the "Interface" tab, find
Client Beta Participation
. There should be a dropdown menu withno beta chosen
as the default option. - Select the dropdown menu and select the
Steam Beta Update
option. - Restart Steam.
- Settings > Compatibility.
[X] Enable Steam Play for supported titles [X] Enable Steam Play for all other titles Run other titles with: Proton Experimental
flatpak install flathub codes.merritt.FeelingFinder org.gimp.GIMP org.gimp.GIMP.Plugin.GMic org.gimp.GIMP.Plugin.LiquidRescale org.gimp.GIMP.Plugin.Resynthesizer
Expand for Software Details
List what's currently installed flatpak list
.
Search for packages with flatpak search <PACKAGE>
, like flatpak search org.gimp.GIMP.Plugin
.
bin
path for apps: /var/lib/flatpak/exports/bin
.
Package | Software | Description |
---|---|---|
codes.merritt.FeelingFinder | Feeling Finder | Emoji picker |
hu.irl.cameractrls | Camera Ctrls | Logi Tune alt for adjusting settings in Web apps |
org.gimp.GIMP | GIMP | Image editor (alternative to Adobe Photoshop) |
org.gimp.GIMP.Plugin.GMic | G'MIC | A large set of filters |
org.gimp.GIMP.Plugin.LiquidRescale | LiquidRescale | Scale an image, but don't scale selected items |
org.gimp.GIMP.Plugin.Resynthesizer | Resynthesizer | Content-aware removal of selected items |
Expand for GIMP Tweaks
Software | Description |
---|---|
PhotoGIMP | Makes GIMP look like Photoshop |
(
mv ~/.config/GIMP/2.10 ~/.config/GIMP/2.10.bak
wget "https://github.com/Diolinux/PhotoGIMP/releases/download/1.1/PhotoGIMP.by.Diolinux.v2020.1.for.Flatpak.zip" -O ~/Downloads/archives/PhotoGIMP_v2020.1.zip
unzip ~/Downloads/archives/PhotoGIMP_v2020.1.zip -d ~/Downloads/archives/
cd ~/Downloads/archives/PhotoGIMP.by.Diolinux.v2020.1.for.Flatpak
rsync -r ./.local/share/applications/ ~/.local/share/applications/
rsync --mkpath -r ./.local/share/icons/hicolor/ ~/.local/share/icons/hicolor/
rsync -r ./.var/app/org.gimp.GIMP/config/GIMP/2.10 ~/.config/GIMP/
cd ../ && rm -rf PhotoGIMP.by.Diolinux.v2020.1.for.Flatpak
)
Expand for FeelingFinder Tweaks
Dunno how they came up with that name, but it doesn't cut it when searching in an App launcher.
sudo vim /var/lib/flatpak/exports/share/applications/codes.merritt.FeelingFinder.desktop
- Name=Feeling Finder
+ Name=Emoji Picker (Feeling Finder)
+ Keywords=Emoji;Picker;
(
DEBS_DIR=~/Downloads/debs
urls=(
'https://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_18.04/amd64/albert_0.17.6-0_amd64.deb'
'https://github.com/sharkdp/bat/releases/download/v0.22.1/bat_0.22.1_amd64.deb'
'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb'
'https://discord.com/api/download?platform=linux&format=deb'
'https://github.com/jgraph/drawio-desktop/releases/download/v25.0.2/drawio-amd64-25.0.2.deb'
'https://updates.insomnia.rest/downloads/ubuntu/latest?&app=com.insomnia.app&source=website'
'https://github.com/Peltoche/lsd/releases/download/0.23.1/lsd_0.23.1_amd64.deb'
'https://github.com/subhra74/snowflake/releases/download/v1.0.4/snowflake-1.0.4-setup-amd64.deb'
'https://update.code.visualstudio.com/1.73.1/linux-deb-x64/stable'
'https://torguard.net/downloads/new/torguard-latest-amd64.deb'
'https://gitlab.com/api/v4/projects/19921167/jobs/artifacts/release/raw/build/glaxnimate.deb?job=linux%3Adeb'
)
for url in "${urls[@]}"; do
wget --content-disposition "${url}" -P "${DEBS_DIR}/"
done
sudo dpkg -i "${DEBS_DIR}/"*.deb
sudo apt install -f -y
)
Expand for Software Details
Software | Description |
---|---|
Albert | Launcher (alternative to Wox). In the Installing page look for look for the OBS software repo link for downloads. |
bat | Like cat , but displays a limited amount of a file and with syntax highlighting |
Chrome | Browser |
Discord | Group text/voice/video communication |
Draw.io | Desktop version of the Web-App to draw flowcharts and diagrams. |
Glaxnimate | A simple and fast vector graphics animation program (alternative to Adobe Animate/Flash). |
Insomnia | API development |
lsd | A Deluxe version of the ls command |
Snowflake | SFTP Client (alternative to WinSCP) |
TorGuard | VPN client |
VS Code | IDE, advanced text editor |
Expand for Chrome Tweaks
To stop making it prompt for updates:
-
Update all shortcuts and add
--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'
There may be a shortcut on your desktop and in
/usr/share/applications/google-chrome.desktop
.Search for
Exec
and add the argument to every instance. For the one that ends in%U
, put it before%U
.
Expand for Discord Tweaks
To make Discord not prompt for updates all the time
vim ~/.config/discord/settings.json
# add:
"SKIP_HOST_UPDATE": true
Expand for TorGuard Tweaks
For now, TorGuard requires Wireguard so install via: sudo apt install wireguard
.
(
ARCH_DIR=~/Downloads/archives
urls=(
'https://github.com/aristocratos/btop/releases/download/v1.2.13/btop-x86_64-linux-musl.tbz'
'https://github.com/BrunoReX/jmkvpropedit/releases/download/v1.5.2/jmkvpropedit-v1.5.2.zip'
'https://github.com/godotengine/godot/releases/download/4.0-stable/Godot_v4.0-stable_linux.x86_64.zip'
'https://www.blender.org/download/release/Blender3.4/blender-3.4.1-linux-x64.tar.xz/'
)
for url in "${urls[@]}"; do
wget --no-clobber "${url}" -P "${ARCH_DIR}/"
file="$(basename "${url}")"
version="$(basename $(dirname "${url}"))"
pkg="$(echo "${file}" | awk -F '[-_]' -v name=1 '{print $name}')"
outputPath="${HOME}/.local/bin/${pkg}/${version}/"
mkdir -p "${outputPath}"
if [[ "${file}" == *.zip ]]; then
unzip "${ARCH_DIR}/${file}" -d "${outputPath}"
else
tar --strip 1 --extract --file "${ARCH_DIR}/${file}" --directory="${outputPath}"
fi
done
)
Expand for Software Details
Software | Description |
---|---|
Blender | 3D asset creation |
btop | Resource monitor that shows usage and stats for processor, memory, disks, network and processes |
godot | Game engine |
jmkvpropedit | A batch GUI for mkvpropedit. Allows for editing headers of multiple mkv files |
Expand for Tweaks
Have to run the install script for btop from within the directory
(
cd ~/.local/bin/btop/v1.2.13/btop/
./install.sh
)
Has to be executable to run
chmod +x ~/.local/bin/jmkvpropedit/v1.5.2/JMkvpropedit.jar
cp files/godot/godot.desktop ~/.local/share/applications/
chmod +x ~/.local/share/applications/godot.desktop
cp files/godot/godot.svg ~/.icons/
# may have to update the version path for `Exec=` in `.desktop`
cp files/blender/blender.desktop ~/.local/share/applications/
chmod +x ~/.local/share/applications/blender.desktop
cp files/blender/blender.svg ~/.icons/
For packages that require more than a simple apt install
.
Software | Description |
---|---|
docker | Containerize environments |
docker-compose | Create config files for Docker containers |
FreeFileSync | A tool to wire up backups. Those backup configs can then be reversed to restore data. |
git lfs | Allows for storing large files outside of git repos. |
n | NodeJS version management |
qemu | A machine emulator and virtualizer |
Docker
(
sudo apt install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(cat /etc/os-release | grep "UBUNTU_CODENAME" | sed "s|UBUNTU_CODENAME=||") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER
)
Verify install
systemctl is-enabled docker
systemctl status docker
sudo docker run hello-world
Notes:
The instuctions for setting up the repo are Ubuntu specific and call out lsb_release -cs
which doesn't work on Mint. I created an alternative
cat /etc/os-release | grep "UBUNTU_CODENAME" | sed "s|UBUNTU_CODENAME=||"
I verified it was the correct name by going to https://download.docker.com/linux/ubuntu/dists/ to see the available names, and checking the Ubuntu releases https://wiki.ubuntu.com/Releases.
Docker Desktop now exists for Linux, but I've had issues with it:
- Not being up-to-date
- Trying to sell me something
docker-compose
has been replaced with docker compose
. The new compose spec is more universal but it also deprecates some fields.
'n' NodeJS version manager
May want to verify this hasn't changed in the repo.
curl -L https://bit.ly/n-install | bash
The script will add an export
line to your .bashrc
. If you use another shell, copy that line to your *rc
file and source your shell. Once that's done, you can choose and install the version of NodeJS that you want.
# list available versions to download
n ls-remote
# install your preferred version
n install 18
# Check version
node -v
Qemu (Virtual Machine Manager)
(
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
sudo adduser $USER libvirt && sudo adduser $USER kvm && sudo adduser $USER libvirt-qemu
)
You'll have to log out/in for it to work with your current user, but you can test with
sudo virt-manager
FreeFileSync
(
cd "${HOME}/Downloads/archives"
ver="13.5"
tarFileName="FreeFileSync_${ver}_Linux.tar.gz"
runFileName="FreeFileSync_${ver}_Install.run"
if [ -f "$tarFileName" ]; then rm "$tarFileName"; fi
if [ -f "$runFileName" ]; then rm "$runFileName"; fi
curl -L -O "https://freefilesync.org/download/${tarFileName}"
tar zxvf "$tarFileName"
chmod +x "$runFileName"
"./$runFileName"
rm "$runFileName"
)
git lfs
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs
git lfs install
Optional
Software | Description |
---|---|
lutris | Allows for playing games on Linux. Use to install Origin |
Lutris
(
sudo add-apt-repository -y ppa:lutris-team/lutris
sudo apt update
sudo apt install lutris
)
At this point you should probably restart so things like the GPU driver and Display Manager can do their initial boot stuff. You may experience some odd boot stuff the first time around, and a second reboot may solve any quirks.
During boot you may see a bunch of lines printed in the terminal before the login screen appears. There may be some errors hidden in there. After you log in, you can check for errors by running
dmesg | grep -i "error\|warn\|fail"
Expand to view common issues and solutions
-
Issue: ACPI BIOS Error
Expand for Solution
Apparently this has been a known issue and can be ignored.
sudo vim /etc/default/grub # Replace `quiet` in the GRUB_CMDLINE_LINUX_DEFAULT with `loglevel=3` sudo update-grub
If you have a previous backup that utilized dconf
, you can restore it now which may save you some configuration time.
# Restore GNOME settings
dconf load / < ~/settings.dconf
# If you want to import keys for specific packages, the only thing I've found is to copy those sections to another `.dconf` file and run the same command above but with the new file.
If you have any self-signed certificates that your browsers utilize, you'll need to install them now.
sudo apt-get install -y ca-certificates
sudo cp <CERT_NAME>.crt /usr/local/share/ca-certificates
sudo update-ca-certificates
- In some cases, changes don't take effect right away and a restart may be required.
- In some cases a restart doesn't work, for example Browsers sometimes have their own certificate area where you have to manually add a cert. For example, in Chrome you can go to Settings > search for
cert
> click Security > click Manage Certificates > go to Authorities and add your cert.
If you have any back-ups of your keyrings, you'll need to install those especially if any Browsers have saved credentials locally and you're bringing those profiles over.
- After initially copying over the
.local/share/keyrings
files, you'll need to open up the System Monitor and killgnome-keyring-daemon
.- If that doesn't work, then
systemctl --user stop gnome-keyring && systemctl --user start gnome-keyring
.
- If that doesn't work, then
- Then open up Passwords and Keys and unlock the Login item. Then you can open up stuff like Chrome or anything that has locally saved passwords.
Control your monitor's temperature (limit blue light). For now redshift
and redshift-gtk
come pre-installed so just do the below.
# NOTE: This file could conflict with the 'qredshift' applet so just use 'Redshift'
cp -i ./files/redshift.conf ~/.config/
Launch Redshift (it starts redshift-gtk
and adds it to the bottom bar). Right-click on it and check Enabled
and Autostart
.
Expand for Session Management
XFCE has this exposed where you can choose to save sessions and delete the ones that exist. Cinnamon has it hidden away.
Launch dconf Editor and navigate to /org/cinnamon/cinnamon-session/
toggle on the auto-save-session
option.
Expand for Update Manager
[Edit > Preferences]
[Options]
- Uncheck "Refresh the list of updates automatically"
Expand for File Manager
I've tried dolphin
, nemo
, and thunar
.
dolphin
had the benefit of natural sorting which all othe managers seem to lack currently, but it's slow to load and currently doesn't allow for excluding paths from thumbnail generation.nemo
ships with Cinnamon but it currently suffers from thumbnail generation issues (sometimes works, sometimes doesn't, or doesn't generate thumbs for all types).thunar
ships with XFCE. It's snappy, allows for Custom Actions via context menus that you can easily write yourself, and allows for defining rules for thumbnail generation.
Install Thunar and dependencies
(
sudo add-apt-repository ppa:christian-boxdoerfer/fsearch-stable
sudo apt update
sudo apt install fsearch thunar thunar-archive-plugin tumbler-plugins-extra
)
Thunar uses tumbler
for generating thumbnails. Most File Managers have options to not show thumbnails on network paths, but cifs
mounts may not fall under that category even though they can be. This will instruct tumbler
what paths to ignore in that case.
(
# Clear any generated thumbnails
rm -rf ~/.cache/thumbnails/*
# Create rc file for tumbler
mkdir ~/.config/tumbler
cp /etc/xdg/tumbler/tumbler.rc ~/.config/tumbler
# Exclude specific paths from having thumbnails generated
vi ~/.config/tumbler/tumbler.rc
)
# Find all the instances of `Excludes=` and add the paths
Excludes=<PATH1>;<PATH2>
tumblerd
can't be restarted so you have to log out/in
Launch FSearch, go to:
Edit > Preferences
[Database] (uncheck) Update database on start [Include] (add) /home/<USER>
Search
(check) Search in Path (check) Match Case
Prepare custom actions:
- You can add your own in Thunar by adding commands directly, but I prefer to use files
mkdir -p ~/.config/Thunar/actions
- Add your scripts (I symlink to ensure things keep in sync):
ln -s "${PWD}/files/thunar/copy-filename.sh" ~/.config/Thunar/actions/ ln -s "${PWD}/files/thunar/copy-full-path.sh" ~/.config/Thunar/actions/ ln -s "${PWD}/files/thunar/open-as-root.sh" ~/.config/Thunar/actions/ ln -s "${PWD}/files/thunar/view-metadata.py" ~/.config/Thunar/actions/
- If you need to debug scripts, run
tail -f ~/.xsession-errors
, and try using your action.
Launch Thunar and go to:
Edit > Configure custom actions
- Fix the Open in Terminal. Just change it's Command to
tilix
(or your preferred terminal). - Fix the Search option that ships misconfigured with
catfish
which doesn't get automatically installed. Double-click on it:[Basic] Command: fsearch -s %f Keyboard Shortcut: Ctrl+F
- (click) Add a new custom action
[Basic] Name: Copy Filename Description: Copies a file's name without it's extension Command: ~/.config/Thunar/actions/copy-filename.sh %f Icon: edit-copy [Appearance Conditions] (check all items)
- (click) Add a new custom action
[Basic] Name: Copy Full Path Description: Copies a file's full path Command: ~/.config/Thunar/actions/copy-full-path.sh %f Icon: edit-copy [Appearance Conditions] (check all items)
- (click) Add a new custom action
[Basic] Name: Open as Root Description: Open item with root privelages Command: ~/.config/Thunar/actions/open-as-root.sh %f Icon: applications-utilities (or system-run) [Appearance Conditions] [X] Directories [X] Text Files [X] Other Files
- (click) Add a new custom action
[Basic] Name: View Metadata Description: View metadata for a file Command: ~/.config/Thunar/actions/view-metadata.py %f %n Icon: dialog-information [Appearance Conditions] [X] Audio Files [X] Video Files
- Fix the Open in Terminal. Just change it's Command to
Edit > Preferences
[Display] View new folders using: List View Show thumbnails: Local Files Only Date > Format: Custom, %Y-%m-%d [Behavior] (check) Show action to permanently delete files and folders
View
- Location selector:
Toolbar style
- (check) Show Hidden Files
- Location selector:
- You may have to change the current view to Compact View. Then I
CTRL++
orCTRL+-
to get the icons and text to a size I like.
Expand for System Settings
[Appearance]
[Backgrounds]
[Images]
Vera > Sparkling
[Font Selection]
Default font: Ubuntu Regular 12
Desktop font: Ubuntu Bold 12
Document font: Sans Regular 12
Monospace font: Monospace Regular 12
Window title font: Ubuntu Medium 12
Text scaling factor: 1.0
[Themes]
[Themes]
Mouse Pointer: Bibata-Modern-Classic
Applications: Mint-Y-Dark-Aqua
Icons: Mint-L-Aqua
Desktop: Mint-L-Dark-Aqua
[Settings]
Jump to position when clicking in a trough: (checked)
──────────────────────────────────────────────────────────────────────────────
[Preferences]
[Accessibility]
[Keyboard]
Use visual indicator on Caps and Num Lock (check) (if you don't want to use the 'betterlock' applet)
[Account Details]
Picture: (choose avatar)
Name: (change to a preferred display name)
[Applets]
[Download]
CinnVIIStartMenu
Lock keys indicator with notifications (betterlock)
Weather
[Manage]
(select and Add the downloaded items)
[Calendar]
Use a custom date format: (checked)
Date format: 【 %a. %b. %e 】【%l: %M %p 】
[CinnVIIStartMenu] (disable the Menu applet, and replace it with this by going into 'Panel edit mode' in the taskbar)
[Menu]
Menu layout: MATE-Menu
[Panel]
Use a custom icon and label: (checked)
Icon: linuxmint-logo-simple-symbolic
Text: enu
[Sidebar]
Separator below user account info box: (checked)
[Grouped window list]
[General]
Group windows by applications: (uncheck)
[Panel]
Button label: Window title
Show window count numbers: (uncheck)
[Lock keys indicator with notifications]
Show caps lock indicator: (checked)
Show num lock indicator: (checked)
[Notifications]
Show empty tray: (checked)
(click 'Open notification settings')
Remove notifications after their timeout is reached: (checked)
Show notifications on the bottom: (checked)
Notification duration (seconds): 2
Media keys OSD size: Small
[Power Manager]
Display: Show percentage
[Weather]
[Weather]
Data service: OpenWeatherMap
Forecast length (days): 7
[Location]
(add locations in Saved Locations)
(get the lat/lon from Google Maps, just right-click it'll be the first item, you only need to the 6th decimal for each value)
(for the City I went with '<CITY>, <ABBREVIATED_STATE>')
(timezone America/Los_Angeles)
(Once items are added you can click on the panel item, and at the top of the forecast there'll be a location with horizontal arrows. Click on an arrow to go to a saved location)
[Desktop]
Desktop Layout: No desktop icons
[Hot Corners]
Enable top left: Show the desktop
[Preferred Applications]
[Preferred applications]
Web: Google Chrome
Music: Sayonara Player
Video: VLC media player
File Manager: Thunar File Manager
Terminal: Tilix
[Screensaver]
Delay before starting the screensaver: Never (nothing else really works when running long CLI commands, I don't want it to lock in the middle of a process)
[Startup Applications]
Albert (check)
Cairo-Dock (check)
mintwelcome (uncheck)
Print Queue Applet (uncheck)
Redshift (check)
Solaar (check)
Support for NVIDIA Prime (uncheck)
[Windows]
[Alt-Tab]
Alt-Tab switcher style: Icons and window preview (the 3D options seem to cause screen freezing issues)
Delay before displaying: 200 (when switching quickly, no need for extra overhead)
──────────────────────────────────────────────────────────────────────────────
[Hardware]
[Mouse and Touchpad]
[Touchpad]
Click actions: Use multiple fingers for right and middle click
Reverse scrolling direction: (uncheck)
Speed: Roughly 65%
[Network]
[Wi-Fi]
(disable while wired)
[Power Management]
[Power]
| on A/C | on Battery
---------------------------------------------------------------
Turn off the screen when inactive for: 15 minutes | 15 minutes
Suspend when inactive for: Never | Never
When the lid is closed: Do Nothing | Suspend
---------------------------------------------------------------
When the battery is critically low: Shut down immediately
[Sound]
[Input]
(Internal Microphone Built-in Audio)
(click the speaker icon to mute/disable it)
[Sounds]
(customize system sounds)
──────────────────────────────────────────────────────────────────────────────
[Administration]
[Login Window] (only effects re-login from Suspend)
[Appearance]
Background: (choose image)
GTK theme: Mint-Y-Legacy-Dark-Aqua
Icon theme: Mint-Y-Legacy-Dark-Aqua
[Users]
Allow guest sessions: (checked)
Expand for Albert Settings
I use QML Box Model
so that SVG icons show up clearly.
┎─────────┒
┃ General ┃
┖─────────┚
Hot key: Ctrl+Space
Frontend: QML Box Model
Terminal: Tilix
Autostart on login: (checked)
Style: BoxModel (click the button next to it)
item_title_fontsize: 30
item_description_fontsize: 20
font_name: Ubuntu Mono
Apply theme: DarkMagenta
Display scrollbar: (check)
┎────────────┒
┃ Extensions ┃
┖────────────┚
[X] Applications
[X] WebSearch
Expand for Cairo-Dock Settings
If you want to switch from OpenGL go into ~/.config/cairo-dock/.cairo-dock
and update:
- default_backend=opengl
+ default_backend=cairo
To have it start on boot go into Startup Applications. Add > Choose Applications > pick Cairo-Dock
.
In order to add launchers to the dock, I go into the taskbar menu and search for the application. Once I find the application you can sometimes just drag it right to the dock, but more often than not I just right-click the app and choose Add to desktop
. Then I can drag that launcher to the dock.
Note that when a launcher is added to the dock, a copy of it is added to ~/.config/cairo-dock/current_theme/launchers
. So if a launcher needs to be updated, I'll generally just delete it and add the new one, but you can go in and manually edit the launcher in that folder.
When manually creating a launcher I look to see if there's a good system icon via cuttlefish
instead of pointing to an image. Some apps like system binaries may not have an icon, so you can find/create one and add it to the appropriate folder in ~/.local/share/icons
. More info on that in the Theming section.
- After an update in Mint, I noticed some icons I was previously using were no longer available in the current theme. You can see what icon theme is in use under Cairo-dock > Configuration > Appearance > Icons
. It seems to default to _Custom Icons_
which is located at /home/<USER>/.config/cairo-dock/current_theme/icons/
, and allows you to drop custom icons (SVG or PNG) directly in there. You can reference the files the same way as system icons, for example if you have code.svg
you can reference it as code
in the Launcher Icon > Image's name or path
section. Missing icons may still exist within a different theme, so in a file browser you can open up /usr/share/icons/
and search for the name that was previously being used, then just copy that file over to <CAIRO>/current_theme/icons/
.
Had an issue where Cairo wasn't using my default File Manager to open folders. It must be caching it somewhere because after I went into Default Applications, and changed my File Manager to something else, and then back to what I wanted, it started behaving.
Expand for Grub Settings
You can use Grub Customizer or CLI
sudo vim /etc/default/grub
# Decrease duration that grub menu displays
- GRUB_TIMEOUT=10
+ GRUB_TIMEOUT=2
sudo update-grub
Expand for Inkscape Settings
Keyboard Shortcuts
Keys | Description |
---|---|
CTRL+SHIFT+R |
Resize canvas to content |
% |
Toggle snaps on/off |
To move the tools on the right to the top, go to View > (at bottom, change to) Custom
.
Preferences
[ Interface > Themeing ]
GTK theme: Adwaita
(check) Use dark theme
change icon theme: multicolor
(check) Use symbolic icons
[ Behavior > Transforms ]
(uncheck) Scale stroke width
Expand for LSD Settings
(
mkdir -p ~/.config/lsd
cp -i ./files/lsd/config.yaml ~/.config/lsd/
)
Expand for Qemu Settings
- After the initial install, a reboot may be required to run
virsh
commands withoutsudo
. - Verify things are running correctly with
# list VMs - should be empty virsh -c qemu:///system list # make sure virtualization daemon is running systemctl status libvirtd.service
- Start up virt-manager. If you run your quick launcher and type
virt
, an entry forVirtual Machine Manager
should come up. Run it.- Go to Edit > Preferences
[General] [X] Enable system tray icon
- Go to Edit > Preferences
Expand for Remmina Settings
- Preferences > Applet > [X] No tray icon (To close the app when you've closed all windows. May require you to kill the process the first time if you change this setting from the tray icon and all windows are already closed).
Expand for Sayonara Settings
[File > Preferences]
[Application]
(untick) Update notifications
[User Interface]
[General]
(untick) Show large cover
[Icons]
(tick) Also apply this icon theme to the dark style (makes the volume icon look funny, but otherwise the icons in file picker are almost invisible, so it's required)
(tick) Mint-Y-Dark
[Playlist]
[Behavior]
Start up:
(tick) Load temporary playlists
(tick) Load last track on startup
(tick) Remember time of last track
[Look]
(tick) Show footer
(untick) Show numbers
(tick) Show covers
Custom font color in dark theme: #2ad8ff
Playlist item text: %nr% - %title%
[Covers]
(untick) Save found covers to database
(untick) Fetch missing covers from internet
[Plugins]
(tick) Level (customize colors by mousing over and clicking button)
[View]
(untick) Show Library
(untick) Show Large Cover
Expand for SDDM Settings
(
# To configure the theme, create a custom config for sddm
sudo mkdir -p /etc/sddm.conf.d
sudo cp -i ./files/sddm/10-custom.conf /etc/sddm.conf.d/
# Then a custom config for the theme, adjust values as you see fit (these changes will persist after theme updates)
sudo cp -i ./files/sddm/theme.conf.user /usr/share/sddm/themes/breeze/
)
You can test the theme via: sddm-greeter --test-mode --theme /usr/share/sddm/themes/breeze
. If there are errors, you may want to pick a different theme.
The backgrounds for a theme are set in /usr/share/sddm/themes/<THEME>/theme.conf
on the background=
line.
Generally themes point to the global wallpapers so an image can be displayed for any user. Those wallpapers are in /usr/share/wallpapers
.
To more easily view all wallpapers I open that directory with a file manager, and do a search for screenshot.jpg
, then I can just browse through the results, and find the path for the wallpaper I want.
Once you have a wallpaper you like, create/update your config's background line, and you'll see the new image after a reboot. Note that you'll see your User wallpaper on the lock screen.
If your user icon isn't showing up, look in /var/lib/AccountsService/icons/
and see if an icon exists with your user name. If not, try picking and choosing an icon again from Account Details.
If you have multiple monitors hooked up, things will likely be jacked up when the login screen appears. Here's how to fix it:
# get info about connected monitors
xrandr | grep -w connected
# In my case the output was:
# --------------------------
## HDMI-0 connected 1080x1920+1920+0 left (normal left inverted right x axis y axis) 531mm x 299mm
## DP-1 connected (normal left inverted right x axis y axis)
## DP-3 connected primary 1920x1080+0+423 (normal left inverted right x axis y axis) 531mm x 299mm
# --------------------------
# HDMI-0 is my secondary vertical monitor to the right of my primary DP-3. DP-1 is the closed laptop.
# add rules so the login behaves
sudo vim /usr/share/sddm/scripts/Xsetup
# -------------------------------------
xrandr --output DP-3 --auto --primary
xrandr --output HDMI-0 --right-of DP-3 --rotate left --noprimary
# -------------------------------------
If sddm
isn't behaving, you can revert to the default with sudo dpkg-reconfigure lightdm
.
Configuration doc: https://wiki.archlinux.org/title/SDDM#Configuration
View the default config: sddm --example-config | bat
Expand for Sticky Settings
Preferences
[General]
Tray icon: (checked)
Show the main window automatically: (unchecked)
[Automatic start]
Start automatically: (checked)
Show notes on the screen: (checked)
Expand for VLC Settings
Download custom skin (I've stopped doing this because the skins don't always behave. Leaving for reference.)
mkdir ~/.config/vlc/skins
wget http://www.videolan.org/vlc/download-skins2-go.php?url=subX.vlt -O ~/.config/vlc/skins/
Preferences
┎───────────┒
┃ Interface ┃
┖───────────┚
Use custom skin: ~/.config/vlc/skins/subX.vlt
┎───────┒
┃ Video ┃
┖───────┚
Video snapshots
Directory: ~/Pictures/vlc
Format: jpg
Expand for VS Code Settings
Extensions:
- Ascii Tree Generator https://marketplace.visualstudio.com/items?itemName=aprilandjan.ascii-tree-generator
- All Autocomplete https://marketplace.visualstudio.com/items?itemName=Atishay-Jain.All-Autocomplete
- VSCode has the built-in
Word Based Suggestions
but it's not smart enough to handle variable suggestions during a destructuredimport
if the variable is assigned to an Object.
- VSCode has the built-in
- Alphabetical Sorter https://marketplace.visualstudio.com/items?itemName=ue.alphabetical-sorter
- Auto-Rename Tag https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag
- Base IDE https://marketplace.visualstudio.com/items?itemName=mads-hartmann.bash-ide-vscode
- Blueprint https://marketplace.visualstudio.com/items?itemName=teamchilla.blueprint
- Change-case https://marketplace.visualstudio.com/items?itemName=wmaurer.change-case
- dotenv https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv
- Easy Snippet https://marketplace.visualstudio.com/items?itemName=inu1255.easy-snippet
- ESLint https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
- File Icons https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons
- File Utils https://marketplace.visualstudio.com/items?itemName=sleistner.vscode-fileutils
- Git Commits https://marketplace.visualstudio.com/items?itemName=exelord.git-commits
- Git Last Commit Message https://marketplace.visualstudio.com/items?itemName=JanBn.git-last-commit-message
- git-rename https://marketplace.visualstudio.com/items?itemName=ambooth.git-rename
- Indent one space https://marketplace.visualstudio.com/items?itemName=usernamehw.indent-one-space
- Lint Lens https://marketplace.visualstudio.com/items?itemName=ghmcadams.lintlens
- Markdown All in One https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one
- One Dark Pro theme https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme
- Partial Diff https://marketplace.visualstudio.com/items?itemName=ryu1kn.partial-diff
- select highlight in minimap https://marketplace.visualstudio.com/items?itemName=mde.select-highlight-minimap
- Sort Lines https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines
- Svelte for VS Code https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode
- SVG Previewer https://marketplace.visualstudio.com/items?itemName=vitaliymaz.vscode-svg-previewer
- Toggle Quotes https://marketplace.visualstudio.com/items?itemName=BriteSnow.vscode-toggle-quotes
- VS DocBlockr https://marketplace.visualstudio.com/items?itemName=jeremyljackson.vs-docblock
If things aren't behaving as expected after installing extensions (like config pages not loading), run CTRL+SHIFT+P > Reload Window
.
app
Settings:
- View > Appearance > Secondary Side Bar
- Go the Explorer view > (add) Open Editors
- Move Open Editors to the Secondary Side Bar
- Go the Explorer view > (add) Open Editors
- File > Preferences > Settings > User (or
CTRL + ,
)All Autocomplete: Max Items in Single List: 10 All Autocomplete: Min Word Length: 5 All Autocomplete: Show Current Document: (uncheck) Diff Editor: Ignore Trim Whitespace (uncheck) Diff Editor: Render Side By Side: (uncheck) Dotenv: Enable Autocloaking: (unchecked) Editor: Accept Suggestion on Commit Character: (uncheck) Editor: Color Decorators: (uncheck) Editor: Detect Indentation: (uncheck) Editor: Folding Strategy: indentation Editor: Font Size: 14 Editor: Hover:Delay: 1000 Editor: Hover:Enabled: (uncheck) Editor: Insert Spaces: (check) Editor: Rulers: [80] Editor: Scroll Beyond Last Line: (uncheck) Editor: Show Tabs (off) Editor > Sticky Scroll: Enabled (uncheck) Editor: Tab Size: 2 Editor: Token Color Customizations: (edit in JSON) Editor: Trim Auto Whitespace: (uncheck) Editor > Parameter Hints: Enabled: (uncheck) Explorer > Open Editors: Visible: 100 Extensions: Auto Check Updates: (uncheck) Extensions: AUto Update: None Extensions: Ignore Recomendations: (check) Files: Exclude: (remove the pattern for `.git`) Javascript > Validate: Enable: (uncheck) Git: Close Diff On Operation: (check) Git: Input Validation: Off Markdown All In One: Math Enabled: (uncheck) Markdown All In One: Ordered List: Auto Renumber: (uncheck) Markdown All In One: Ordered List: Marker: one Markdown All In One: Toc Levels: 2..6 Notebook > Sticky Scroll: Enabled (uncheck) SCM: Default View Mode: tree Search: Use Global Ignore Files: (check) Telemetry: Telemetry Level: off Terminal > Integrated: Font Family: FantasqueSansMono NF Terminal > Integrated > Sticky Scroll: Enabled (uncheck) Todo-tree > General: Tags (add) NOTE Todo-tree > Highlights: Background Colour Scheme (add) #FFFD8F Todo-tree > Highlights: Foreground Colour Scheme (add) black Typescript > Validate: Enable: (uncheck) Update Mode: manual Window: New Window Dimensions: inherit Window: Title: [${rootName}] ${activeEditorMedium}${separator} Window: Zoom Level: 1 Workbench > Tree: Enable Sticky Scroll (uncheck)
- NOTE: Once you remove the
.git
exclusion it'll look like it's no longer excluded from version control. It will be, but for visual clarity you can do this:cp -i ./files/.gitignore_global ~/ git config --global core.excludesFile ~/.gitignore_global
- NOTE: Once you remove the
- There are some settings that can only be set in the
settings.json
"editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "markup.quote.markdown", "settings": { "foreground": "#bbba71" } }, { "scope": "markup.inline.raw.string.markdown", "settings": { "foreground": "#62b9d3" } }, { "scope": "markup.fenced_code.block.markdown", "settings": { "foreground": "#f379ce" } } ] }, "blueprint.templatesPath": [ "~/.config/Code/User/FileTemplates", ], "eslint.validate": ["javascript", "javascriptreact", "svelte"], "[css][html][javascript][svelte]": { "editor.suggest.showWords": false, },
- File > Preferences > Keyboard Shortcuts (or
CTRL + k + s
) (orCTRL+SHIFT+P
,Preferences: Open Keyboard Shortcuts (JSON)
)# Toggle the 'Record Keys' button in the input. # Type `CTRL + d`, select the 'Add selection to next find match' entry, hit `DELETE` # Toggle 'Record Keys' # Search for 'Copy line down', set it's shortcut to `CTRL + d` # Toggle the 'Record Keys' button in the input. # Type `CTRL + s`, select the 'File: Save' entry, hit `DELETE` # Toggle 'Record Keys' # Search for 'Save All (workbench.action.files.saveall', set it's shortcut to `CTRL + s` # OS friendly line moving (ALT conflicts with system bindings and opens menus) Move Line Down: CTRL+UpArrow Move Line Up: CTRL+DownArrow
- You can right-click on icons in the left bar to hide them.
- Toggle the Activity Bar
CTRL + `
, drag the Search icon down to the panel so that the global searches have more space. - Right-click on the bottom Status Bar
- Uncheck the second instance of Source Control
- Uncheck Feedback
- Only option for vertical "tabs" right now is to:
- Go into View > Appearance > activate Secondary Side Bar. For some reason it doesn't remember your choice and you have to do this for every repo/project/folder you go into.
- Drag the Open Editors over to the Secondary Side Bar. This action is remembered, and will now permanetely live in the Secondary Side Bar.
- Install Python extension, but then remove auto-installed
isort
andJupyter
extensions. Seems to be a bug that'll spin up a few python processes for those extensions, and if you uninstall them, they keep running even after vscode is shut down, so you'll have to manually kill them. Open System Monitor, filter bypy
, the Process Name will bepython
, mouse over them to verify they were started by vscode. In some cases I'd have to delete~/.config/Code/User/workspaceStorage/<HASH>
(sort by date, usually the newest one, but can verify by looking at the path in theworkspace.json
file)- Remove MS Python extensions, syntax highlighting seems to work without them.
- Search for Typescript and disable everything under
Svelte > Plugin
~/.vscode/argv.json
, add"disable-hardware-acceleration": true
Expand for Xed (Text Editor) Settings
I was using notepadqq
but it started taking a very long time to open.
Xed comes default with Mint, but it requires a little customization.
- Styles will come from https://github.com/trusktr/gedit-color-schemes
- There are a few places where styles could possibly go. Run
ls -la /usr/share/gtksourceview-*/styles
, and take note of the folders that have astyles.rng
file. For each one of those folders, you'll need to create a.local
version where you'll dump the custom styles.# currently these folders match the above criteria mkdir -p ~/.local/share/{gtksourceview-3.0,gtksourceview-4}/styles
- Now you can copy the contents of the repo's
gtksourceview-3.0/styles
folder over to the new folders.( wget https://github.com/trusktr/gedit-color-schemes/archive/refs/heads/master.zip -O ~/Downloads/geditcolors.zip unzip -j ~/Downloads/geditcolors.zip "gedit-color-schemes-master/gtksourceview-3.0/styles/*" -d ~/.local/share/gtksourceview-3.0/styles/ unzip -j ~/Downloads/geditcolors.zip "gedit-color-schemes-master/gtksourceview-3.0/styles/*" -d ~/.local/share/gtksourceview-4/styles/ rm ~/Downloads/geditcolors.zip )
- There are a few places where styles could possibly go. Run
- Open a file with Xed (Text Editor)
- Go to Edit > Preferences
[Editor] (check) Display line numbers (check) Display overview map (check) Display right margin (set to 80) (check) Highlight the current line (check) Highlight matching brackets Tab width: 2 (check) Automatic indentation (uncheck) Allow mouse wheel scrolling to change tabs [Theme] Twilight
- Go to Edit > Preferences
Expand for root Settings
When running some commands via sudo
you may notice things don't look or behave the same. Here are some things I copy over:
(
sudo cp -r ~/.config/lsd /root/.config/
sudo cp ~/.vimrc /root/
)
Now that things are set up, you should:
- Back things up
# Back up GNOME settings dconf dump / > ~/settings.dconf
- Change Grub to something less noisy
sudo vim /etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash loglevel=3" + GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3"
sudo update-grub
Note: You may get EACCESS
errors for certain system files/folders if not running as root
. One way to get around that is to disable locking.
# run
code ~/.config/FreeFileSync/GlobalSettings.xml
- <LockDirectoriesDuringSync Enabled="true"/>
+ <LockDirectoriesDuringSync Enabled="false"/>
This could have unexpected syncing results if applications are running in the background so try to exit everything before starting a sync.
-
I created a folder on my backup drive called
Linux_Mint__Laptop__Pred
.Pred
is just a manufactures identifier in case I make a backup from another laptop also running Linux Mint.
-
Open up
FreeFileSync
-
Set up a config:
Generally these are my synchronization settings:[ Comparison ] Variant: File Content [ Filter ] Include: *: Exclude: */.Trash-*/ */.recycle/ [ Synchronization ] Variant: Mirror Delete and overwrite: Recycle bin
You have to set them for every config, unless you start working on another config with previous config settings loaded. If you do start working from a previous config, be careful not to overwrite it. I generally click
Save As
when I know I'm starting on a new config.
Note: System environment variables can be used in paths. So instead of hardcoded paths to a User directory like
/home/johndoe/stuff
you'd use%HOME%/stuff
.[ Compare column ] Drag & drop (input): (You can directly input a path, or click 'Browse') (click the '+' to add another path, though sometimes it's better to add a top-level folder and exclude what you don't want) [ Synchronize ] Drag & drop (input): (You can directly input a path, or click 'Browse')
-
Run the backup
- With a config loaded and selected, click the
Compare
button. - Take note of the icons in the Action column (swirling green arrows). If it's a trash icon, the files/folders will be deleted. Just be mindful of that before proceeding.
- If things look good, click
Synchronize
.
- With a config loaded and selected, click the
-
If you want, you can zip up that backup folder and store it somewhere as a snapshot.
- Load and select a config.
- There's a
Swap Sites
button separating the Compare and Synchronization columns. Click on that to have your data go from the backup to the source. - Click
Compare
, review what will be changed. - If things look good, click
Synchronize
. - Important: Be sure not to save the config in the reversed state.
Keys | Action |
---|---|
ALT + click on a window + drag |
Moves a window |
ALT + right-click near window edge + drag up/down or left/right |
Resize a window |
CTRL+ALT+ESC |
Restart Cinnamon (keeps current session, may jumble window positions) |
CTRL+ALT+BACKSPACE |
Restart XOrg (exits to login) |
Command | Description |
---|---|
sudo apt autoremove <PACKAGE> |
Can be used after a apt remove <PACKAGE> or in place of. A reason to use it after a remove would be to ensure that you don't accidentally remove something because a dependency wasn't tracked properly. But if you just added something and know that there won't be any conflicts use autoremove . |
sudo add-apt-repository --remove <REPO> |
It's a common one, but I always forget the syntax. You'd think there'd be a remove-apt-repository . |
`xev | grep keycode` |
`xprop | grep WM_CLASS` |
# Applications (launcher) folders
/usr/share/applications
/var/lib/flatpak/exports/share/applications
# Logs
/var/log
# System audio
/usr/share/sounds
Recommended tools:
GtkInspector
# If `libgtk-3-dev` isn't installed, do so sudo apt install libgtk-3-dev # Enable with gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true
- Color picker
sudo apt install gpick # although I magically have mate-color-select installed as well...
File locations:
- CSS
~/.config/gtk-3.0/colors.css # color definitions ~/.config/gtk-3.0/gtk.css # just imports `colors.css` /usr/share/themes/<THEME>/gtk-3.0/gtk.css # theme specific styling/overrides
Sources:
Updating Styles:
- With an App focused (I right-clicked the bottom panel and opened Panel Preferences), hit
CTRL+SHIFT+I
and it should open with that App's items listed in the Objects view. If that doesn't work you can try running the App in the CLI prefixed withGTK_DEBUG=interactive
. You may be in the Details view, if so click on the Show All Objects button (top left). - You can click on items in that view, and they'll blink/highlight if they're viewable. Once you find an item, double-click on it to open it's Details view. There's a drop-down, switch it to
CSS Nodes
. There you can findID
s,Style Classes
,CSS Property
s, andLocation
s. You can useID
s andStyle Classes
as you would ids and classes in CSS.Location
is useful to determine if there's a hardcoded value in a CSS file somewhere, or if it's being controlled dynamically<data>:##:##
. - With the info from that view, go to the
CSS
view. Anything you add in there will take effect immediately. Test it with something likeMost items you can just select their Properties, then inspect from there.#PanelWindow { background-color: #FF00FF; }
- Add your custom styles to
~/.config/gtk-3.0/custom.css
, then open~/.config/gtk-3.0/gtk.css
and add@import "custom.css";
. For changes to take effect I logged out and back in. - When you're done, you may want to disable the
GtkInspector
key bindings so you don't get any unexpected keyboard conflictsgsettings set org.gtk.Settings.Debug enable-inspector-keybinding false
- Icon Theme Spec
- Icon Naming Spec
- Global icons (usually used by themes) are in
/usr/share/icons/<THEME>/<TYPE>/<SIZE>/
. So if there's an icon you like, but you want to modify it, that's where it may be.
Before creating or finding my own icons I open up cuttlefish
to see if there's something that'll work for me. If not, you can add a single icon in ~/.local/share/icons/
.
For better compatibility (like having it show up in cuttlefish
) I created a GIMP plugin to generate folders and the different sized icons.
- Close GIMP if it's running
- Symlink the plugin over
ln -s $PWD/files/gimp/nox_gen-freedesktop-icons.py ~/.config/GIMP/2.10/plug-ins/
- The first time testing it, you can open GIMP via the terminal to see if there are any errors while loading.
- Add your full resolution icon to
~/.local/share/icons/hicolor/
. I tend to prefix my icons withmine__
so I easily know what I've added. - Open that image in GIMP
- In the top menu, go to NOX > (click) Gen Freedesktop Icons
- Choose the icon type
- (click) Generate
- In
cuttlefish
you should now be able to look up your icon, and use that icon name where ever.
Expand for Solution
The issue only happened when my system was docked and the lid was closed and I was using an external monitor.
Normally you'd go into Power Management and set what the system should do when the lid is closed. Turns out that it has no effect in the Login screen, rather it's controlled by logind
.
First check what files are effecting logind
:
systemd-analyze cat-config systemd/logind.conf
If you don't see any files with settings pertaining to HandleLidSwitchExternalPower
, create a new one:
sudo cp -i ./files/laptop-login.conf /usr/lib/systemd/logind.conf.d/
# Save changes and run
sudo systemctl restart systemd-logind
Expand for Solution
To fix the panic, during boot I chose Advanced in the Grub menu. In that sub-menu I went down the list of available recovery-mode
options until one booted.
From the menu I chose the Root shell option. Then I ran ubuntu-drivers devices
(displays what Driver Manager shows). I found the bad driver name and ran:
(
apt purge nvidia-driver-525
apt autoremove
reboot
)
You should then be able to boot normally with the default nouveau
driver. Open up Driver Manager and reinstall the nvidia driver that matches your kernel.
To find the driver that matches your kernel, run uname -r
to view the current kernel. Then compare that against the available nvidia drivers in Driver Manager. For me it was recommending nvidia-driver-525
when my kernel was 5.15.0-56-generic
. So it should've been recommending nvidia-driver-515
.
Expand for Solution
Seems to be linked to using nvidia drivers https://bugs.launchpad.net/oem-priority/+bug/1842320. Add this to your Grub config, save and reboot.
GRUB_GFXMODE=640x360
If that doesn't work, I also purged all nvidia packages via Synaptic Package Manager. Had to manually find all nvidia
packages with a version
matching what was installed. Rebooted, and the system should now be using the nouveau
driver. Use Driver Manager to install the nvidia
driver again.
Expand for Solution
First, close Chrome while you're troubleshooting.
Possible reasons for this:
- The
Login Data
file is missing from~/.config/google-chrome/<Default|Profile>/
or it's read/write protected. Look at the other file permissions in a folder you haven't touched, and copy those. - The passwords in the database (
Login Data
is a sqlite3 file) were encoded with a system key that aren't on your new system. It should be stored in~/.local/share/keyrings
. - There's a corrupted value in
Login Data
. If Chrome can't read a value, it automatically considers everything broken and won't display anything. If you run fix-chrome-creds.py it'll create a fixed file on your desktop, and output all the values so you can see what may be broken, or worse case manually input the passwords. Example./bin/fix-chrome-creds.py -f "~/.config/google-chrome/<PROFILE>/Login Data" -p "<KEY>"
.<KEY>
would come fromPasswords and Keys > Login > Chrome Safe Storage
.
Expand for Solution
# There could be other folders in `.cache` that you may want to investigate.
# Deleting folders or their contents while certain Apps are running could cause issues.
rm -rf ~/.cache/{thumbnails}/*
Expand for Solution
Was having an issue where the PulseAudio volume change notification would keep popping up randomly when I wasn't adjusting volume. Usually would happen while using a Browser and a video would start playing.
First you can debug Pulse's logs:
systemctl --user stop pulseaudio.{socket,service}
# Terminal #1
LANG=C pulseaudio -vvvv --log-time=1 > ~/Desktop/pulseverbose.log 2>&1
# Terminal #2 (or just stop the above process when you see the notification pop up)
tail -f ~/Desktop/pulseverbose.log
Most forums date this back to a long-standing issue with it detecting that the headphone jack is plugged in then unplugged. Sure enough I was seeing these random messages:
[pulseaudio] module-alsa-card.c: Jack 'Headphone Jack' is now plugged in
# stop the currently running service (if it's running)
systemctl --user stop pulseaudio.{socket,service}
# edit pulse's config
sudo vim /etc/pulse/default.pa
# Disable the below line
load-module module-switch-on-port-available
# start the service
systemctl --user start pulseaudio.{socket,service}
What the modules do:
on-port-available
is the event that a port becomes usable, for example when you insert a mini jack.on-connect
is the event that a new device is connected which has an audio port, such as a usb dock.
NOTE: Turns out the below didn't work. Pipewire didn't help at all, in fact it kept crashing after extended use. Keeping this for future reference.
Change from PulseAudio to Pipewire by following these instructions.
# First check and see if it's already installed and running
systemctl --user status pipewire pipewire-session-manager
# If it's not installed
sudo apt install pipewire
# Install audio client and some libs
sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,bin,tests}}
# Install WirePlumber
sudo apt install wireplumber gir1.2-wp-0.4 libwireplumber-0.4-{0,dev}
# Kill PulseAudio
systemctl --user --now disable pulseaudio.{socket,service}
systemctl --user mask pulseaudio
# Copy over Pipewire configs
sudo cp -vRa /usr/share/pipewire /etc/
# Start up Pipewire
systemctl --user --now enable pipewire{,-pulse}.{socket,service}
# Your system may require a log-off/in, or a reboot
If you need/want Pipewire's equivelant to PulseEffects
flatpak install flathub com.github.wwmm.easyeffects
Expand for Solution
Had random issues in file managers when transfering lots of small files at once. Basically I'd start a transfer, the manager would hang, couldn't close the transfer dialog and would have to kill the manager's proccess.
When I added vers=1.0
(like sudo mount -t cifs -o vers=1.0
) the issue no longer happened but transfers were slower, and version 1.0
is less secure.
After weeks of random troubleshooting I found an option in TrueNAS Scale, within each SMB share.
- Select a share to bring up it's properties panel
- Click Advanced Options
- Scroll down and check Enable SMB2/3 Durable Handles
- Save changes
Expand for Solution
- Went into Update Manager > View > Linux Kernels > chose the oldest in the available
5.15
series (5.15.0-25
). Waited for it to install, rebooted, used the Grub menu during boot to choose the older kernel. Tested suspend and logging out/in and things seem to be working now. - To ensure it doesn't boot to the bad kernel:
- Launch Update Manager > View > Linux Kernels. Click on the bad installed kernel, click
Remove
. - That kernel probably just popped up in the Update Manager as an available update. Right-click it and choose
Ignore the current update for this package
. If you mistakenly ignored the wrong package, go into Edit > Preferences > Blacklist, and remove what you ignored.
- Launch Update Manager > View > Linux Kernels. Click on the bad installed kernel, click
If the need to manually download and add an older kernal arise: https://askubuntu.com/a/700221
Expand for Solution
Recently updated my GPU driver and after I rebooted I kept getting an "out of memory" error from initramfs
. No matter what I tried there was no way to get to a terminal or recover anything, everything just crapped out.
Luckily you can use a Live ISO to recover:
- I loaded into Mint via VenToy
- Started a Terminal in Mint
# mounting a ZFS pool takes a little extra work ( # the root pool where you normally boot into sudo zpool import -R /mnt rpool # the boot pool where Grub lives sudo zpool import -R /mnt/ bpool sudo mount -t exfat UUID=7B55-ECA0 /mnt/boot/efi # mount certain system folders so things can run normally for i in dev dev/pts proc sys; do sudo mount -v --bind /$i /mnt/$i; done sudo mount -v --bind /mnt/boot/efi/grub /mnt/boot/grub ) # load into the pool like it's a new root system sudo chroot /mnt # if you can't install packages due to mirrors not being resolvable sudo vim /etc/resolv.conf # add nameserver 8.8.8.8 # if mirrors are out of date sudo vim /etc/apt/sources.list.d/official-packages-repositories.list # patch initramfs to keep it's file size down (fix 'out of memory') sudo vim /etc/initramfs-tools/initramfs.conf # update existing items to: MODULES=dep COMPRESS=xz # remove driver (adding or removing automatically re-builds initramfs) sudo apt remove nvidia-driver-515 sudo apt autoremove # list available drivers ubuntu-drivers devices # install driver sudo apt install nvidia-driver-525 # make sure Grub references any new files that may have been generated sudo update-grub exit # if you need to make any file back-ups, do so now while things are mounted reboot
- The Grub menu wouldn't load after my changes, instead it was just the Grub console.
# list available drives grub> ls # find which drive has the boot pool (without the slash it may print the label of `bpool`, otherwise look for a BOOT folder and make sure there isn't Windows stuff in it). grub> ls (hd2,gpt3)/ # load things up # set root=(hd#,gpt#) grub> set root=(hd2,gpt3) # linux /BOOT/ubuntu_######/@/vmlinuz root=ZFS=rpool/ROOT/ubuntu_###### boot=zfs grub> linux /BOOT/ubuntu_1yyx7k/@/vmlinuz root=ZFS=rpool/ROOT/ubuntu_1yyx7k boot=zfs # initrd /BOOT/ubuntu_######/@/initrd.img grub> initrd /BOOT/ubuntu_1yyx7k/@/initrd.img grub> boot
If you need to back things up to a flash drive:
# FAT drives have a limit of around 4GB per file, so split into `4294967295` chunks
# [Export]
sudo tar -cvzf - /mnt/home/<USER>/ | split -b 4294967295 - "/media/mint/<FLASH_ID>/backup.tar.gz.part"
# [Import]
cd <DEST_FOLDER>
cat /<FLASH_ID>/backup.tar.gz.part.* | tar xzvf -
Expand for Solution
The fix is to export
this variable:
# `NO_AT_BRIDGE` to hide GTK "couldn't connect to accessibility bus" warnings (usually when running 'open'). It's been a known issue for a long time https://bugs.launchpad.net/ubuntu/+source/at-spi2-core/+bug/1193236.
export NO_AT_BRIDGE=1
The comment's not neccessary (for whatever file you dump it in), but it could be useful when trying to remember why you added it.
There are different schools of thought as to where to add the export
. Personally I added it to my .*rc
file, but it can be added to these locations as well:
File | Description |
---|---|
/etc/profile |
Global exports. Executes first. Available to all shells. Just add the export line. |
/etc/profile.d/<FILENAME> |
Global exports. Anything in profile.d is loaded by /etc/profile . Available to all shells. <FILENAME> could be something like 01_accessibility_bus_fix.sh , and in that file you'd add the export line. The leading number is just to ensure execution order. |
~/.profile |
User exports. Available to all shells. Just add the export line. |
~/.*rc |
User exports. Available to specific shell. Just add the export line to your Shell's rc file. So .zshrc , .bashrc , etc. |
Expand for Solution
Linux has a caching/buffering layer when writing files to a disk. Basically the file manager's copy progress dialog is inaccurate and none of them display the actual written to disk progress, but instead display the written to RAM progress. So if you safely eject the disk, it'll disappear from the system tray list making you think it's safe to remove, but if you are viewing the drive in the Disks tool you may see a spinner indicating that something is still going on. Basically if you don't wait for the tray notification saying that it's ok to remove the drive, you may suffer data loss or an unreadable drive.
If you want accurate copy progress you have to alter the automount options for USB disks to either flush
(which is the fastest) or sync
. Unfortunately flush
isn't supported by all disks so I was only able to try sync
which was much slower than just transferring and waiting.
To change the automount rules:
- Run:
# First run `mount` on the mounted drive to see what it's defaults are mount | grep <DISK_LABEL> # You may have to create/copy the mount_options.conf if it doesn't exist sudo cp /etc/udisks2/mount_options.conf.example /etc/udisks2/mount_options.conf
- Open
mount_options.conf
and add the appropriate value.sudo vim /etc/udisks2/mount_options.conf
[defaults] defaults=rw,nosuid,nodev,noatime,sync # or [defaults] defaults=rw,nosuid,nodev,noatime,flush
- Eject, remove, and then re-insert your drive. The changes should be applied.
# Run mount again to verify changes. mount | grep <DISK_LABEL>
Further debugging can achieved by running these commands:
# udev is the hotplug management daemon. Run the below to see what happens when you plug in a device.
udevadm monitor --udev
# The path for User rules is:
/etc/udev/rules.d/
# If you add a new rules file, reload the rules with:
sudo udevadm control --reload-rules
# The path for System rules is:
/usr/lib/udev/rules.d/
# Print info about your mounted drive (get the generated name from Disks)
udisksctl info -b /dev/<DRIVE>
# To see what happens when you plug a drive in, first plug the drive in, then run:
udevadm test -a add $(udevadm info -q path -n /dev/<DRIVE>)
Expand for Solution
In my case I had to turn on the controller before starting Steam for it to detect it and map controls to games.