configuration of my ThinkPad

  1. backup of the preinstalled version of Ubuntu (Ubuntu 20.04 LTS)

  2. upgrade to Ubuntu 22.04 LTS using this guide:

    • update system
    sudo apt update && sudo apt upgrade -y
    
    • change Promt=never in /etc/update-manager/release-upgrades to Promt=lts
    • start Ubuntu Upgrade Utility
    sudo do-release-upgrade -d
    
  3. installed nala:

  sudo apt install nala
  sudo nala fetch
  1. set my own keyboard layout:

    • define keyboard layout in usr/share/X11/xkb/symbols/de:
      // 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)"
    
    };
    • create layout variant in usr/share/X11/xkb/rules/evdev.xml and usr/share/X11/xkb/rules/base.xml:
      <variant>
        <configItem>
           <name>jab</name>
           <description>German (my own layout)</description>
        </configItem>
       </variant>
    
    • add to layout lists usr/share/X11/xkb/rules/evdev.lst and usr/share/X11/xkb/rules/base.lst:
        jab             de: German (my own layout)
    
    • select layout temporary:
      setxkbmap de jab
    
    • set layout permanent in etc/default/keyboard:
      XKBVARIANT="jab"
    
    • additional actions for short keystroke of the modifier:
      xcape -e "Shift_L=Return;Alt_L=Control_R|C;Control_R=Control_R|Shift_L|V;ISO_Level3_Shift=Escape"
    
    • restart laptop:
      sudo shutdown -r now
    
  2. set up i3wm:

    • install:
       sudo nala install i3
    
    • install brightnessctl, to adjust screen brightness:
      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. changed text color of the terminal to #A0A8B7 and background color to #1F2329

  4. installed Brave:

   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
- added `Copy Title and Url as Markdown Style`
- added [`Dark Reader`](https://darkreader.org)
- added `vimium`
  1. set up Thunderbird
  2. installed oh-my-zsh with the theme powerlevel10k:
   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)"

followed this instructions to install Meslo Nerd Font

   git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
   echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
   exec zsh
  1. installed UbuntuMono Nerd Font (unfortunately Ubuntu Nerd Font only with huge letter-spacing)

  2. installed vifm:

    sudo nala install vifm
    
  3. installed zathura:

    sudo nala install zathura
    
  4. installed lunarvim:

      # 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 and npm:
      sudo nala install nodejs
      sudo nala install npm
    
    • cargo:
      sudo nala install cargo
    
    • lunarvim:
      LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
    
    • to make the lvim command accessible, I had to add ~/.local/bin to PATH (see here):
      export PATH=$HOME/.local/bin:$PATH # in ~/.zshrc 9.Zeile
    
  5. installed VSCode and jupyter-notebook:
    bash # download .deb-file from website sudo nala install code.deb pip install notebook

  6. installed Signal:

    # 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. installed gimp:
    bash sudo nala install gimp

  8. continued to set up i3wm:

    # to use modifier_keys for special actions
    sudo nala install xcape
    

    created /etc/systemd/system/i3lock.service to have a lock screen after suspend:

    [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
    

    and started with the following commands sudo systemctl start i3lock.service and sudo systemctl enable i3lock.service. (see here or here)

  9. installed pandoc:

    sudo nala install pandoc
    
  10. installed coffeescript:

    # 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. additional packages:

    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. set up vifm:

    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
    

    Because the image preview didn't work immediately, I tested ueberzug with the following script:

    #!/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
    )
    

    it worked after I installed the following package based on the error message:

    sudo nala install python3-tk
    

    (started directly by i3wm lvim and vifmrun ran only after a restart)

  13. set up polybar as an alternative for i3bar:

    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. downloaded and installed discord:

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

    # Installer unter cat.eduroam.org heruntergeladen und anschließend ausgeführt
    python eduroam-linux-Hochschule_Flensburg.py
    
  16. audio problemes, when an external monitor is connected; solution: change output device in settings

  17. downloaded and unpacked activitywatch.

  18. made some firmware updates

  19. installed rofi:

    sudo nala install rofi
    
  20. installed and deleted networkmanager-dmenu

  21. installed KeePassXC:

    sudo nala install keepassxc
    
  22. installed gnome-screenshot (old software), because the new tool doesn’t work since the setup of i3wm

  23. fix bluetooth issues following this guide (additional annotations for 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. installed spotify:

    sudo nala install spotify-client
    
  25. updated fzf:

    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. installed pandoc-xnos:

    pip install pandoc-fignos pandoc-eqnos pandoc-tablenos pandoc-secnos --user
    
  27. installed libfuse2 for RemNote:

    sudo nala install libfuse2
    
  28. installed unison:

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

    sudo nala install ripgrep
    

annotations and explanations


keyboard layout

My keyboard layout is called jab and is based on the neo_base layout from the de file.
The description is German (jab, based on Neo 2).
The layout embeds different blocks to define the modifiers.
The first three are from the same file (de) and are defined by me.
They ensure that Alt_L, Shift_L and Shift_R are all a shift modifier and two pressed together activate Caps_Lock, Control_R becomes Alt_L and Print becomes Control_R.
The other block are from the files level3 and level5.
They ensure thet Caps_Lock and the # key become leevel3 modifier and AltGr and the <>| key become level5 modifier.

The command localectl list-x11-keymap-variants de shows all available variants of the german keyboard layout.
The command setxkbmap -query shows the currently selected keyboard layout.

colors

My choice of color is based on the onedark.nvim color palette (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",