Konfiguration meines ThinkPads

  1. Sicherung der vorinstallierten Version von Ubuntu (Ubuntu 20.04 LTS)

  2. Upgrade auf Ubuntu 22.04 LTS anhand dieses Leitfadens:

    • System aktualisieren
    sudo apt update && sudo apt upgrade -y
    
    • in /etc/update-manager/release-upgrades Promt=never zu Promt=lts ändern
      (Ubuntu-Control-Center: Info > Software-Aktualisierungen > Aktualisierungen > Über neue Ubuntu-Versionen benachrichtigen)
    • Ubuntu Upgrade Utility starten
    sudo do-release-upgrade -d
    
  3. nala installiert:

  sudo apt install nala
  sudo nala fetch
  1. mein eigenes Tastaturlayout festgelegt:

    • Tastaturlayouts in usr/share/X11/xkb/symbols/de definiert:
      // my own keyboard layout based on neo
    
      // Toggle CapsLock when pressed together with an other Shift key.
      partial modifier_keys
      xkb_symbols "altshift_both_capslock" {
        key <LALT> {
          type[Group1]="TWO_LEVEL",
          symbols[Group1] = [ Shift_L, Caps_Lock ]
        };
      };
      partial modifier_keys
      xkb_symbols "three_capslock" {
        include "shift(lshift_both_capslock)"
        include "shift(rshift_both_capslock)"
        include "de(altshift_both_capslock)"
      };
      // Right Ctrl functions as an Alt.
      partial modifier_keys
      xkb_symbols "rctrl_alt" {
          key <RCTL> { symbols[Group1]= [ Alt_L ] };
          modifier_map Mod1{ <RCTL> };
      };
      // Druck key functions as another right Ctrl.
      partial modifier_keys
      xkb_symbols "druck_rctrl" {
          replace key <PRSC> { [ Control_R, Control_R ] };
          modifier_map Control { Control_L, <PRSC> };
      };
      partial alphanumeric_keys modifier_keys keypad_keys
      xkb_symbols "jab" {
      include "de(neo_base)"
    
      name[Group1]= "German (jab, based on Neo 2)";
    
      include "de(three_capslock)"
      include "de(rctrl_alt)"
      include "de(druck_rctrl)"
    
      include "level3(caps_switch)"
      include "level3(bksl_switch)"
      include "level5(lsgt_switch_lock)"
      include "level5(ralt_switch_lock)"
    
    };
    • Layoutvariante in usr/share/X11/xkb/rules/evdev.xml und usr/share/X11/xkb/rules/base.xml angelegt:
      <variant>
        <configItem>
           <name>jab</name>
           <description>German (my own layout)</description>
        </configItem>
       </variant>
    
    • Layoutlisten usr/share/X11/xkb/rules/evdev.lst und usr/share/X11/xkb/rules/base.lst ergänzt:
        jab             de: German (my own layout)
    
    • Layout temporär auswählen:
      setxkbmap de jab
    
    • Layout dauerhaft in etc/default/keyboard einstellen:
      XKBVARIANT="jab"
    
    • bei kurzem Tastendruck der Modifier zusätzliche Aktionen festlegen:
      xcape -e "Shift_L=Return;Alt_L=Control_R|C;Control_R=Control_R|Shift_L|V;ISO_Level3_Shift=Escape"
    
    • den Rechner einmal neu starten:
      sudo shutdown -r now
    
  2. i3wm einrichten:

    • installieren:
       sudo nala install i3
    
    • brightnessctl installieren, um die Bildschirmhelligkeit anzupassen:
      sudo nala install brightnessctl
      sudo usermod -aG video jab # zur video-Gruppe hinzufügen, damit ich brightnessctl ohne root-Rechte ausführen darf
      sudo shutdown -r now
    
  3. Textfarbe des Terminals auf #A0A8B7 und Hintergrundfarbe auf #1F2329 geändert

  4. Brave installiert:

   sudo nala install apt-transport-https curl
   sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
   echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
   sudo nala update
   sudo nala install brave-browser
