The office computers (as of February 2026) run Debian GNU/Linux 11 (bullseye) or 13 (trixie), with GUI LXQt and window manager Xfwm4. Here are some tips for configuring the computer.
@math.uni-bonn.de username and password.export LANG=en_GB.UTF-8
/local/<Username> folder (in the Filesystem root). Lean + Mathlib cache should already be configured correctly to put the .elan and .cache folders in that directory.elan installation script manually from a shell. Since the .profile script is not run on startup, Lean might not be added to your PATH correctly during installation. If this happens to you, edit ~/.bashrc manually by adding the line export PATH="${PATH}:/local/<userName>/.elan/bin" and inserting your username (and then restarting your terminal).lake builds using all 12(?) threads, which sometimes slows/lags the rest of the OS. You can use e.g. export LEAN_NUM_THREADS=10 && lake build to not use all threads.Minor:
Go Forward to Alt+RightArrow.#!/bin/sh
xinput set-prop "Cherry GmbH CHERRY Wireless Device Mouse" "libinput Accel Speed" 0.7
xinput set-prop "Cherry GmbH CHERRY Wireless Device Mouse" "libinput Accel Profile Enabled" 0, 1
You can run xinput and xinput list-props <id/name of mouse> to find the name and properties of your mouse.
The 0.7 can be modified to change the sensitivity of the mouse linearly.
I didn’t find a way to automatically run this when logging in (neither .profile, nor autostart (via GUI or directly editing a config file) seems to work). So I just run these commands from .bashrc and then it gets executed when I open a shell for the first time.
Settings > autoscrolling to enable scrolling with Middle mouse-buttonPreferences > Window Manager > Keyboard consider adding more convenient keyboard shortcuts for Maximise window and Tile window to the left/right.Preferences > Window Manager Tweaks > Accessibility > *uncheck* Raise windows when any mouse button is pressed (scrolling counts as a mouse button press).https://leanprover-community.github.io/mathlib4_docs/find/?pattern=%s#doc and keyword ml, then typing ml Nat searches in the Mathlib docs for Nat. Similarly, https://loogle.lean-lang.org/?q=%s can be used to search with Loogle..bashrc:
source /home/<userName>/git-prompt.sh
PS1="\[\033[32m\]\u@\h\[\033[37m\]:\[\033[33m\]\w\[\033[36m\]\$(__git_ps1 ' (%s)')\[\033[00m\]\$ "
git autocomplete, add source /usr/share/bash-completion/completions/git to your .bashrc.gmm() { gm “$(git symbolic-ref –short refs/remotes/origin/HEAD)” }
cm() { git checkout “$(git symbolic-ref –short refs/remotes/origin/HEAD)” }
clm() { git checkout ‘$(git symbolic-ref –short refs/remotes/origin/HEAD | sed “s|^origin/||”)’ }
alias code=’codium’ alias lb=”export LEAN_NUM_THREADS=10 && lake build”
* Some Git configuration options are useful. You can modify `.gitconfig` (also with `git config --global --edit`). This is my current setup (I don't use all aliases, but a few are very useful, especially `git l` and `git la`):
[core] editor = codium autocrlf = input compression = -1 [pull] rebase = true [alias] alias = ! git config –get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ / my-checkout = !git checkout $1 && git reset master –hard && git cherry-pick $1-patch && : my-commit = !git stash && git checkout master && git stash pop && git commit unstash = !git stash show -p | git apply -3 && git stash drop a = “add” aa = “add –all” ai = “add –interactive” amend = “commit –amend -c HEAD” amendc = “commit –amend -C HEAD” ap = “add –patch” assume = “update-index –assume-unchanged” assumed = “!git ls-files -v | grep ^h | cut -c 3-“ au = “add –update” b = “branch” br = “branch” commit = “commit -v” ci = “commit -v” cia = “commit -va” co = “checkout” conflicts = “!git ls-files -u | cut -f 2 | sort -u” cp = “cherry-pick” d = “diff” dl = “diff HEAD^” ds = “diff –staged” du = “diff origin/master..master” dump = “cat-file -p” f = “fetch –prune” fa = “fetch –all –prune” fd = “log –diff-filter=D –summary” ff = “!git ls-files | grep -i” fm = “log –diff-filter=M –summary” fo = “fetch origin –prune” gr = “grep -Ii” grep = “grep -Ii” log-pretty = “log –pretty=’format:%C(blue)%h%C(red)%d%C(yellow) %s %C(green)%an%Creset, %ar’” log-stat = “log –pretty=format:’%C(yellow)%h%Cred%d\ %Creset%s%Cblue\ [%cn]’ –decorate –stat” log-hist = “!git log-pretty –graph” l = “!git log-hist” la = “!git log-hist –all” ll = “!git log-stat” lp = “log –patch” ls = “!git log-stat” lt = “!git log-hist –simplify-by-decoration” lu = “!git log-hist origin/master..master” merge = “merge –no-edit” m = “merge –no-ff” mf = “merge –ff-only” pf = “pull –ff-only” pnp = “!git pull –rebase && git push” r = “reset” r1 = “reset HEAD^” r2 = “reset HEAD^^” rh = “reset –hard” rh1 = “reset HEAD^ –hard” rh2 = “reset HEAD^^ –hard” s = “status -sb” sa = “stash apply” sha = “rev-list -n 1 HEAD –” sl = “stash list” sp = “stash pop” ss = “stash save -u” st = “status” suba = “submodule add” subr = “!git-submodule-rm” subs = “submodule sync” subu = “submodule foreach git pull origin master” type = “cat-file -t” unassume = “update-index –no-assume-unchanged” unassumeall = “!git assumed | xargs git update-index –no-assume-unchanged” untracked = “ls-files -o -X.gitignore –exclude=.*” [diff] colormoved = “default” colorMovedWs = allow-indentation-change [merge] conflictstyle = diff3 [push] default = current ```
git worktree, since then they share the git history. Add a new worktree using git worktree add ../<myNewFolder>Shift-insert in LXTerminal does not paste, ctrl+shift+V does.~/.profile doesn’t seem to ever get executed (even after making it executable). How to run a startup script properly?