applications.md 14 KB


title: PC Applications breadcrumbs:

  • title: Configuration
  • title: PC --- {% include header.md %}

Note: Unless specified, Debian/Ubuntu is assumed.

Fancontrol (Linux)

Warning: Don't use this. The fan controller IDs may change on every reboot which breaks the config.

Configure Sensors

  1. Install lm-sensors.
  2. Run sensors-detect.
    1. Answer with the default answers.
    2. At the end, allow it to add the modules to /etc/modules.
  3. Reload the kmod service to reload the modules.
  4. Watch the kernel log to check for sensor errors. If so, try to remove the modules added to /etc/modules with modprobe -r <module> to see if the error goes away. If so, remove it from the modules file.

Configure Fancontrol

  1. Install fancontrol.
  2. (Optional) Install gnuplot if you want pwmconfig to generate graphical plots.
  3. Run pwmconfig.
    1. Use manual mode for when asked.
    2. Generate detailed correlations when asked.
    3. Set up the config file when asked (/etc/fancontrol).
    4. Decide which sensor each controller should depend on.
    5. Configure all fan controllers.
    6. Save and quit.
  4. Tweak the config:
    1. Open /etc/fancontrol.
    2. Round up all numbers, just to make it a little cleaner.
    3. Set interval to around 2 seconds.
  5. Restart the fancontrol service.

Firefox

Config

  • Disable middle mouse paste by setting middlemouse.paste to false in about:config.
  • Enable middle mouse "drag scrolling" by setting general.autoScroll to true in about:config.
  • Disable external media keys by setting media.hardwaremediakeys.enabled to false in about:config.
  • (Linux) Install missing language support: apt install $(check-language-support)

CUPS

Setup for SMB

For Manjaro. Assumes CUPS is already installed.

  1. Install required programs: pacman -Sy smbclient cifs-utils
  2. Enable SMB authentication: In /etc/cups/printers.conf, set AuthInfoRequired username,password.
  3. Add the printer using the smb:// schema. It should prompt for authentication when printing stuff.

Git

Config

Nvidia Settings (Linux)

  • To save, use the "save current configuration" button and save it to /etc/X11/xorg.conf.

i3

Installation

See my Arch setup with i3.

Configuration

Keyboard Bindings

  • Specified using the bindsym statements for key symbols (a etc.) or bindcode statements for physical button numbers.
  • Use exec <executable> [args] to run an application. Use exec --no-startup-id to avoid startup notifications ("loading" cursor etc.), for programs that don't support that (the "loading" cursor doesn't go away).

Usage

Assuming default keybinds.

Files

  • User config: ~/.config/i3/config

Basics

  • Exit: Mod+Shift+E
  • Reload: Mod+Shift+R
  • Open terminal: Mod+Enter
  • Open application (using dmenu/rofi): Mod+D
  • Exit application: Mod+Shift+Q

Navigation and Layout

  • Move between windows: Mod+ArrowKey
  • Change mode:
    • Tiling mode (standard): Mod+E
    • Stacking mode: Mod+S
    • Tabbed mode: Mod+W
  • Workspaces:
    • Change workspace: Mod+<1-9>
    • Move window to another workspace: Mod+Shift+<1-9>

Piper (Linux)

GUI for configuring gaming mice.

Setup

  1. Install the piper PPA.
  2. Install piper.
  3. Configure the mouse using the GUI application.

PipeWire (Linux)

A modern audio server replacement for PulseAudio, JACK and ALSA. Comes with adapters for compatibility with existing applications and such that existing tools can be used.

Resources

Usage

  • Open audio control panel:
    • GUI: pavucontrol
    • TUI: alsamixer -c <card-id>
  • Show stuff:
    • Show audio server info: pactl info
    • Show cards: pactl list cards
    • Show inputs: pactl list sources
    • Show outputs: pactl list sinks
    • Show sound card info: cat /proc/asound/UMC1820/stream0 (for card UMC1820)

Installation

See the Arch (i3) or Kubuntu config notes.

Configuration

General

  1. Set the sample rate:
    1. Find the card's current rate and supported rates: cat /proc/asound/UMC1820/stream0 (for card UMC1820)
    2. Create /etc/pipewire/pipewire.conf.d/10-clock-rate.conf containing the snippet below, with your chosen sample rate.
  2. Set sample depth:
    1. TODO
  3. TODO Fix stuttering. When using loopback module only? Weird playback of old buffer for a split second when opening new audio application?
  4. Restart PipeWire to apply changes: systemctl --user restart pipewire.service

