# enter as root
su -
# add your username into sudo group
usermod -aG sudo username
exit
# logout / log back in as username
If noticing error Can't refresh snap-store, has running apps
snap-store --quit && sudo snap refresh snap-store
# or
sudo killall snap-store
sudo snap refresh snap-store
xdg-mime default firefox_firefox.desktop x-scheme-handler/https
Open dconf
, go to /org/gnome/gnome-session/logout-prompt
, set to False
https://gist.github.com/brccabral/117402595e1aa923649abe318feb707a
sudo prime-select nvidia
apt install gnome-shell-extensions xdg-desktop-portal gnome-tweaks
Install Firefox's Gnome-Shell plugin (in https://extensions.gnome.org )
It doesn't work on Firefox, use Brave https://brave.com/linux/#release-channel-installation
Or install Extension Manager https://flathub.org/apps/com.mattjakeman.ExtensionManager
- Dash to panel
- Move the dash (app shortcuts) to the main panel (clock bar)
- https://extensions.gnome.org/extension/1160/dash-to-panel/
- https://github.com/home-sweet-gnome/dash-to-panel
- Arcmenu
- Change the panel layout to a Start menu-like style
- https://extensions.gnome.org/extension/3628/arcmenu/
- https://gitlab.com/arcmenu/ArcMenu
- Gsconnect
- Sync phone with desktop
- https://extensions.gnome.org/extension/1319/gsconnect/
- https://github.com/GSConnect/gnome-shell-extension-gsconnect/wiki
- Need to allow ports 1716:1764 for both TCP and UDP in
ufw
sudo ufw allow from 192.168.x.x/24 to any port 1716:1764 proto tcp sudo ufw allow from 192.168.x.x/24 to any port 1716:1764 proto udp
- It does work in Ubuntu 24.04 Gnome 46.0, installed from Extensions app
- Go to $HOME/.local/share/applications , select both .desktop files org.gnome.Shell.Extensions.GSConnect.desktop org.gnome.Shell.Extensions.GSConnect.Preferences.desktop right click, Properties, Permissions, check Allow executing file as program, close. Then, double click GSConnect Preferences to open GSConnect and pair my phone.
- DOES NOT WORK Ubuntu 23.04, Gnome 44.3 (tried Dec/2023)
- Vitals
- Show Memory, CPU, network speed next to Clock
- https://extensions.gnome.org/extension/1460/vitals/
- https://github.com/corecoding/Vitals
- User Themes
- Tweak for Dracula-gtk theme
- it is part of GNOME
- https://gitlab.gnome.org/GNOME/gnome-shell-extensions
- open Extensions
- scroll for User Themes -> Settings -> select theme
- open
dconf
->org.gnome.desktop.interface.color-scheme
-> custom valueprefer-dark
- Forge
- Auto Tiling Window manager
- By default it manages the position of new opened windows.
Tiling Assistant
doesn't auto-tile. - https://extensions.gnome.org/extension/4481/forge/
- https://github.com/jmmaranan/forge
- Appindicator
- show icons in system tray (background apps)
- https://extensions.gnome.org/extension/615/appindicator-support/
- https://github.com/ubuntu/gnome-shell-extension-appindicator
- Install i3
- Install
feh
to change background image.sudo apt install feh
- Install
bumblebee-status
to show system information in status bar.pip install --user bumblebee-status
- Install
psutil
to show cpu information inbumblebee-status
.pip install --user psutil
- Install
main
andxclip
to control screenshot.sudo apt install maim xclip
- Configure
$HOME/.config/i3/config
using file below. Multi-monitor setup, choose background image, screenshot shortcuts. - Configure
/usr/bin/dmenu_run
by adding flatpak path so you can launch flatpak apps from dmenu
#!/bin/sh
export PATH="/var/lib/flatpak/exports/bin:$PATH"
dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} &
Edit file /etc/update-manager/release-upgrades
, change line Prompt=lts
to Prompt=normal
.
Run sudo do-release-upgrade
.
- gnome-control-center
- Gnome Settings (how come this is not installed by default??)
apt install gnome-control-center
- zsh
- Wayland
- Nvidia
- nemo
- file explorer, better features than nautilus
- https://gist.github.com/brccabral/0d4b9f6e4d8132e4cb5fa6a3308e0076
- flatpak
sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
- atuin
- terminal commands history
- https://github.com/atuinsh/atuin
- There used to be a .deb file, now it is just download the executable
- synaptic
- package manager
apt install synaptic
- dconf
- system settings configuration
apt install dconf-editor
/org/canonical/unity/settings-daemon/plugins/power
->sleep-inactive-ac-timeout
->0
/com/canonical/unity/settings-daemon/plugins/power
->sleep-inactive-ac-type
->nothing
/org/gnome/settings-daemon/plugins/media-keys/
->home
->[<Super>e]
/org/gnome/desktop/wm/keybindings
->show-desktop
->[<Super>m]
/org/gnome/shell/keybindings
->toggle-message-tray
->[]
/org/gnome/settings-daemon/plugins/power
->sleep-inactive-ac-timeout
->0
/org/gnome/settings-daemon/plugins/power
->sleep-inactive-ac-type
->nothing
/org/gnome/system/location
->enabled
->false
/org/gnome/gnome-session
->logout-prompt
->false
- gdebi
- installer for
.deb
packages, handles dependencies better than Software Center apt install gdebi
- https://launchpad.net/gdebi
- installer for
- deb-get
- package manager for .deb installs
- https://github.com/wimpysworld/deb-get
- Download the latest release
wget https://github.com/wimpysworld/deb-get/releases/download/XXX/deb-get_XXX_all.deb
- Install
sudo dpkg -i deb-get_XXX_all.deb
- Setup a GitHub Fine-grained token https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
- Export the token in DEBGET_TOKEN
export DEBGET_TOKEN=abc123
- IMPORTANT
- Update/Upgrade/Install WITHOUT using
sudo
deb-get update && deb-get upgrade
- Update/Upgrade/Install WITHOUT using
deb-get install bat codium inkscape kse pdfsam-basic
- bauh
- GUI for flatpak, snap, appimage
- https://github.com/vinifmor/bauh
apt install python3-venv fuse3 libfuse2 qt5dxcb-plugin aptitude timeshift aria2 libappindicator3-1 sqlite3 flatpak python3-lxml python3-bs4 # snapd
python -m venv ~/.local/env3 source ~/.local/env3/bin/activate python -m pip install bauh deactivate mkdir -p ~/.local/bin ln -s ~/.local/env3/bin/bauh ~/.local/bin/bauh # (~/ is needed)
- logout/login
- create bauh.desktop into
~/.local/share/applications/
- copy icon into
~/.local/share/icons/
- git-cola
- git GUI
- https://github.com/git-cola/git-cola
- using
uv
uv tool install --with PyQt5 git-cola
- using
pip
python -m venv .local/env3 source .local/env3/bin/activate python -m pip install git-cola
- install
gitk
to visualize log
apt install gitk
make git-cola.app sudo make prefix=$HOME/.local install
- on Wayland
alias git-cola='QT_QPA_PLATFORMTHEME=qt5ct git-cola'
(apt install qt5ct
/apt install qtwayland5
)QT_QPA_PLATFORM=wayland
crashes the app
- python packages
apt install python3-bs4 python3-gi-cairo python3-imdbpy python3-lxml python3-pylsp python3-setproctitle python3-tk python3-unidecode python3-venv python3-xapp
- colorls
- terminal app that lists the directories content using a color theme
- https://github.com/athityakumar/colorls#installation
- Pinta
- simple image editor (paint)
- https://github.com/PintaProject/Pinta
kolourpaint
can't add text,drawing
has limited features- Install dependencies, including .NET SDK
- download
tar.gz
from Github releases, then run./configure
andmake install
- kolourpaint
- simple image editor (paint)
- https://apps.kde.org/kolourpaint/
- https://flathub.org/apps/details/org.kde.kolourpaint
- Flathub has more updated version than apt
apt install kolourpaint
- Kdenlive
- Video editor
- https://kdenlive.org/
- Install from Flatpak (bauh)
- To get speech recognition
# create a python venv mkdir /mnt/HDExtra/Kdenlive cd /mnt/HDExtra/Kdenlive python -m venv .venv source .venv/bin/activate python -m ensurepip # install openai-whisper pip install -U openai-whisper # https://bugs.kde.org/show_bug.cgi?id=499012 mkdir $HOME/.var/app/org.kde.kdenlive/cache/whisper
- Run Kdenlive with these environment variables, or add them in Flatseal
flatpak run --env=PYTHONPATH=/mnt/HDExtra/Kdenlive/.venv --env=PYTHONUSERBASE=/mnt/HDExtra/Kdenlive/.venv --env=PATH=/mnt/HDExtra/Kdenlive/.venv/bin:/app/bin:/usr/bin org.kde.kdenlive
- meld
- files and directories comparison
- https://meldmerge.org/
- https://flathub.org/apps/details/org.gnome.meld
- nvtop
- view Nvidia GPU usage from terminal (like htop)
- https://github.com/Syllo/nvtop.git
- bat
- replace for cat, print text files in terminal
deb-get install bat
- https://github.com/sharkdp/bat
alias bat='batcat'
- Evolution
- email manager
- https://help.gnome.org/users/evolution/stable/
apt install evolution
gsettings set org.gnome.evolution.mail composer-localized-re 'Fwd,RES,Re,Enc,RE'
$HOME/.cache/evolution/mail
location of SQLite filesfolders.db
- sqlitebrowser
- SQLite viewer, DB Browser for SQLite
apt install sqlitebrowser
- Gromit-MPX
- podman
- run containers (docker)
- https://podman.io/
sudo apt install podman
- We can change the location where the containers are installed, but we cannot share the same location between
root
user andmyuser
. - If you need a service to startup at boot, install with
sudo podman
as the servicepodman-restart
runs asroot
. - Config files
# /etc/containers/storage.conf [storage] driver = "overlay" graphroot = "/path/to/containers/storage" runroot = "/run/containers/storage"
# $HOME/.config/containers/storage.conf [storage] driver = "overlay" graphroot = "/home/myuser/.local/share/containers/storage" runroot = "/run/user/1000/containers/storage"
- systemdgenie
- systemd manager GUI from KDE
- https://github.com/KDE/systemdgenie.git
sudo add-apt-repository ppa:kubuntu-ppa/ppa sudo add-apt-repository ppa:kubuntu-ppa/backports sudo apt-get install qtbase5-dev sudo apt-get install qtdeclarative5-dev sudo apt-get install extra-cmake-modules libkf5auth-dev libkf5coreaddons-dev libkf5crash-dev libkf5i18n-dev libkf5xmlgui-dev libsystemd-dev git clone https://github.com/KDE/systemdgenie.git cd systemdgenie mkdir build cd build cmake .. make sudo make install
- chkservice
- NOT AVAILABLE (tried on Dec/2023)
- systemd manager via terminal
sudo apt install chkservice
- https://github.com/linuxenko/chkservice
- Hypnotix
- IP TV client
- https://github.com/linuxmint/hypnotix
- instructions here Hypnotix
- KMyMoney
- budget and finance
- https://kmymoney.org/
- https://snapcraft.io/kmymoney
- debtree
- Show
dpkg
/apt
dependencies in graphviz format. apt install debtree
debtree <pakage-name> -max-depth=2 | dot -Tpng > <path/to/image>.png
- Show
- Skrooge
- budget and finance - I am preferring KMyMoney lately
- https://skrooge.org/
- lf
- lf is a terminal file manager
- https://github.com/gokcehan/lf
- My Windows config https://github.com/brccabral/lf_windows
- AppImageLauncher
- integrates .AppImage programs into the system (prefer using
bauh
) - https://github.com/TheAssassin/AppImageLauncher
- https://launchpad.net/~appimagelauncher-team/+archive/ubuntu/stable
- integrates .AppImage programs into the system (prefer using
- lazygit
- interactive terminal git ui
- https://github.com/jesseduffield/lazygit
- lazydocker
- interactive terminal docker ui
- https://github.com/jesseduffield/lazydocker
- starship
- it makes
bash
better looking - https://starship.rs/
- install starship using provided script in website
- add
eval "$(starship init bash)"
into~/.bashrc
- download file
starship.toml
below and put it into~/.config
- can be used in
zsh
,powershell
and others
- it makes
- QDirStat
- Directory Statistics Tree View
- https://github.com/shundhammer/qdirstat
apt install qdirstat
- kitty
- terminal emulator
- https://github.com/kovidgoyal/kitty
- download the binary bundle
- extract the contents in a folder,
$HOME/.local/bin/kitty.d
- make a symlink from where you extracted it
$HOME/.local/bin/kitty.d/bin/kitty
to your$HOME/.local/bin
(this has to be in your $PATH)ln -s $HOME/.local/bin/kitty/bin/kitty $HOME/.local/bin/kitty
- set kitty as x-terminal-emulator alternative
sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator $HOME/.local/bin/kitty 50
- check if it is the default, or select it if not
sudo update-alternatives --config x-terminal-emulator
- make sure
ls
has--hyperlink=auto
option, use an alias for that. This will enable clicking in the file name to open it.alias ls='ls --hyperlink=auto --color=tty'
(or--color=auto
)- useful with other commands like
grep
,dir
- on Wayland, need to set a config in
$HOME/.config/kitty/kitty.conf
->linux_display_server x11
ctrl+shift+enter
to open new shells in same kitty windowctrl+shift+l
to change layout
- tldr
- show command examples, a better --help
- https://github.com/tldr-pages/tldr
- Instead of
ffmpeg --help
, usetldr ffmpeg
pip install tldr
tldr -u
updates local cache- other ways of installing https://github.com/tldr-pages/tldr/wiki/tldr-pages-clients
- Converter
- GUI app for ImageMagick (image converter)
- Install from flatpak (bauh)
- https://gitlab.com/adhami3310/Converter
- heaptrack and Heaptrack GUI
- Memory profiler
apt install heaptrack heaptrack-gui
- Usage
heaptrack /path/to/executable
- When the executable finishes, if you have Heaptrack GUI installed, it will auto open the results.
- Hotspot
- GUI for perf (perf is a profiler)
- https://github.com/KDAB/hotspot (AppImage)
- This will run
perf
and save results to$HOME/output
. Open$HOME/output
in Hotspot. perf record --freq=997 --call-graph dwarf -q -o $HOME/output /path/myProgram
- If needed, change
perf_event_paranoid
to -1 and kptr_restrict to 0 sudo nano /proc/sys/kernel/perf_event_paranoid
sudo nano /proc/sys/kernel/kptr_restrict
- KCacheGrind
- code profile visualizer (python and c/c++ valgrind)
- https://apps.kde.org/kcachegrind/
- Install from flatpak (bauh)
- Running valgrind will slow down a lot the execution of the program, try
perf
orgprof
too. valgrind --tool=callgrind /path/myProgram
this will generate a filecallgrind.out.<pid>
. Open it in KCacheGrind- Python instructions https://gist.github.com/brccabral/7d6dc5cdd9ca49bb723e13d40c572f38
- Compile the program with
CALLGRIND_TOGGLE_COLLECT
macro to filter the parts of your code that needs analysis. - Then, run
valgrind
with--collect-atstart=no
. You may add more options likevalgrind --tool=callgrind --collect-atstart=no --cache-sim=no --branch-sim=no
#include <valgrind/callgrind.h> void foo() { // This is the function we want to profile CALLGRIND_TOGGLE_COLLECT; // Start profiling // Simulate some work CALLGRIND_TOGGLE_COLLECT; // Stop profiling }
- KGraphViewer
- GUI for
.dot
files - https://apps.kde.org/kgraphviewer/
- Install from flathub (bauh)
- GUI for
- gprof2dot
- convert many profile formats to
.dot
files (perf, gprof, valgrind) - https://github.com/jrfonseca/gprof2dot
pip install gprof2dot
- Prefer using
perf
! - using
gprof
- compile with
-pg
link flagg++ -g -pg main.cpp -o main
- run once normally
./main
, once it is finished a filegmon.out
will be saved in current directory - convert with
gprof main gmon.out | gprof2dot -s -w > gprof.dot
. Open it in KGraphViewer
g++ -g -pg main.cpp -o myProgram ./myProgram gprof myProgram gmon.out > gprof.out gprof2dot -s -w gprof.out > gprof.dot
- compile with
- using
perf
# perf record -F 99 -g -- ./main perf record --freq=997 --call-graph dwarf -q -- ./main # this generates large files perf script | c++filt > out.filt # c++filt requires use of pipes | gprof2dot -s -w -f perf out.filt > perf.dot
- open
perf.dot
in KGraphViewer
- open
- using
stackcollapse
from FlameGraphperf record -F 99 -g -- ./main perf script > out.perf stackcollapse-perf.pl out.perf > out.collapse gprof2dot -s -w -f collapse out.collapse > collapse.dot
- convert many profile formats to
- FlameGraph
- a series of scripts to convert
perf
outputs into a flame graph - https://github.com/brendangregg/FlameGraph
- clone repo, create symlinks to scripts in bin folder, make them executable
mkdir -p $HOME/.local/bin cd $HOME/.local/bin git clone --depth 1 https://github.com/brendangregg/FlameGraph FlameGraph.d ln -s $HOME/.local/bin/FlameGraph.d/flamegraph.pl $HOME/.local/bin/ ln -s $HOME/.local/bin/FlameGraph.d/stackcollapse-perf.pl $HOME/.local/bin/ chmod +x ./stackcollapse-perf.pl chmod +x ./flamegraph.pl
- run
perf
and convert files
perf record -F 99 -g -- /path/to/program/main perf script > out.perf stackcollapse-perf.pl out.perf > out.collapse flamegraph.pl out.collapse > flamegraph.svg
- open
flamegraph.svg
in a Chromium browser for full functionality (Ctrl+F, Selection, etc). Firefox opens svg, but no iteraction
- a series of scripts to convert
- Inkscape
- SVG editor (Vector Graphics Editor)
- Install from snap (bauh) - flatpak doesn't seem official
- https://inkscape.org/
- jq
- pretty print JSON
- https://stedolan.github.io/jq/
sudo apt install jq
- openssh-server
- enable your system to be accessed via ssh
sudo apt install openssh-server
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo systemctl status ssh
- development tools
apt install gcc make ruby-dev
apt install cmake pkg-config
apt install mesa-utils libglu1-mesa-dev freeglut3-dev mesa-common-dev
apt install clang clang-tools clang-tidy clang-format clangd llvm llvm-dev lld lldb libc++-dev
apt install libomp-dev libstdc++-12-dev libc++abi-dev libclang-dev libclang-cpp-dev
apt install cppcheck cppcheck-gui
apt install libcurl4-openssl-dev libxtst-dev libgspell-1-dev libsecret-1-dev libnotify-dev
-
apt install ninja-build sudo ln -s /usr/bin/ninja /usr/local/bin/ninja
- KDevelop
- IDE for C++
- Ubuntu 22.04 has a version that is incompatible with wxWidgets, install Ubuntu 23.04
apt install kdevelop cmake konsole git kde-cli-tools markdownpart breeze
breeze
will install breeze theme- More themes at https://store.kde.org/browse?cat=112&ord=rating
- put them at
$HOME/.local/share/color-schemes
- I like the "Optimal", but change the
[Colors:Selection] BackgroundNormal=61,174,233
- The "Materia Manjaro" is good too, but change
[Colors:Window] BackgroundNormal=84,84,84
- put them at
- pipx
- an easy way to install python programs in their own venv, it creates the isolated venv for you
- https://github.com/pypa/pipx
python3 -m pip install --user pipx # python3 -m pipx ensurepath # check if your `$HOME/.local/bin` is in your `$PATH`
- installing python programs from
pip
usingpipx
will add a symlink them on$HOME/.local/bin
pointing to its ownvenv
- gdbgui
- a GUI for
gdb
(C/C++ debugger) - https://www.gdbgui.com/
- install using
pipx
(above)
pipx install gdbgui
- make sure your
$HOME/.local/bin
is in your$PATH
- run as any command line
gdbgui
- it will open the GUI in your browser
- a GUI for
- ntfsfix
- fix problems mounting NTFS partitions
sudo apt install ntfs-3g
sudo ntfsfix /dev/sda2
- dupeGuru
- find duplicated files and pictures
- https://github.com/arsenetar/dupeguru
git clone [email protected]:arsenetar/dupeguru.git cd dupeguru sudo apt install pyqt5-dev-tools make -j10 make run
- Elisa
- Music player from KDE
- https://apps.kde.org/elisa/
- Kvantum
- flatpak theming
- https://github.com/tsujan/Kvantum/blob/master/Kvantum/INSTALL.md#debian-based-distributions
sudo add-apt-repository ppa:papirus/papirus sudo apt update sudo apt install qt5-style-kvantum qt5-style-kvantum-themes
- install Kvantum as flatpak
flatpak install org.kde.KStyle.Kvantum
or usebauh
- override flatpak environment
sudo flatpak override --env=QT_STYLE_OVERRIDE=kvantum --filesystem=xdg-config/Kvantum:ro
After installing, add your user to docker group.
https://docs.docker.com/engine/install/linux-postinstall/
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
These are some docker containers that I like having on my system.
- Portainer
- https://www.portainer.io/
- Web UI for managing docker
- Install the Community Edition https://docs.portainer.io/start/install-ce/server/docker/linux
- PiHole and Unbound
- Docker Host Manager
- https://github.com/iamluc/docker-hostmanager
- Adds your docker containers into
/etc/hosts
so you can refer them by container_name.network_name - Names with underscores
_
may have problems with systemd-resolved. docker run -d --name docker-hostmanager --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /etc/hosts:/hosts -v /mnt/HDExtra/docker-hostmanager-server/config:/config iamluc/docker-hostmanager