Ubuntu Desktop personal setup
This is how I customize a clean Ubuntu install.
Essentials
First we install the essentials.
# basic packagessudo apt update && sudo apt install -y \ curl vim fish tmux git xclip
SSH keys
ssh-keygen -t ed25519 -C "user@domain.com"# copy public key to clipboardxclip -sel clip < ~/.ssh/id_ed25519.pub
Folder structure
Update the folder structure. Basically changing the default locations of folders like ~/Downloads and ~/Desktop.
Create new folders:
cd ~mkdir -p work dl docs media tpl pub \ media/{music,books,pics,vids,screens,torrents}
Make Ubuntu use our new folders. Edit ~/.config/user-dirs.dirs and update it so it looks like this:
XDG_DESKTOP_DIR="$HOME/desk"XDG_DOWNLOADS_DIR="$HOME/dl"XDG_TEMPLATES_DIR="$HOME/tpl"XDG_PUBLICSHARE_DIR="$HOME/pub"XDG_DOCUMENTS_DIR="$HOME/docs"XDG_MUSIC_DIR="$HOME/media/music"XDG_PICTURES_DIR="$HOME/media/pics"XDG_VIDEOS_DIR="$HOME/media/vids"
Fish configuration
Make fish the default shell and install useful plugins.
Install Fisher and the z plugin:
# install fisher (assumes fish is installed)curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisherfisher install jethrokuan/z
Ubuntu configuration
Tweak appearance and input sources via Settings:
- Settings → Appearance → Dark
- Dock → Auto-hide: On, Position: Bottom
Install GNOME Tweaks and enable recommended options:
sudo apt install -y gnome-tweaks
Recommended GNOME Tweaks options:
- Top Bar: Activities Overview Hot Corner
- Top Bar: Battery Percentage
- Top Bar: Weekday
- Workspaces: Static Workspaces (Number of Workspaces: 5)
- Workspaces span displays
GNOME Terminal
Download and install the Dracula theme for GNOME Terminal and restart the terminal to apply changes.
Tmux configuration
Install tpm and add the Dracula theme plugins. Example ~/.config/tmux/tmux.conf snippet:
set -g @plugin 'tmux-plugins/tpm'set -g @plugin 'dracula/tmux'set -g @dracula-plugins 'git, network-ping, attached-clients, network-vpn, weather, time'set -g @dracula-show-left-icon 'uwu'# initialize tpm (run inside tmux)run -b '~/.tmux/plugins/tpm/tpm'
Node
Install n (node version manager):
curl -L https://git.io/n-install | bash
Python
Install pyenv using the recommended installer and the system build dependencies.
See suggested build environment:
https://github.com/pyenv/pyenv/wiki#suggested-build-environment
Install Poetry for Python packaging: https://python-poetry.org/docs/#installation
Install pyenv-installer: https://github.com/pyenv/pyenv-installer