Example contents of /etc/pipewire/pipewire.conf.d/10-clock-rate.conf:

context.properties = {
   default.clock.rate = 96000
}

Disable ALSA Card Profiles (ACP) for a Card

Disabling ACP for an ALSA card means that all of its inputs and outputs will be provided as raw channels without surround mixing etc. The same result (seemingly) may also be achieved by setting the card profile to "pro audio" in e.g. pavucontrol, although the pro audio profile seems to mess up my sink/source routing.

  1. In /etc/pipewire/media-session.d/alsa-monitor.conf, add the snippet below in the rules list.
    • device.vendor.id should be set to the vendor ID of the USB device. Use lsusb to find it. Behringer typically uses 1397.
  2. Restart PipeWire: systemctl --user restart pipewire.service

Snippet for /etc/pipewire/media-session.d/alsa-monitor.conf:

# Add into the existing section below
# rules = [
    # ...
    {
        matches= [
            {
                # Behringer
                device.name = "~alsa_card.*"
                device.vendor.id = "1397"
            }
        ]
        actions = {
            update-props = {
                api.alsa.use-acp = false
            }
        }
    }
# ]

Setup Virtual Sinks and Sources Using Channels from a Multi-Channel Card

Split e.g. an 8-channel output device into four stereo devices. Requires PipeWire v3.27 or newer.

  1. (Note) See Virtual Devices (PipeWire Wiki).
  2. Disable ACP for the card (see above). (Or change to the "pro audio" profile, but that didn't work for me.)
  3. In /etc/pipewire/media-session.d/media-session.conf, add the snippet below in the context.modules list.
    • Add a module instance for each virtual input/output device.
    • Find the target device using pactl list sinks or pactl list sources.
  4. Restart PipeWire: systemctl --user restart pipewire.service

Snippets for /etc/pipewire/media-session.d/media-session.conf:

# Add into the existing section below
# context.modules = [
    # ...

    # Virtual output example
    {   name = libpipewire-module-loopback
        args = {
            node.name = "BEHRINGER_UMC1820_0102"
            node.description = "Behringer UMC1820 (1-2)"
            capture.props = {
                media.class = "Audio/Sink"
                audio.position = [ FL FR ]
            }
            playback.props = {
                audio.position = [ AUX0 AUX1 ]
                node.target = "alsa_output.usb-BEHRINGER_UMC1820_B572BD9B-00.pro-output-0"
                stream.dont-remix = true
                node.passive = true
            }
        }
    }

    # Virtual input example
    # TODO

#]

PuTTY (Windows)

  • In Terminal > Features, activate Disable application keypad mode.
  • In Window > Appearance, change font to Consolas, regular, size 10.
  • In Window > Colours, set all ANSI non-bold colors to the same as the bold ones.

Screen

Usage

Serial

  • Open serial session: screen /dev/ttyUSB0 38400,-crtscts (38400 baud, no flow control)
  • End session: Ctrl+A, \
  • (Note) For some devices, you may need to use Ctrl+H instead of backspace.

SMB

Troubleshooting

  • If using DNS instead of NetBIOS and the client freezes while connecting to a share, try enabling the "Routing and Remote Access" service.

Speedfan (Windows)

  • Warning: The controller symlinks likes to change on boot, meaning the config may break every boot. This makes it literally useless.
  • Manually add startup shortcut.
  • Disable Do SMART Summary Error Log scan on startup since it may cause the PC to freeze.
    • Alternatively, use the CLI argument /NOSMARTSCAN.
  • Set the PWM mode for fans which will be controlled by Speedfan to manual.

SSH

Usage

  • New key (RSA): ssh-keygen -t rsa -b 4096

Config

Steam (Linux)

Installation (Kubuntu)

Using Kubuntu Repos or Downloading the Officlal DEB File

Note: Since Steam requires 32-bit (i386) variants of certain NVIDIA packages, and NVIDIA not releasing i386 variants any more as of driver version 465 ish, any normal installation is impossible. The Ubuntu dudes have a PPA containing unofficial i386 variants for the relevant NVIDIA driver packages, but it conflicts with official CUDA packages, which is not nice if you need CUDA.

Using Flatpak

  • See Steam (Flatpak).
  • This doesn't require the dumb i386 NVIDIA driver packages.
  • As long as ValveSoftware/steam-for-linux #7847 isn't fixed, make sure to not enable "remember my password". If you do and it crashes on the next start, run flatpak run com.valvesoftware.Steam --reset (if using Flatpak) to reset the user config and then lanuch it normally afterward.

Miscellanea

  • Proton Windows home dir: ~/.local/share/Steam/steamapps/compatdata/<some_id>/pfx/drive_c/users/steamuser/
  • Proton Windows home dir (Flatpak): ~/.var/app/com.valvesoftware.Steam/.steamlib/steamapps/compatdata/374320/pfx/drive_c/users/steamuser/

tmux

Setup

  • Config files:
    • User: ~/.tmux.conf
    • Global: /etc/tmux.conf
  • Set/fix default shell and colors (using ZSH as example):
    • In ~/.tmux.conf, set set-option -g default-shell /bin/zsh (for ZSH).
    • In ~/.zshrc, set export TERM=xterm-256color.

Usage

  • Sessions:
    • Start new session: tmux new [-s <name>] [-d]
      • -d to start detached.
    • Detach from session: Ctrl+B D
    • List sessions: tmux ls
    • Attach to session: tmux attach [-d] [-t <session>]
      • -d to detach any other attached clients.
  • Enter command: Ctrl+B :<command> Enter
  • Windows:
    • Switch to window: TODO
  • Panes:
    • Split horizontally: Ctrl+B "
    • Split vertically: Ctrl+B %
    • Switch active pane: Ctrl+B <arrow>
    • Show pane numbers: Ctrl+B Q
    • Kill pane: Ctrl+B X (or exit normally)
  • Killing:
    • Kill session: tmux kill-session -t <session>
    • Kill server with all sessions: tmux kill-server
  • Miscellanea:
    • Type into all panes (command): :setw synchronize-panes

Vim

Config

  • Location:
    • Global (Debian): /etc/vim/vimrc
    • Global (Arch): /etc/vimrc
    • User: ~/.vimrc
  • Example.

VS Code

Setup

  1. Install it.
  2. (Linux) Increase the handle count limit:
    1. Ref.: "Visual Studio Code is unable to watch for file changes in this large workspace" (error ENOSPC).
    2. Get current limit: cat /proc/sys/fs/inotify/max_user_watches
    3. In /etc/sysctl.conf, set fs.inotify.max_user_watches=524288.
    4. Reload the config: sysctl -p

Some Extensions

  • HTML CSS Support (ecmel.vscode-html-css): Adds better CSS support.
  • GitLens (eamodio.gitlens): Show more git info (like authorship) in editor. Can be a bit verbose/annoying.
  • Vuln Cost (snyk-security.vscode-vuln-cost): Show inline security vulnerabilities for imports. Only JS support for now.

Config

  • Location:
    • Linux (Ubuntu): ~/.config/Code/User/settings.json
    • Linux (Arch): ~/.config/Code - OSS/User/settings.json
    • Windows: %APPDATA%\Code\User\settings.json
  • Example.

ZSH (Linux)

This is my ZSH setup preference, using Oh-My-ZSH with the Powerlevel10k theme and some recommended font.

  1. Install ZSH:
    1. apt install zsh
  2. Install Oh-My-ZSH:
    1. See ohmyz.sh.
    2. When it asks, set it as your default shell. This won't take effect until the next login.
  3. Setup Powerlevel10k theme:
    1. Download and install the suggested fonts: Fonts (powerlevel10k)
      • For KDE Plasma, download and open with the font installer.
      • For manual installation, move the .ttf files to /usr/share/fonts/TTF/.
    2. Open a new terminal window and set change the profile to use the new font.
    3. Clone the theme: git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/themes/powerlevel10k
    4. In ~/.zshrc, set ZSH_THEME="powerlevel10k/powerlevel10k".
    5. Open a new ZSH session (or restart your terminal).
    6. Configure the theme (if it didn't automatically start): p10k configure
  4. Make zprofile include profile (to avoid breaking certain things):
    1. In ~/.zprofile, add: emulate sh -c "source /etc/profile"
  5. Setup plugins:
    1. In .zshrc, set e.g. plugins=(git docker docker-compose golang rust).
  6. Setup syntax highlighting plugin:
    1. Clone it: git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    2. Add zsh-syntax-highlighting it to plugins in .zshrc.
  7. Configure ~/.zshrc:
    1. Example zshrc.

{% include footer.md %}