Selecting Ubuntu (22.04 or 24.04) as a primary workstation OS requires a curated set of tools to bridge the gap between functionality and performance. This collection focuses on essential software and configurations for a seamless workflow, primari utilizing apt and snap for package management.
Network and Proxy Management
Proxychains
proxychains is a command-line utility that forces any application's TCP traffic through a proxy (SOCKS4, SOCKS5, or HTTP). Unlike standard environment variables, it works even for applications that do not natively support proxy settings.
Installation:
sudo apt install proxychains4
Usage:
proxychains4 curl https://google.com
Environment-Based Proxy Control
For shell-level proxying, adding helper functions to your .bashrc or .zshrc simplifies toggling connection settings.
# Enable network proxy
set_proxy() {
local target_host="${1:-http://127.0.0.1:7890}"
local bypass="localhost,127.0.0.1,::1"
export http_proxy="$target_host"
export https_proxy="$target_host"
export ftp_proxy="$target_host"
export all_proxy="$target_host"
export no_proxy="$bypass"
printf "Proxy set to: %s\n" "$target_host"
}
# Disable network proxy
unset_proxy() {
unset http_proxy https_proxy ftp_proxy all_proxy no_proxy
echo "Proxy environment variables cleared."
}
Privoxy: SOCKS5 to HTTP Translation
Privoxy acts as a web proxy that can forward requests to a SOCKS5 usptream, which is useful for applications that only support HTTP proxies.
sudo apt install privoxy
sudo systemctl enable --now privoxy
Edit /etc/privoxy/config to define the forwarding rule:
# Listen on port 8118
listen-address 127.0.0.1:8118
# Forward all traffic to a local SOCKS5 proxy on port 1080
forward-socks5t / 127.0.0.1:1080 .
Custom DNS Routing
For internal development domains, you can configure systemd-resolved to use specific DNS servers for specific suffixes.
Create a configuration file: /etc/systemd/resolved.conf.d/dev-dns.conf:
[Resolve]
DNS=10.0.0.53
Domains=~internal.corp ~dev.local
Development Stack
Integrated Development Environments (IDEs)
- VS Code: Easiest to maintain via Snap:
sudo snap install code --classic. - JetBrains IntelliJ IDEA: After manual installation, create a desktop entry to enable docking in the Ubuntu launcher.
Example ~/.local/share/applications/intellij.desktop:
[Desktop Entry]
Type=Application
Name=IntelliJ IDEA
Icon=/opt/idea/bin/idea.png
Exec="/opt/idea/bin/idea.sh" %f
Comment=Capable and Ergonomic IDE for JVM
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea
VIM Configuration
A lightweight .vimrc for improved readability and navigation:
" Basic Editor Settings
set nocompatible
set number
set relativenumber
set cursorline
set showmode
set showcmd
" Indentation
set expandtab
set shiftwidth=4
set tabstop=4
set autoindent
" Search Behavior
set hlsearch
set incsearch
set ignorecase
set smartcase
" Encoding
set encoding=utf-8
Specialized Dev Utilities
- Glint: A high-performance Git client compatible across Linux, Windows, and macOS.
- He3: A comprehensive toolbox for developers including JSON formatters, regex testers, and cryptography tools.
- Remmina: The standard Linux tool for managing remote connections via SSH, RDP, and VNC.
- Remote Desktop Manager: A cross-platform alternative for complex infrastructure management.
Multimedia and Graphics
- GIMP: Professional-grade raster graphics editor.
- PhotoFlare: A streamlined image editor inspired by PhotoFiltre, balancing simplicity with powerful batch features.
- ImageMagick: Command-line image processing for automation and scripting.
- Krita: Digital painting and illustration software.
- VLC: Universal media player capable of handling virtually any codec.
- OBS Studio: Industry standard for screen recording and live streaming.
Input Frameworks
Ubuntu defaults to IBus, but Fcitx5 is often preferred for its performance and modern plugin ecosystem.
To install Fcitx5 for Chinese input support:
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt
Configure the environment variables in ~/.profile or /etc/environment:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
System Management
- RustDesk: An open-source, self-hosted alternative to TeamViewer for remote support.
- HardInfo: A system profiler that provides detailed hardware specifications in a GUI.
- GParted: A critical tool for disk partition management and file system resizing.