- Prerequisites
- Install key packages
- Getting started with tools for geocomputation
- Other tools for boosting productivity and developer
experience
- Rust command-line utilities
- Modern Data Stack
- CopyQ
- AppImage Launcher
- LogSeq
- Zotero
- guake
- Disabling the Ubuntu Dock
- Kitty
- Ghostty
- Deno
- Node.js and nvm
- Claude code
- Signal
- Flameshot
- Chrome
- Edge
- Flatpak
- KmCaster
- Syncthing
- Dropox
- Rclone
- Peak
- Discord
- Slack
- Telegram
- OneDrive
- OnlyOffice
- Google Antigravity IDE
- Reproducing the Geocomputation with R book
- Alternative projects
Inspired by a post on installing commonly needed GIS software on Ubuntu and having recently got a new computer (an Entroware Proteus, a bit faster than the second hand Lenovo laptop I was running when I created this repo!) with Ubuntu freshly installed, I decided to make the process of installing GIS software on it as reproducible as possible. After installing this software your computer may look a bit like this:
Clutter for demo purposes!
This is not intended to replace the excellent OSGeo Live distro, which contains a ton of amazing geo packages. Instead it’s for people who want lean, core GIS functionality on their existing Ubuntu machine, with a focus on geocomputation and data science.
Rather than providing automated scripts, it simply provides the bash commands here in the README for you to copy, paste (or Ctrl+Shift+Enter if in RStudio if you download this README, a great shortcut) Core programs it shows how to install are:
- GitHub’s CLI tool for command-line collaboration and code sharing
- R with access to pre-compiled packages, a powerhouse for statistical computing
- R packages for working with spatial data
- RStudio, a space-aged editor for R
- VS Code with extensions for R, Python, C/C++, Rust, Docker, and more
- Docker, which gives ultimate power and flexibility to install and run software
- QGIS, probably the most popular GUI-driven GIS in the world
- Recent versions of GDAL and GEOS C/C++ libraries
- Python packages for Geographic Data Science
- Rust, an upcoming systems language with impressive geo libs
- Kitty, a fast, GPU-accelerated terminal emulator that works great with Zellij
All this can be a pain to install manually. The commands below are designed to make your life easier. Any comments/suggestions: welcome
- A working installation of Ubuntu 26.04, ‘Resolute Raccoon’ on a computer you have access to
Fire up a terminal, e.g. with Ctl-Alt-T after booting Ubuntu, then
enter the following. (You can also run this from inside an editor):
lsls()GitHub has developed a command line interface (CLI) tool for enabling fast and intuitive interaction with the world’s premier code hosting platform. It’s a good place to start because it’s small, self-contained, and can be used to clone code repos like this one. Install it with the following cryptic commands from the project’s GitHub page:
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -yTest to see if it works as follows:
# Log-in to GitHub from the command line
gh auth login
gh repo clone Robinlovelace/install-geocomp-ubuntu
cd install-geocomp-ubuntu
less README.mdYou may also want to update your Git version, which is installed by default on Ubuntu:
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install gitPreviously I was on Git 2.40.0, now I’m on 2.50.0:
git --versiongit version 2.53.0
Setup git with the following commands
git config --global user.email "test@test.org.uk"
git config --global user.name "trachelium"
# Set the default branch to main:
git config --global init.defaultBranch mainwget $(curl -s https://api.github.com/repos/devmatteini/dra/releases/latest | grep "browser_download_url.*amd64.deb" | cut -d '"' -f 4) -O /tmp/dra.deb
sudo dpkg -i /tmp/dra.debThat allows you to download assets with commands such as:
# Automatically select and download an asset based on your operating system and architecture
# you can use -a or --automatic
dra download -a devmatteini/dra-testsI have become a huge fan of VS Code and installing it plus some amazing extensions is covered in the next section. VS Code is increasingly good with decent support for visualisations and, as the screenshot below shows, even now marks-up markdown outputs from Quarto documents. However, if you want to do standard data science things and create reproducible documents, R+RStudio is hard to beat, especially if you’re just starting out with data science. Install them with the following commands:
These instructions are from https://github.com/eddelbuettel/r2u
First add the repository key so that apt knows it (this is optional
but recommended). Note that for Ubuntu 26.04 (Resolute), we use the
noble CRAN repository as a fallback until the resolute one is fully
live.
# Install dependencies
sudo apt update -qq && sudo apt install --yes --no-install-recommends wget ca-certificates gnupg
# Add r2u key and repository
wget -q -O- https://eddelbuettel.github.io/r2u/assets/dirk_eddelbuettel_key.asc | sudo tee /etc/apt/trusted.gpg.d/cranapt_key.asc
echo "deb [arch=amd64] https://r2u.stat.illinois.edu/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cranapt.list
# Add CRAN key and repository (using noble as fallback for resolute)
wget -q -O- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
echo "deb [arch=amd64] https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/" | sudo tee /etc/apt/sources.list.d/cran_r.list
# Set up PIN preferences to prioritize r2u packages
echo "Package: *" | sudo tee /etc/apt/preferences.d/99cranapt
echo "Pin: release o=CRAN-Apt Project" | sudo tee -a /etc/apt/preferences.d/99cranapt
echo "Pin: release l=CRAN-Apt Packages" | sudo tee -a /etc/apt/preferences.d/99cranapt
echo "Pin-Priority: 700" | sudo tee -a /etc/apt/preferences.d/99cranapt
# Update and install R
sudo apt update -qq
DEBIAN_FRONTEND=noninteractive sudo apt install --yes --no-install-recommends r-base-core
# Install bspm for system dependency management
sudo apt install --yes --no-install-recommends python3-{dbus,gi,apt} r-cran-bspm
sudo Rscript -e 'bspm::enable()'A difference between R packages on Windows and Ubuntu is that by default
Windows always installs binary versions of packages, meaning no
compilation time. To speed-up installation of R packages you can add an
Ubuntu repo that will allow you to install pre-compiled packages from
the system command line. Although there are projects like
r2u that give you binary packages
with install.packages() I prefer the control of using the system
command line for binaries and the R console for installing packages that
want to be compiled, to avoid issues like this:
rocker-org/rocker-versioned2#631
For even faster R package installation from within R, you can use Posit
Package Manager. Note that we are on a beta version of Ubuntu 26.04
(Resolute Raccoon) which hasn’t been officially launched yet, so we use
the noble (24.04) binaries as a fallback:
# Set RSPM as the default repository
options(repos = c(CRAN = "https://packagemanager.posit.co/cran/__linux__/noble/latest"))To make this permanent, add it to your ~/.Rprofile:
echo 'options(repos = c(CRAN = "https://packagemanager.posit.co/cran/__linux__/noble/latest"))' >> ~/.RprofileGet a load of great R packages with the following commands:
# System deps for cartography and spatial data
sudo apt install -y libgdal-dev libproj-dev libgeos-dev libudunits2-dev libnode-dev libcairo2-dev libnetcdf-dev
sudo apt install -y libglu1-mesa-dev freeglut3-dev mesa-common-dev
sudo apt install -y libharfbuzz-dev libfribidi-dev
# Extra packages for image manipulation and data processing
sudo apt install -y libmagick++-dev libjq-dev libprotobuf-dev protobuf-compiler libsodium-dev imagemagick libgit2-dev
# R spatial stack via r2u (binary packages)
# Note: some packages like tmap may need to be installed from CRAN if not yet in the r2u Resolute repo
sudo apt install -y r-cran-sf r-cran-terra r-cran-lwgeom r-cran-mapview r-cran-mapdeck r-cran-shinyjs
# Install remaining packages from CRAN (with binary fallback if possible)
Rscript -e 'install.packages(c("tmap", "mapedit", "languageserver"), repos="https://packagemanager.posit.co/cran/__linux__/noble/latest")'RStudio:
# Check for latest version at https://posit.co/download/rstudio-desktop/
# Note: RStudio often uses previous LTS names (like 'noble' or 'jammy') in download URLs
RSTUDIO_VER="2026.01.0-321"
wget https://download2.rstudio.org/server/noble/amd64/rstudio-server-${RSTUDIO_VER}-amd64.deb -O /tmp/rstudio.deb
sudo dpkg -i /tmp/rstudio.deb
rm /tmp/rstudio.debAfter installing RStudio you can open it by pressing the ‘Windows button’ and they typing RStudio. You should also be able to open it with the following command in the terminal:
rstudioAfter opening RStudio you can open the folder containing these instructions, or any folder, with the following command typed into the R console.
rstudioapi::openProject("~/Download/install-geocomp-ubuntu/")Also in RStudio you can commit and push changes to this or any repo as
follows, starting by opening a terminal by clicking on the Terminal
button or by typing the shortcut: Alt+Shift+M. You can also execute
lines of code from the source editor in RStudio in the terminal by
typing Ctrl+Alt+Enter, which will send the current line of code to the
terminal.
git status
git commit -am 'Update instructions with info on using RStudio'Python is a versatile language with a rich ecosystem for geographic data
science. While apt provides some packages, using a modern environment
manager like pixi (installed in the Modern Data
Stack section) is recommended for reproducibility.
To quickly install core geographic packages in a new project:
pixi init my-geo-project
cd my-geo-project
pixi add geopandas rasterio shapely folium matplotlibAlternatively, using standard pip:
python3 -m pip install --user geopandas rasterio shapely folium matplotlibVS Code is a versatile and future-proof IDE.
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
rm packages.microsoft.gpg
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update
sudo apt-get install code
code --install-extension ms-vscode-remote.remote-containers
# Install the Python extension:
code --install-extension ms-python.python
# Remote containers:
code --install-extension ms-vscode-remote.remote-containers
# Install ritwickdey.LiveServer:
code --install-extension ritwickdey.LiveServerPositron is an IDE for data science from Posit. Get the latest release for your system from https://github.com/posit-dev/positron/
# Automatically find and download latest release:
LATEST_TAG=$(curl -s https://api.github.com/repos/posit-dev/positron/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
# Or set manually if needed:
# LATEST_TAG="2026.01.0-123"
wget https://github.com/posit-dev/positron/releases/download/${LATEST_TAG}/Positron-${LATEST_TAG}.deb -O /tmp/positron.deb
sudo dpkg -i /tmp/positron.debA great feature of VS Code is that you can execute bash commands in the
integrated terminal. Open the integrated terminal by typing the
shortcut: Ctrl+J. Open a new terminal in VS code by typing the
shortcut: Ctrl+backtick(`).
Executing code is made even easier by the Quarto extension for VS Code, which can be installed as follows from bash:
code --install-extension quarto.quartoAfter that extension has been installed you should be able to execute
code in the integrated terminal by typing Ctrl+Enter in the source
editor, as shown in the following screenshot:
code --install-extension reditorsupport.r
code --install-extension github.copilotInstall the Quarto command line tool:
# Check for latest version at https://github.com/quarto-dev/quarto-cli/releases
QUARTO_VER="1.8.27"
wget https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VER}/quarto-${QUARTO_VER}-linux-amd64.deb -O /tmp/quarto.deb
sudo dpkg -i /tmp/quarto.debInstall the Quarto R package:
Rscript -e "remotes::install_github('quarto-dev/quarto-r')"VS Code has a nice feature that enables you to develop inside a ‘devcontainer’. Devcontainers rely on Docker, which can be installed as follows:
# make sure perl is properly installed (e.g., apt install -y perl)
perl -mFile::Find /dev/null
# then install TinyTeX
wget -qO- "https://yihui.org/tinytex/install-bin-unix.sh" | shDocker is a system platform that allows you to run applications in isolated environments called containers. Containers are similar to virtual machines, but they are more lightweight and efficient.
For Ubuntu 26.04 (Resolute Raccoon) and newer, you may need to use the
noble repository as a fallback until the resolute repository is
live:
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository (using 'noble' as fallback for 'resolute')
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginThe following steps enable you to run docker without sudo.
sudo groupadd -f docker
# Add your user to the docker group:
sudo usermod -aG docker $USERCRITICAL: You must LOG OUT and LOG BACK IN (or restart) for these changes to take effect.
After logging back in, verify that you can run docker commands without
sudo:
docker run hello-worldIf you encounter permission issues with the ~/.docker directory, fix
them as follows:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -RTo check your code and docker installations worked you can try to
reproduce Geocomputation with Python:
gh repo clone geocompx/geocompy
code geocompyIf you installed the remote-containers extension successfully, you
should see a button with “Reopen in Container” in the bottom right of VS
Code.
Click that button and you’ll see the devcontainer launch. If it works, you can try reproducing the entirety of the book from the command line with the following inside VS Code (you can launch the terminal by pressing Ctrl+J`):
quarto previewIf you see something like this, congratulations, you can develop almost anything in reproducible and easy-to-use devcontainers!
The following launches a docker container with JupyterLab:
docker run -it --rm \
-p 8888:8888 \
-u root \
-v "${PWD}/jupyterlab-jovyan":/home/jovyan \
-e NB_UID=$(id -u) \
-e NB_GID=$(id -g) \
-e CHOWN_HOME=yes \
-e CHOWN_HOME_OPTS='-R' \
glcr.b-data.ch/jupyterlab/r/geospatialFrom: https://github.com/geocompx/docker/blob/master/qgis/Dockerfile
# To use the qgis archive you have to first add the archive’s repository public key:
wget https://download.qgis.org/downloads/qgis-archive-keyring.gpg
gpg --no-default-keyring --keyring ./qgis-archive-keyring.gpg --list-keys
# After you have verified the output you can install the key with:
sudo mkdir -m755 -p /etc/apt/keyrings # not needed since apt version 2.4.0 like Debian 12 and Ubuntu 22 or newer
sudo cp qgis-archive-keyring.gpg /etc/apt/keyrings/qgis-archive-keyring.gpg
# Alternatively you can download the key directly without manual verification:
# Types: deb deb-src
# URIs: *repository*
# Suites: $(lsb_release -cs)
# Architectures: amd64
# Components: main
# Signed-By: /etc/apt/keyrings/qgis-archive-keyring.gpg
# With the keyring in place you can add the repository as /etc/apt/sources.list.d/qgis.sources with following content:
# Types: deb deb-src
# URIs: https://qgis.org/ubuntu-ltr
# Suites: $(lsb_release -cs)
# Architectures: amd64
# Components: main
# Signed-By: /etc/apt/keyrings/qgis-archive-keyring.gpg
sudo vim /etc/apt/sources.list.d/qgis.sources
# After that type the commands below to install QGIS:
sudo apt update
sudo apt install qgis qgis-plugin-grass
# In case you would like to install QGIS Server, type:
sudo apt install qgis-server --no-install-recommends --no-install-suggests
# if you want to install server Python plugins
sudo apt install python3-qgis
sudo apt-get update
sudo apt-get -y --with-new-pkgs upgrade && \
sudo apt-get -y autoremove && \
sudo apt-get -y install qgis qgis-plugin-grass saga
# for how to use the qgis-plugin-manager, see https://github.com/3liz/qgis-plugin-manager
pip3 install qgis-plugin-manager
# to enable the qgis-plugin-manager, add the corresponding path to PATH
# ENV PATH="/home/rstudio/.local/bin:$PATH"
echo "export PATH=\"/home/rstudio/.local/bin:\$PATH\"" >> /etc/profile
# from the next line onwards we have trouble with the rstudio server, therefore we switch to the rstudio user
mkdir -p /home/rstudio/.local/share/QGIS/QGIS3/profiles/default/python/plugins
ENV QGIS_PLUGINPATH=/home/rstudio/.local/share/QGIS/QGIS3/profiles/default/python/plugins
echo 'export QGIS_PLUGINPATH=/home/rstudio/.local/share/QGIS/QGIS3/profiles/default/python/plugins' >> /etc/profile
less /etc/profile
exit
qgis-plugin-manager init
qgis-plugin-manager update
# install SAGA next generation plugin
qgis-plugin-manager install 'Processing Saga NextGen Provider'
Rscript -e "install.packages('remotes')"
Rscript -e "remotes::install_github('r-spatial/qgisprocess')" curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Make Rust available:
source "$HOME/.cargo/env"
# Try installing a crate:
cargo install geo
cargo install geozero
cargo install zonebuilderOnce you have the software installed, you can run it as follows:
- For QGIS, you can launch it with the usual launcher or from the command line
qgis # run QGIS
See the QGIS manual
- For R, you can run R from the bash shell by entering
R. For beginners, RStudio is recommended, which can be opened from the Ubuntu Dash launcher or from bash with:
rstudio
These are some fast and versatile command-line utilities that provide an alternitive to standard Unix tools.
ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern. It is similar to other popular search tools like The Silver Searcher, ack, and grep.
sudo apt install ripgrep
rg --helpfd is a simple, fast and user-friendly alternative to find.
sudo apt install fd-find
fdfind --helpsd is a find & replace CLI (command-line interface) tool that allows you to perform simple find & replace operations on files.
cargo install sd
sd --helpeza is a modern replacement for ls (the successor to the now-deprecated exa). It supports colors, file icons, git integration, and more.
cargo install eza
eza .bat is a cat(1) clone with syntax highlighting and Git integration.
sudo apt install bat
# Note: On Ubuntu, the binary is named 'batcat'. You might want to alias it:
# alias bat='batcat'dust is a more intuitive version of du in rust. It provides a better way to navigate through your system and view disk usage.
cargo install du-dust
dust --helpripgrep_all is a tool that combines the power of ripgrep for all file formats.
sudo apt install build-essential pandoc poppler-utils ffmpeg ripgrep cargo
cargo install --locked ripgrep_allThese tools are essential for high-performance data engineering and geocomputation in 2026.
DuckDB is an in-process SQL OLAP database management system. It’s incredibly fast for spatial data analysis when used with the spatial extension.
curl https://install.duckdb.org | shPixi is a package management tool that allows you to install libraries and applications in a reproducible way. It’s built on top of the Conda ecosystem but is written in Rust and is significantly faster.
curl -fsSL https://pixi.sh/install.sh | bash
# Remember to source your .bashrc or restart your terminal:
# source ~/.bashrcCopyQ is an advanced clipboard manager with editing and scripting features.
sudo add-apt-repository ppa:hluk/copyq
sudo apt update
sudo apt install copyqTo make CopyQ feel like Windows (and many modern Linux desktops), you
can bind Windows+V to show the clipboard history:
# 1. Create a custom keybinding entry for CopyQ
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/copyq/ name 'CopyQ'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/copyq/ command 'copyq menu'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/copyq/ binding '<Super>v'
# 2. Link the entry to the list of active custom keybindings
# Note: This appends to the existing list safely
current_bindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | sed "s/]//" | sed "s/\[//")
new_binding="'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/copyq/'"
if [[ $current_bindings != *"$new_binding"* ]]; then
if [[ -z $current_bindings || $current_bindings == "@as []" ]]; then
combined="[$new_binding]"
else
combined="[$current_bindings, $new_binding]"
fi
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$combined"
fiIntuitive and time-saving management of AppImages.
snap install logseqLogSeq is an application for storing notes, todo lists, and more. To install it just click on the latest ‘.AppImage’ file in the latest releases, download it, and it should be integrated by AppImage Launcher: https://github.com/logseq/logseq/releases
sudo apt-get install libdbus-glib-1-2 libgtk-3-0 libxt6 libxrender1 libx11-xcb1
wget -O zotero.tar.bz2 'https://www.zotero.org/download/client/dl?channel=release&platform=linux-x86_64'
tar -xjf zotero.tar.bz2 -C ~/Downloads/
sudo mv ~/Downloads/Zotero_linux-x86_64 /opt/Zotero
sudo ln -s /opt/Zotero/zotero /usr/local/bin/
# Make it appear in launcher:
# Run the set_launcher_icon script from a terminal to update the .desktop file for that location. .desktop files require absolute paths for icons, so set_launcher_icon replaces the icon path with the current location of the icon based on where you've placed the directory:
/opt/Zotero/set_launcher_icon
# Symlink zotero.desktop into ~/.local/share/applications/ (e.g., ln -s /opt/zotero/zotero.desktop ~/.local/share/applications/zotero.desktop)
ln -s /opt/Zotero/zotero.desktop ~/.local/share/applications/zotero.desktop
# Zotero should then appear either in your launcher or in the applications list when you click the grid icon (“Show Applications”), from which you can drag it to the launcher.
# You may need to re-run set_launcher_icon after certain Zotero updates. If something isn't working, it may help to remove the current symlink (~/.local/share/applications/zotero.desktop), wait a few seconds for Zotero to disappear from the launcher, and recreate it. Run Zotero with:
zoterocd /usr/share/applications
sudo bash -c 'echo "[Desktop Entry]
Version=1.0
Name=Zotero
GenericName=Reference Manager
Comment=Zotero Reference Manager
Exec=/opt/Zotero/zotero %U
Terminal=false
Type=Application
Icon=/opt/Zotero/chrome/icons/default/default256.png
Categories=Office;" > zotero.desktop'
sudo chmod +x zotero.desktop
cd -sudo apt install guakeIf the F12 key doesn’t work to show Guake in a Wayland session (the
default in Ubuntu 26.04), you need to set a custom global shortcut in
GNOME:
- Open Settings > Keyboard > View and Customize Shortcuts.
- Go to Custom Shortcuts and click +.
- Name:
Guake Toggle - Command:
guake-toggle - Shortcut: Press
F12.
Alternatively, try setting it from the command line:
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake/ name 'Guake Toggle'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake/ command 'guake-toggle'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake/ binding 'F12'Zellij is a terminal multiplexer (like tmux) with a more user-friendly interface. It works great inside Guake.
# Download and install the latest binary (v0.43.1 as of 2026)
wget https://github.com/zellij-org/zellij/releases/download/v0.43.1/zellij-x86_64-unknown-linux-musl.tar.gz -O /tmp/zellij.tar.gz
tar -xvf /tmp/zellij.tar.gz -C /tmp
sudo mv /tmp/zellij /usr/local/bin/
rm /tmp/zellij.tar.gzPro Tip: Launch Zellij by default in Guake
- Open
guake-prefs. - Under Shell, set the Default interpreter to
/usr/local/bin/zellij.
Some people find the docking bar on the left (the Ubuntu Dock) annoying or simply prefer more screen real estate, especially when using a terminal multiplexer like Zellij or a dropdown terminal.
To permanently disable the dock:
gnome-extensions disable ubuntu-dock@ubuntu.comTo bring it back:
gnome-extensions enable ubuntu-dock@ubuntu.comKitty is a cross-platform, GPU-accelerated terminal emulator that is extremely customizable and feature-rich. It supports advanced terminal protocols and is great for tools like Zellij.
sudo apt update && sudo apt install kittyPro Tip: Use Kitty as a Dropdown (HUD) Terminal
On Ubuntu (GNOME), the most reliable way is using a GNOME Extension:
- Install the Quake-mode extension.
- In settings, set Application to
kittyand Shortcut toF12. - Add
hide_window_decorations yesto~/.config/kitty/kitty.conffor a clean look.
Alternatively, use the native “Quick Access” feature (Kitty 0.42+): -
Bind F12 to the command: kitty +kitten quick-access-terminal
Ghostty is a lightning-fast, GPU-accelerated terminal emulator. In 2026, it is often recommended as a modern replacement for Guake or standard GNOME Terminal.
sudo snap install ghostty --classicPro Tip: Launch Ghostty with a shortcut
To open Ghostty instantly, set a custom GNOME shortcut:
- Open Settings > Keyboard > View and Customize Shortcuts.
- Go to Custom Shortcuts and click +.
- Name:
Launch Ghostty - Command:
ghostty - Shortcut: Press
Ctrl+Alt+G.
Pro Tip: Start Ghostty fullscreen by default
Add the following to ~/.config/ghostty/config:
fullscreen = true
Pro Tip: Use Ghostty as a Guake replacement (Dropdown)
To get a full-width dropdown at the top of your screen on Ubuntu 26.04 (Wayland):
- Add the following to
~/.config/ghostty/config:
# Dropdown (Quick Terminal)
keybind = global:f12=toggle_quick_terminal
quick-terminal-position = top
quick-terminal-size = 100%,40%
quick-terminal-autohide = true
# Standalone Window Behavior
maximize = true
theme = Adwaita Dark
window-decoration = false
# Keep Ghostty running in background for the toggle command to work
quit-after-last-window-closed = false
- Set a custom GNOME shortcut for the toggle (
F12):- Command:
ghostty +toggle_quick_terminal
- Command:
- Set a custom GNOME shortcut for a maximized standalone window
(
Ctrl+Alt+G):- Command:
ghostty --maximize=true
- Command:
curl -fsSL https://deno.land/x/install/install.sh | shnvm (Node Version Manager) is the recommended way to install Node.js. It allows you to install and switch between different versions of Node.js easily.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# Remember to source your .bashrc or restart your terminal:
# source ~/.bashrc
# Then install the latest version of Node.js:
nvm install nodenpm install -g @anthropic-ai/claude-codeSignal is an app for messaging and more.
# NOTE: These instructions only work for 64-bit Debian-based
# Linux distributions such as Ubuntu, Mint etc.
# 1. Install our official public software signing key:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
# 2. Add our repository to your list of repositories:
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' |\
sudo tee /etc/apt/sources.list.d/signal.list
# 3. Update your package database and install Signal:
sudo apt update && sudo apt install signal-desktopFlameshot is a powerful yet simple to use screenshot software.
sudo apt install flameshot# Add the Google Chrome repository to your system
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/google-chrome-keyring.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
# Update your package list
sudo apt update
# Install Google Chrome
sudo apt install google-chrome-stable -y# Add the Microsoft Edge repository to your system
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-edge-keyring.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-edge-keyring.gpg] https://packages.microsoft.com/repos/edge stable main" | sudo tee /etc/apt/sources.list.d/microsoft-edge.list
# Update your package list
sudo apt update
# Install Microsoft Edge
sudo apt install microsoft-edge-stable -ysudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo# Enable repo
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install dependencies
flatpak-builder build-dir com.whitemagicsoftware.kmcaster.yaml --force-clean --install-deps-only --install-deps-from flathub
# Build and install
flatpak-builder build-dir com.whitemagicsoftware.kmcaster.yaml --install --user --force-clean
# Run it
flatpak run --user com.whitemagicsoftware.kmcasterSyncthing is a great way to synchronize laptops, phones and other devices. I use it for syncing photos onto my laptop and into family photo albums, as shown below.
sudo apt install syncthingSee https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2026.01.01_amd64.deb
wget https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2026.01.01_amd64.deb -O /tmp/dropbox.deb
sudo dpkg -i /tmp/dropbox.deb
# gpg signature support:
sudo apt install python3-gpgrclone is a tool for copying and syncing files between computers. It
offers several advantages over rsync, including:
-
Support for more cloud storage providers: Rclone supports a wide range of cloud storage providers, including Dropbox, Google Drive, Amazon S3, Microsoft OneDrive, Box, among others. In contrast, rsync only supports local, networked, or remote file transfer.
-
Encryption and compression: Rclone supports several encryption methods and compression algorithms to secure and reduce the size of data during transfer. Rsynd doesn’t have native support for encryption and compression.
-
Synchronization: Rclone has a built-in synchronization tool that allows you to keep your files and directories in sync across different storage locations. While rsync can be used for synchronization, it requires a bit more setup and configuration.
-
Multi-threaded transfers: Rclone can upload and download files using multiple threads simultaneously, which can significantly speed up the transfer process. Rsynce is limited to single-threaded transfers.
-
Cross-platform compatibility: Rclone is a cross-platform tool that can be run on Windows, Linux, macOS, and other operating systems. Rsync, on the other hand, is primarily a Unix-based tool and may require additional setup on non-Unix systems.
Install it with:
sudo apt install rcloneInstall the screenshare-to-GIF tool Peak with the following commands on Ubuntu:
# Install simple screen recorder on ubuntu:
sudo apt install simplescreenrecorderDownload discord from https://discord.com/download and install it with:
sudo apt install libgconf-2-4 libc++1
sudo dpkg -i discord.debsudo snap install slack --classicsudo snap install telegram-desktophttps://github.com/abraunegg/onedrive/blob/master/docs/ubuntu-package-install.md
rm -rf /var/lib/dpkg/lock-frontend
rm -rf /var/lib/dpkg/lock
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -ywget -qO - https://download.opensuse.org/repositories/home:/npreining:/debian-ubuntu-onedrive/xUbuntu_26.04/Release.key | gpg --dearmor | sudo tee /usr/share/keyrings/obs-onedrive.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/obs-onedrive.gpg] https://download.opensuse.org/repositories/home:/npreining:/debian-ubuntu-onedrive/xUbuntu_26.04/ ./" | sudo tee /etc/apt/sources.list.d/onedrive.list
sudo apt-get update
sudo apt install --no-install-recommends --no-install-suggests onedrivesudo apt install gdebi
wget https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_amd64.deb
sudo dpkg -i onlyoffice-desktopeditors_amd64.debAntigravity is Google’s AI-powered, “agent-first” Integrated Development Environment (IDE) built for the next generation of software engineering.
Install the IDE via the official Google APT repository:
# 1. Add the repository to sources.list.d
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | \
sudo gpg --dearmor --yes -o /etc/apt/keyrings/antigravity-repo-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/antigravity-repo-key.gpg] https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/ antigravity-debian main" | \
sudo tee /etc/apt/sources.list.d/antigravity.list > /dev/null
# 2. Update the package cache and install
sudo apt update
sudo apt install antigravity# 1. Add the repository to /etc/yum.repos.d
sudo tee /etc/yum.repos.d/antigravity.repo << EOL
[antigravity-rpm]
name=Antigravity RPM Repository
baseurl=https://us-central1-yum.pkg.dev/projects/antigravity-auto-updater-dev/antigravity-rpm
enabled=1
gpgcheck=0
EOL
# 2. Update the package cache and install
sudo dnf makecache
sudo dnf install antigravityFor when you just need to float away from your geocomputation tasks for a moment. Inspired by xkcd 353:
python3 -c "import antigravity"To reproduce the book, follow these steps:
gh repo clone geocompx/geocompr
cd geocompr
# Install dependencies (may require multiple runs to catch all indirect deps)
Rscript -e 'pak::pak("geocompx/geocompkg", dependencies = TRUE)'
# Render the book
Rscript -e 'bookdown::render_book("index.Rmd")'- Missing Dependencies: Several packages were missing from
geocompkg’s dependency list. You may need to manually install:downlit,rcartocolor,rmapshaper,smoothr,kableExtra,magick,rnaturalearth,ggspatial,sfnetworks,mlr3tuning,pROC,stplanr,z22,tree, andvegan. - External Pointer Error (Chapter 9): In
09-mapping.Rmd, thenz_elevobject’s C++ pointer could become invalid across R sessions. Fixed by adding atryCatchto reload the raster if needed. - Data.table Syntax Error (Chapter 12): In
12-spatial-cv.Rmd, standard data.frame objects were being indexed using data.table syntax. Fixed by switching to standard R indexing. - Shared Library Issue:
igraphmay fail to load iflibxml2versions don’t match. Reinstallingigraphwithpakor from RSPM binaries usually fixes this.



