Skip to content
ctruedenPublic

About

My configuration files 🤓

Resources

Stars

10 stars

Watchers

3 watching

Forks

Latest commit

 

History

1,660 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is my personal set of configuration files.

I make an effort to document why the configuration is the way it is. I host the files on GitHub for my own convenience, and in case they are useful to others, but of course there is NO WARRANTY ETC. ETC.

Getting Started

  1. Clone this repository somewhere.
  2. Run the setup.sh script to link configuration files and install tools.

On Windows, run this in PowerShell instead:

irm https://raw.githubusercontent.com/ctrueden/dotfiles/main/setup.ps1 | iex

It installs scoop and git, clones this repository into ~/code/ctrueden/dotfiles, and runs its setup.ps1, which runs setup.sh in Git Bash, then sets up PowerShell and Windows Terminal. Later, rerun setup.ps1 (or setup.sh, which defers to it) from the clone.

LICENSE

This is free and unencumbered software released into the public domain. See the UNLICENSE file or http://unlicense.org/ for details.

What does this configuration include?

  1. A supercharged zsh configuration built on zpm and Oh My Zsh:

    • Jump to directories quickly using z.
    • Functional vi mode on the terminal for easy multi-line commands.
    • Syntax highlighted terminal commands as you type.
    • Vastly improved tab completion support for git, mvn and many more.
    • A Starship prompt with git status, language version info, and more.
    • See the zshrc for the full list of zsh plugins.
  2. A supercharged editor configuration:

  3. A terminal multiplexer setup using byobu on top of tmux:

    • Byobu launches automatically, for login shells and local terminals.
    • Ctrl+A as the prefix key, leaving F12 free for a drop-down terminal.
    • Ctrl+B instead over SSH, so nested sessions each have their own prefix.
    • Prefix + Space opens a fuzzy-find command palette (via fzf).
    • Prefix + h opens the current pane's full scrollback in your editor.
    • Custom status bar widgets counting unread GitHub notifications and local repositories with unpushed changes.
    • Where byobu is missing, plain tmux (over SSH) and, on Windows, psmux read the same tmux.conf, plus byobu's main function keys from fkeys.conf.
    • See tmux/ and byobu/ for details.
  4. A declarative package manifest, installed by install-packages:

    • One packages file lists tools for apt, Homebrew, and, on Windows, scoop and winget, plus npm and uv; each entry names its alternatives in order of preference, e.g. apt:fd-find | brew|scoop:fd.
    • Sections for core tools (always), GUI apps (desktops only), and opt-in groups (build, dev, heavy, primary, java, system), chosen per machine when setup.sh first runs and saved in ~/.config/dotfiles/sections.
    • Installs only what is missing, in as few package manager invocations as possible; use --dry-run to preview.
    • Custom installers in bin/packages/ for things no package manager supplies well, each pinned to a release and verified against a recorded checksum.
    • update-all reruns it, so new manifest entries and bumped pins reach existing machines, then upgrades uv tools and npm packages.
  5. A managed set of SCM repositories for the SciJava ecosystem:

    • Sensible defaults for an extensible source code folder structure, anchored at ~/code, and subdivided into categories.
    • Extensible configuration for myrepos to work with many repositories en masse.
    • Shell aliases (type go and press tab) for jumping to specific code folders for SciJava et al., or use z.
    • devlink builds tool checkouts (uv, pixi, npm, cargo, make, or plain scripts) and links their executables into ~/bin, shadowing released versions; mr runs it on checkout and update.
  6. A toolbox for managing and working with Java:

    • jlist lists the Java installations, found beneath ~/Java, the cjdk cache, macOS java_home, Linux alternatives, and Homebrew.
    • jhome prints the path of a matching installation, for one-off use without changing the shell, e.g. JAVA_HOME=$(jhome "^17") mvn ....
    • jswitch changes the current shell's Java, downloading it via cjdk if needed, e.g. jswitch zulu:21; or use shortcuts like j8, j21, and jg21 (GraalVM).
    • java, javac, etc. follow JAVA_HOME, which defaults to an installed LTS release, preferring Java 21.
    • Utilities for inspecting JAR files: catjar, jar-manifest, jardiff, find-class, list-classes, and more in bin/java/.
    • Configuration for using jgo to easily launch useful Java code, particularly SciJava-related code, including ImageJ, Fiji, Bio-Formats, SCIFIO, and script REPLs including Jython, Groovy and the multi-language SciJava REPL.
  7. Limited legacy support for those stuck on bash, including bash 3.x.

Supported platforms include:

Other platforms might work too—I make an effort to keep everything POSIX-friendly—but I haven't tested them.


About

My configuration files 🤓

Resources

Stars

10 stars

Watchers

3 watching

Forks

Used by

Contributors

Languages