Personal productivity tools for Ubuntu.
git clone https://github.com/amirilf/ubtools ~/.ubtools
cd ~/.ubtools
bash install.sh
source ~/.bashrcinstall.sh lets you pick which tools to install, checks system dependencies, and adds the necessary lines to ~/.bashrc.
ath — TOTP authenticator with encrypted vault
Manages TOTP secrets in an AES-256 encrypted file. A passphrase is required on every use — secrets are never stored in plain text.
Dependencies
sudo apt install oathtool fzf openssl
# clipboard (pick one):
sudo apt install xclip # X11
sudo apt install wl-clipboard # WaylandUsage
ath # open fzf picker — navigate, Enter to copy code
ath add # add a new entry (service, username, Base32 secret)
ath drop # fzf picker to remove an entry
ath edit # fzf picker to edit an entry
ath export path # export an encrypted backup (separate passphrase)
ath import path # import from an encrypted backup (handles duplicates)
ath passwd # change your ath passphraseFirst run
On the first invocation, ath creates the encrypted vault and asks you to set a passphrase. After that, every run asks for the passphrase to decrypt.
Export / Import
Export and import files are independently encrypted with a passphrase of your choice (can differ from your main ath passphrase). This lets you safely transfer entries between machines.
Import rules:
- Same service + username + secret → silently skipped
- Same service + username, different secret → warning, skipped
- New entry → added
bumper — Maven version bumper
Interactively bumps the version in pom.xml and commits. Handles SNAPSHOT versions.
Dependencies
sudo apt install fzfgit, awk — standard on Ubuntu.
Usage
Run from a Maven project root:
bumperFlow:
- Branch picker — fzf list of local branches (current at top). Select another to switch first (requires clean working tree).
- Bump type — choose major / minor / patch / none.
- Commit confirm — commits
chore(pom): bump version to X.Y.Z.
Supports X.Y.Z and X.Y.Z-SNAPSHOT version formats.
px — GNOME proxy switcher
Switches the GNOME system proxy using an interactive fzf panel. Profiles are stored in a local config file.
Dependencies
sudo apt install fzfgsettings — bundled with GNOME.
Usage
px # open fzf picker — navigate profiles, Enter to activate
px add # add a new proxy profile (name, http host:port, https, ignore list)
px drop # fzf picker to remove a profile
px edit # fzf picker to edit a profile
px off # disable proxy immediately
px status # show current proxy stateConfig format (~/.ubtools/proxy/.config, created by px add):
[work]
http=192.168.1.1:8080
https=192.168.1.1:8080
ignore=localhost,127.0.0.1,::1mvn — Smart Maven wrapper
Overrides mvn with three automatic behaviors:
- Java auto-switch — reads
java.version/maven.compiler.release/maven.compiler.targetfrom the nearestpom.xmland switches the active JDK viaupdate-java-alternatives. - Wrapper auto-generate — if
mvnwis absent butpom.xmlexists, generates it from the latest Maven cached in~/.m2/wrapper/dists. - Tab completion — static completion for common goals and flags.
Dependencies
sudo apt install java-common curl
# Install the JDK versions your projects need:
sudo apt install openjdk-17-jdk openjdk-21-jdkSourced, not executed — handled automatically by install.sh. Do not run it directly.
Usage
Drop-in replacement for mvn:
mvn clean install
mvn spring-boot:run -DskipTests
mvn dependency:treeSupported Java versions: 8, 11, 17, 21, 23.