- `Copy Title and Url as Markdown Style` hinzugefügt
- [`Dark Reader`](https://darkreader.org) hinzugefügt
- `vimium` hinzugefügt
  1. Thunderbird eingerichtet
  2. oh-my-zsh mit dem Theme powerlevel10k installiert:
   sudo nala install zsh
   chsh -s $(which zsh) # make zsh the default shell
   sudo nala install git
   sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

diesen Instruktionen gefolgt um Meslo Nerd Font zu installieren

   git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
   echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
   exec zsh
  1. UbuntuMono Nerd Font installiert (Ubuntu Nerd Font leider nur mit riesigem letter-spacing)

  2. vifm installiert:

    sudo nala install vifm
    
  3. zathura installiert:

    sudo nala install zathura
    
  4. lunarvim installiert:

      # download 'nvim-linux64.deb'
      sudo apt install ~/Downloads/nvim-linux64.deb
    
    • python:
      sudo nala install python-is-python3
      sudo nala install python3-pip
    
    • node.js und npm:
      sudo nala install nodejs
      sudo nala install npm
    
    • cargo:
      sudo nala install cargo
    
    • lunarvim selbst:
      LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
    
    • um den lvim-Befehl verfügbar zu machen, musste ich noch ~/.local/bin zu PATH hinzufügen (siehe hier):
      export PATH=$HOME/.local/bin:$PATH # in ~/.zshrc 9.Zeile
    
  5. VSCode und jupyter-notebook installieren (für EDV):
    bash # download .deb-file from website sudo nala install code.deb pip install notebook

  6. Signal installiert:

    # NOTE: These instructions only work for 64 bit Debian-based
    # Linux distributions such as Ubuntu, Mint etc.
    
    # 1. Install our official public software signing key
    wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
    cat signal-desktop-keyring.gpg | sudo tee -a /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
    
    # 2. Add our repository to your list of repositories
    echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' |\
      sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
    
    # 3. Update your package database and install signal
    sudo nala update
    sudo nala install signal-desktop
    
  7. gimp installiert:
    bash sudo nala install gimp

  8. i3wm weiter eingerichtet:

    # to use modifier_keys for special actions
    sudo nala install xcape
    

    Um eine Bildschirmsperre nach suspend zu haben, /etc/systemd/system/i3lock.service angelegt:

    [Unit]
    Description=i3lock
    Before=sleep.target suspend.target
    
    [Service]
    User=jab
    Type=forking
    Environment=DISPLAY=:0
    ExecStart=i3lock -i /usr/share/backgrounds/jammyJellyfish.png
    
    [Install]
    WantedBy=sleep.target suspend.target
    

    und mit sudo systemctl start i3lock.service und sudo systemctl enable i3lock.service gestartet. (siehe hier oder hier)

  9. pandoc installiert:

    sudo nala install pandoc
    
  10. coffeescript installiert:

    # remove node
    sudo nala remove nodejs
    # install node version manager (nvm)
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
    # install node again
    nvm install --lts
    npm install --global coffeescript
    npm install --global file-system
    
  11. weitere Pakete:

    sudo nala install texlive
    sudo nala install texlive-xetex
    sudo nala install texlive-luatex
    sudo nala install pandoc-citeproc
    npm install -g mermaid-filter
    sudo nala install texlive-fonts-extra texlive-fonts-extra-links texlive-lang-german texlive-lang-greek texlive-science
    
  12. vifm eingerichtet:

    sudo nala install xclip
    # for image-preview with ueberzug
    sudo nala install libjpeg8-dev
    sudo nala install libjpeg-dev
    sudo nala install libx11-dev libxtst-dev python3-docopt python3-xlib python3-pil python3-attr
    pip install ueberzug
    sudo nala install ffmpegthumbnailer
    sudo nala install djvulibre-bin
    # to install fontpreview
    git clone https://github.com/sdushantha/fontpreview
    cd fontpreview
    sudo make install
    cd ../
    sudo rm fontpreview
    sudo nala install xdotool
    sudo nala install sxiv
    sudo nala install imagemagick
    sudo nala install fzf
    

    Weil die Bildvorschau zunächst nicht funktionierte, mit folgendem kleinen Skript ueberzug ausprobiert:

    #!/bin/bash
    [ -z "$5" ] && echo "Usage: $0 <image> <x> <y> <max height> <max width>" && exit
    source "`ueberzug library`"
    
    ImageLayer  0< <(
            ImageLayer::add [identifier]="example0" [x]="$2" [y]="$3" [max_width]="$5" [max_height]="$4" [path]="$1"
            read
    )
    

    anhand der Fehlermeldung noch folgendes Paket installiert und es funktionierte:

    sudo nala install python3-tk
    

    (lvim und vifmrun funktionierten direkt von i3wm gestartet erst nach einem Neustart)

  13. polybar als Alternative für i3bar eingerichtet:

    sudo nala install polybar
    mkdir -p ~/.config/polybar/scripts
    git clone https://github.com/madhat2r/polybar-i3-window.git ~/.config/polybar/scripts/polybar-i3-window
    pip install i3ipc
    
  14. discord heruntergeladen und installiert:

    sudo nala install ~/Downloads/discord-0.0.21.deb
    
  15. eduroam eingerichtet:

    # Installer unter cat.eduroam.org heruntergeladen und anschließend ausgeführt
    python eduroam-linux-Hochschule_Flensburg.py
    
  16. Audioprobleme, wenn externer Monitor angeschlossen ist. Lösung: Ausgabegerät in den Einstellungen ändern.

  17. activitywatch heruntergeladen und entpackt.

  18. Firmware-Updates gemacht

  19. rofi installiert:

    sudo nala install rofi
    
  20. networkmanager-dmenu heruntergeladen und wieder gelöscht

  21. KeePassXC installiert:

    sudo nala install keepassxc
    
  22. gnome-screenshot (alte Software) heruntergeladen, da das neue Tool seit dem Setup von i3wm nicht mehr funktioniert (nicht mehr vorhanden ist)

  23. Bluetoothprobleme anhand dieses Leitfadens behoben (weitere Anmerkungen für i3wm):

    systemctl status bluetooth.service
    systemctl is-enabled bluetooth.service
    # wenn nicht gestartet:
    systemctl bluetooth start
    
    rfkill
    # wenn Bluetooth blockiert ist:
    rfkill unblock bluetooth
    
    bluetoothctl
    
  24. spotify installiert:

    sudo nala install spotify-client
    
  25. fzf upgedatet:

    git clone --depth 1 https://github.com/junegunn/fzf.git ~/bin/fzf
    ~/bin/fzf/install
    # bei fuzzy-Suche in history Fehler bekommen, da nicht die neue (frisch installierte) Version gefunden wurde, daher:
    sudo nala remove fzf
    
  26. pandoc-xnos installiert:

    pip install pandoc-fignos pandoc-eqnos pandoc-tablenos pandoc-secnos --user
    
  27. libfuse2 für RemNote installiert:

    sudo nala install libfuse2
    
  28. unison installiert:

    sudo nala install unison unison-gtk
    
  29. ripgrep installiert:

    sudo nala install ripgrep
    

Anmerkungen & Erläuterungen


Tastaturlayout

Mein Layout hat den Namen jab und nutzt das Layout neo_base aus der Datei de als Grundlage.
Die Beschreibung ist German (jab, based on Neo 2).
Dann bindet das Layout noch verschiedene Blöcke zur Definition der Modifier ein.
Die ersten drei sind aus der selben Datei (de) und von mir definiert.
Sie sorgen dafür, dass Alt_L, Shift_L und Shift_R alle Shift sind und zwei zusammen Caps_Lock aktivieren, Control_R zu Alt_L wird und Druck zu Control_R wird.
Die anderen Blöcke stammen aus den Dateien level3 und level5.
Sie sorgen dafür, dass Caps_Lock und die #-Taste Level3-Modifier werden und AltGr und die <>|-Taste zu Level5-Modifier werden.

Mit localectl list-x11-keymap-variants de kann man sich die verfügbaren Varianten von deutschen Tastaturlayouts anzeigen lassen.
Mit setxkbmap -query kann man sich das aktuell gewählte Tastaturlayout anzeigen lassen.

Farben

Meine Farbwahl basiert auf der onedark.nvim-Farbpalette (darker):

black = "#0e1013",
bg0 = "#1f2329",
bg1 = "#282c34",
bg2 = "#30363f",
bg3 = "#323641",
bg_d = "#181b20",
bg_blue = "#61afef",
bg_yellow = "#e8c88c",
fg = "#a0a8b7",
purple = "#bf68d9",
green = "#8ebd6b",
orange = "#cc9057",
blue = "#4fa6ed",
yellow = "#e2b86b",
cyan = "#48b0bd",
red = "#e55561",
grey = "#535965",
light_grey = "#7a818e",
dark_cyan = "#266269",
dark_red = "#8b3434",
dark_yellow = "#835d1a",
dark_purple = "#7e3992",
diff_add = "#272e23",
diff_delete = "#2d2223",
diff_change = "#172a3a",
diff_text = "#274964",