Lin Distros

  • minimal
    • Package managers
    • Firmware-Hardware
    • Partitioning
    • display server
      • x11
      • wayland - new, more secure, slim, still not much used
    • init systems
      • system D - usually “bloated” init system - LS
        • what? init system
          • first process that starts after booting, runs on bkg to manage services etc
          • launch what you need, in specific order
        • sysV
        • cons
          • one point of failure sunce it’s monolythic
          • mainly red-hat project
          • kind of bloated
            • it is modular but most people implement this all togheter
            • at the same time, it’s fast
          • pushes other software to be dependant on it
            • creates problems to distros not willing to use systemD
          • hides certain configs behind its own tools
            • especially bad if you want to change text files
        • pros
          • written in C
          • mantained
    • kernel - src
      • linux stable - 2 months stable
      • linux lts - 2 years stable
      • libre kernel - does not allow proprietary stuff
        • usually these proprietary stuff gives hardware support
          • so you might not be able to use this at all
        • released after a few days of linux stable
      • hardened kernel - non official more secure kernel
        • incompatible with systemd
        • might brake some software
      • android kernel - specific for mobile devices
      • real-time & low latency
        • reduce latency between input and output of task at the cost of… much, especially multitasking
        • applications needs to be tailored to this to be useful
      • zen kernel & xan mod - better performance
      • TKG kernels -
    • firmware blobs
    • UEFI vs legacy Bios
      • supports big storage
      • supports graphics when you boot
    • Table partitioning
      • GPT
      • MBR - no more than 2TB
    • boot loader/manager
      • grub
        • grub-install
        • grub-mkconfig -o /boot/grub/grub.cfg
    • Audio
      • ALSA - driver hard to use
        • cannot play 2 audio at the same time by default
        • complex config
        • no docs
      • options
        • pulseaudio
          • everything just works
          • bad
        • pipewire - new kid in the block to kill pusleaudio + jack
    • file systems
  • Initial configuration
    • archinstall
      • mirror
        • where software come from? better if close to phisical location like Italy
      • f
      • img
    • exit (chroot) - sometimes you also need to reboot
      • especially if startx gives you permission denied. Reboot and log-in with default user like e
    • keyboard layout - src
      • localectl set-keymap uk
      • gb is great britain
    • resolution
      • pacman -S xorg-xrandr
      • xrandr - see all devices
      • go to xinit
      • xrandr —output HDMI-1 —mode 1920x1080 —rate 60
    • user & add password
      • useradd -m -g wheel myNewUserName
      • passwd myNewUserName
      • nano /etc/sudoers
    • fonts
      • quick: pacman -S tff-dejavu
    • xorg
      • pacman -S xorg-server xorg-xinit

      • add to ~/.xinitrc: exec dwm or whatever u using

      • xinit

      • kill xorg server: ctrl + alt + backspace

      • Fixing xinit/startx not running without sudo

        sudo usermod -aG tty username

        • Not sure if these stuff is useful

          sudo chmod 660 /dev/tty2 sudo chmod 660 /dev/tty3

          no screens found

          X -configure sudo cp /root/xorg.conf.new /etc/X11/xorg.conf

          cp /etc/X11/xinit/xinitrc ~/


        startx or xinit — :1 -nolisten tcp vt$XDG_VTNR that’s the enchanced way to do xinit needed in systemd -nolisten tcp optional but great

  • Essential software
    • Window manager - tier list
      • dwm - src (automatic)
        • usage
          • tldr -
            • if you want to go dumb & simple, modify config.def.h & then do the common make & sudo make install or something
              • make - compiling to get binary
              • make install - put binary to usr/local/bin
          • config.def.h - default, where you should modify stuff
            • then run make to create another config.h with same code as config.def.h (should make backup of config.h because you’ll lose changes)
              • you’re supposed to merge this on config.h
            • that’s where automatic patches are being applied, not on the config.h
            • should remain as is, without modifications
          • config.h - actual settings being used
            • that’s where you should make most of your modifications
            • needed to compare changes from the config.def.h, especially when patching
        • autostart apps
          • rule to always check if window class is _firefox… if it is, it’s going to put it on tag 1 in non-floating mode on the first monitor
          • we add this line to .xinitrc create window with specific class & application
        • scratchpad! - src
        • great config from distrotube
        • enable patch writing 1 - src
        • sudo pacman -S libxinerama libxft ORRRRRR-> libx11
      • dwl - dwm for wayland
      • awesome - dwm fork with everything by default
      • qtile - more configurable dwm
      • i3 - (manual)
      • sway - i3 but for wayland
    • File manager - thunar
      • useful utility for drag file
      • thunar - xfce one - works well with WMs - 54mb ram
        • well customizable
        • more settings than nautilus but no more than dolphin
        • less fast to boot than pcmanfm but as faste after first window
        • great defaults overall
        • written in C and GTK+
      • Pcmanfm - 35mb ram - fastest to boot
        • written in C and GTK+
        • cons
          • bad default
            • style
            • options
            • menu positions
      • spacefn - pcmanfm but with split view & more options -gtk3…
      • nemo - cinnamon one
        • plugins
        • cons
          • no split
          • no shortcuts?
      • doplhin - really customizable + works best w plasma
      • nautilus - not many options (gnome based…)
      • krusader - 2 split panel
    • Text editor - vscodium & nvim
    • Browser - mainly brave, firefox=privacy
      • Main src
      • Forks are less mantained than original
        • libre wolf
      • Real options
        • chromium - lol
        • brave - less privacy more functionality
        • hardened firefox - best privacy/functionality
      • bad ones
        • unmaintained
          • iceCat - could be n1…
    • Terminal - st
      • time tree / test
        • Alacritty
        • ST
      • Alacritty
        • mainly for wayland but also x11
        • multi-platform
        • GPU acelerated
        • written in rust
        • cons
          • no tab support
          • no ligatures
      • kitty
        • tab supp & ligatures
        • gpu accelerated
        • cons - no multi-platform
      • st - great if you really go deep into customization
        • opens faster than alacritty
      • xterm
      • criterias
        • GPU accellerated
    • status bar - dwmblocks
      • dwmblocks - clickable stuff
      • add patch to do clickable stuff - src
      • slstatus - suckless, not clickable
      • status bar - clickable block - src - more
  • Smaller
    • Customize startup settings

      • nano ~/.profile - these run after log-in
      • $PATH - path that lin check to run commands
      • if have bashrc, run it

      .bashrc && . ~/.bashrc

      export PATH=$PATH:&HOME/.scripts export EDITOR=“vim” export TERMINAL=“st” export BROWSER=“firefox”

    • selector - dmenu - src - wmee - patches

      • rofi
      • crazy stuff you might do
        • emoji
        • clipboard
        • apps
        • files/scripts
        • shutdown
        • shutdown xorg?
        • xrandr
    • shell - ZSH

      • Bash - standard boring but needed
      • ZSH - fancier configurable bash
        • syntax highlight
        • better autocomplete
      • Fish - pre-configured modern ZSH
        • even better autocomplete
        • cons
          • non posix compliant
            • different syntaxt to do scripting
              • stuff like loops, ifs, etc
    • additional downloads

      • git
      • neofetch
      • just use top, lol
        • htop
        • btop
        • gtop
      • vim
      • nano
      • cmatrix
      • man (core repo)
      • Helpers for AUR - needs base-devel & git
        • sudo pacman -S --needed base-devel git
        • paru

          • rustup for cargo pkg
        • yay - mantainer ditched it and created paru
      • Paru needed
        • vscodium - paru -S vscodium-bin
          • if you get permissions errors is because it’s setup by default to use /run/user/0, the problem is that this directory changes based on who log-in first in the TTY
        • brave bin
    • tiny feats

      • notifications - dunst -(useful for volume) or notify OSD
      • screenshots -
        • spectacle - bloated because of KDE but can edit
          • doesn’t have text with background
          • just worst than flameshot
          • bloated - 500mbs
        • flameshot - many feats but bloated & bad edit
          • can edit img but doesn’t have text with background
          • has too much UI
          • 110mbs…
        • meim - no ui, but has feats & extensible w dmenu
        • sharex through wine is not the best options… bloated
      • Bluetooth - bluez
      • Compositor - picom - blur, transparency, shadow…
        • optimization, etc
        • picom
      • Clipboard manager - clipmenu xclip - simplest, no history - dependency of clipmenu cp - more useful for scripts - default copy “goddamit” note0 “tha’ts a goddamit” CopyQ - tags and bloat
        • clipmenu - great simple dmenu history
          • add this to xinitrc systemctl —user import-enviroment DISPLAY systemctl --user status clipmenud clipmenud systemctl --user enable clipmenud
      • GTK theme - lxappearence
        • widget
          • paru -S
            • tokyonight-gtk-theme-git
            • nordic-theme
            • dracula-gtk-theme
        • Cursor
      • Hotkeys/shortcuts+misc
        • other
          • remap caps
            • simple way to remap it to escape/hyper - src
          • useful for
            • hyper key - usually a unique combination
              • Ctrl + Alt + Shift + Super
            • meta keys - alt gr
          • espanso - text expander - github
            • installation
              • AUR pkgs
                • pensonally installed espanso-x11 but it was really slow to compile…
            • to set up stuff go to espanso folder (probably in .config), then match folder and add another yaml or use base.yml - src
        • hotkey to command
          • sxhkd - src (2 years ago) - alt + a echo “hi!!”
          • -xbindkeys - <sxhkd but mantained & most popular
        • commands to hotkey
          • xdotool - keys through comman - 6months ago?
            • e.g. xdotool key ctrl + t
            • delay problem
              • I had to use sleep 0.1, if not it would not work sometimes
              • or even ~ before the shortcut
              • other suggest keyup
              • seems like the application is preceding xodotool so that instead of the output (xodotool command) it takes the input (shortcut setted up to triggher xodotool command)
          • -dotool - same but for wayland & x - github
        • hotkey to hotkey
          • xcape - unmantained - 6 years ago
          • -xmodmap - “useful” to remap keys - mantained
            • cannot set a key to type key combinations (e.g., Ctrl+C), run scripts, or change key behavior based on the currently active application
      • Calendar/Todo stuff - vim with plugins
        • default cal & date commands - src
        • Calcurse - why not using when + notetaking instead?
          • can import google calendar stuff
        • when - use cal&date first todoist terminal based
    • RSS reader - newsboat

    • e-mail client -

      • neomutt - terminal, configurable
      • Thunderbird