codefastdieyoung
  • about
  • links
    • github
    • twitter
  • .config
    • .emacs.d
    • Linux setup
    • Windows setup
    • Emacs usage notes
    • :emacs: posts
    • :configuration: posts
codefastdieyoung
  • about
  • links
    •  
    • github
    • twitter
  • .config
    •  
    • .emacs.d
    • Linux setup
    • Windows setup
    • Emacs usage notes
    • :emacs: posts
    • :configuration: posts

Linux system setup

Home » Knowledge base » Linux system setup

These are notes taken be me through the years of using (mostly) Arch Linux distribution as well as (less) Windows OS.
This can be considered as a ‘loose provisioning guidelines’ and it acts for me as a goto-source-of-copy-paste when [re]configuring [new] system (including containerized).
It’s worth mentioning that these are more like ‘init’-scripts rather than ‘maintenance’-scripts which I publish in a separate section maintenance guideliness (todo – link).

1. arch install

https://wiki.archlinux.org/title/Installation_guide

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# comes from pacman -S terminus-font
setfont ter-132b
 
 
fdisk /dev/the_disk_to_be_partitioned
mkfs.ext4 /dev/root_partition
 
mount /dev/root_partition /mnt
mount --mkdir /dev/efi_system_partition /mnt/boot/efi
 
pacstrap -K /mnt base linux linux-firmware grub efibootmgr os-prober ntfs3g systemd man-db man-pages git\
         vim stow openssh fish networkmanager fwupd btop tlp gnupg pass
 
mount --mkdir /dev/win_system_partition /mnt/mnt/win
 
genfstab -U /mnt >> /mnt/etc/fstab
 
arch-chroot /mnt
 
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
 
#Edit /etc/locale.gen and uncomment en_US.UTF-8 UTF-8 and other needed UTF-8 locales. Generate the locales by running:
locale-gen
 
/etc/locale.conf
LANG=en_US.UTF-8
 
/etc/hostname
yourhostname
 
mkinitcpio -P
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
#then edit /etc/default/grub and add/uncomment:
GRUB_DISABLE_OS_PROBER=false
 
grub-mkconfig -o /boot/grub/grub.cfg
 
 
# in case if os-prober doesn't work
# https://www.fosstools.net/fix-arch-os-prober-not-detecting-windows-how-to
sudo vim /etc/grub.d/40_custom
menuentry "Windows" --class windows --class os {
    search --fs-uuid --no-floppy --set=root UUID_Here
  chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
 
passwd
 
reboot

2. essential

Essential packages and configurations

2.1. package management

1
2
echo '[multilib]' | sudo tee -a /etc/pacman.conf
echo 'Include = /etc/pacman.d/mirrorlist' | sudo tee -a /etc/pacman.conf

2.1.1. update

1
sudo pacman -Syu

2.1.2. yay for arch aur

1
2
3
4
5
6
sudo pacman -S --noconfirm --needed git base-devel git-delta
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si --noconfirm
cd ..
rm -rf yay-bin

2.1.3. speed up aur compilations

1
2
3
4
5
sudo pacman -S ccache
sudo vim /etc/makepkg.conf
MAKEFLAGS="-j16"
BUILDENV=(!distcc color ccache check !sign)
export PATH="/usr/lib/ccache/bin/:$PATH"

2.1.4. pactree

1
pacin pacman-contrib

2.2. user

1
2
3
4
useradd -m -s /bin/zsh twist
passwd twist
 
sudo usermod -aG wheel twist

2.3. time & date

1
2
# enable time sync
timedatectl set-ntp true

2.4. envvars

1
2
3
4
5
6
# this probably works only if sway is launched through systemd
# ln -s ~/configs/linux/.config/environment.d ~/.config
# what works for both sway/i3 - .profile and when starting sway/startx from greetd zsh session
# this one works too
# ln -s ~/configs/linux/.pam_environment ~
# but currently I'm simply using .profile

2.5. configs

dot-files basically

1
2
3
4
5
6
7
8
9
10
sudo pacman --noconfirm -Sy git stow openssh
 
cd ~
git clone https://github.com/thatwist/configs.git
 
ln -s ~/configs/linux/bin ~/
 
stow --target=$HOME --dir=$HOME/configs/linux stow
 
stow git profile

2.6. terminal

2.6.1. zsh

1
2
3
# zsh+depedencies used within .zshrc
sudo pacman -S --noconfirm zsh exa bat zoxide atuin
stow zsh

2.6.2. alacritty

1
2
pacin alacritty
stow alacritty

2.6.3. oh-my

1
2
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
ln -s ~/configs/linux/.zshrc ~/

2.6.4. vim binds in zsh

1
2
3
4
git clone https://github.com/jeffreytse/zsh-vi-mode \
$ZSH/custom/plugins/zsh-vi-mode
plugins+=(zsh-vi-mode)
or just set -o vi (vi-mode)

2.6.5. kitty

I use alacritty now though..

1
2
3
4
pacin kitty
ln -s ~/configs/linux/.config/kitty ~/.config/
# set TERM env var to xterm-kitty
# see `toe` output

2.6.6. (on fedora/gnome/ubuntu?) making kitty default terminal (instead of gnome-terminal)

1
2
# from here https://unix.stackexchange.com/a/642886/495090
sudo install -vDm755 /dev/null /usr/local/bin/gnome-terminal
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
 
[ x"$1" = x"--" ] || { exec /usr/bin/gnome-terminal "$@"; exit 0; }
 
shift
 
TITLE="$(basename "$1")"
if [ -n "$TITLE" ]; then
  /usr/bin/kitty -T "$TITLE" "$@"
else
  /usr/bin/kitty             "$@"
fi

2.6.7. zsh plugins

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Set ZSH_THEME=”powerlevel10k/powerlevel10k” in ~/.zshrc

these plugins are already in soft-linked .zshrc

1
2
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

2.6.8. to change shell (chsh)

1
2
3
4
5
6
# fedora
sudo dnf install -y util-linux-user
# arch
sudo pacman -S --noconfirm util-linux
# change shell
chsh -s $(which zsh)

2.6.9. themes (e.g. for gnome-terminal, termite, ..)

1
2
# https://mayccoll.github.io/Gogh/
bash -c  "$(wget -qO- https://git.io/vQgMr)"

2.6.10. fortune, cowsay

1
2
dnfi fortune-mod
dnfi cowsay

2.6.11. icons

1
yain icons-in-terminal

2.6.12. fonts

1
2
# for better tty console fonts
pacin terminus-font

2.7. tools

Various important and useful packages – most of them are rather mandatory than optional.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
pacin just stow atuin lsof btop htop glances jq ncdu wget tmux sshd openssh lvm2 git-delta
# build-essentials arch
pacin build-devel
# comression
pacin zstd
# used in ranger
pacin unzip
# unrar
pacin unrar
# math, used in some i3blocks
pacin bc
# plocate faster than mlocate
pacin plocate
sudo updatedb
# like cat but better
pacin bat
# tmux
stow tmux
# crontab
pacin cronie
# scheduler (not using right now)
pacin at
#pacin s-nail

2.7.1. build-essentials fedora

1
sudo dnf install cmake make automake autoconf gettext-devel texinfo gnutls-devel libXpm-devel libjpeg-turbo-devel giflib-devel gcc gcc-c++ kernel-devel systemd-devel libevdev libevdev-devel yaml-cpp yaml-cpp-devel intltool

2.8. network

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pacin networkmanager
# autoconnect wifi
nmcli device set wlp2s0 autoconnect yes
# selinux labels to use required certs for vpn
restorecon -Rf ~/.cert
# applet
pacin network-manager-applet
# vpn
# first, copy cert files into ~/.cert (cacert.pem, yostapchuk.pem, yostapchuk.key)
# install openvpn plugin
pacin networkmanager-openvpn
# import it
sudo nmcli connection import type openvpn file ~/vpn/romex.ovpn
# inetutils (hostname command)
pacin inetutils
# graph ping
pacin gping
# even better than ping
pacin mtr
# speedtest
pacin speedtest-cli

2.9. emacs

2.9.1. install

At the moment I’m simply using yay emacs-git package

1
yain emacs-git
  • from git source
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #git clone https://github.com/emacs-mirror/emacs
    #git clone --depth 1 -b emacs-27  https://git.savannah.gnu.org/git/emacs.git
    cd ~/emacs
    ./autogen.sh
    ./configure --with-mailutils --with-xwidgets --with-native-compilation
    make
    # check it's working
    src/emacs --version
    sudo make install
  • native-comp and other dependencies
    1
    2
    3
    4
    # native
    yain libgccjit
    # json
    pacin jansson
  • from source zip
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # Dependencies for development
    sudo dnf group install "Development Tools"
    # Dependencies specific to emacs
    sudo dnf builddep emacs
     
    # Download the latest stable release from emacs website
    wget http://mirrors.kernel.org/gnu/emacs/emacs-26.3.tar.xz
    wget http://mirrors.kernel.org/gnu/emacs/emacs-26.3.tar.xz.sig
     
    # Verify the tar.xz file
    gpg --verify emacs-26.3.tar.xz.sig emacs-26.3.tar.xz
     
    # Once that has been taken care of, extract the tar.xz archive.
    tar -xvf emacs-26.3.tar.xz
     
    # Go into the newly made folder
    cd emacs-26.3
     
    # Configure the source
    ./configure
     
    # Compile the source
    make
     
    # Check the binary to see that it runs smoothly
    src/emacs -Q
     
    # Install the binary
    sudo make install
  • fedora

    sudo dnf install emacs

  • from rpm
    1. download through rpmfinder – emacs, emacs-common, emacs-filesystem
    2. remove –noautoremove above
    3. install using dnf install <file>
  • on osx
    1
    2
    3
    4
    brew install emacs --HEAD --with-cocoa --with-gnutls --with-librsvg --with-imagemagick@6 --with-mailutils
    brew linkapps emacs
    rm /Applications/Emacs.app
    osascript -e 'tell application "Finder" to make alias file to POSIX file "/usr/local/opt/emacs/Emacs.app" at POSIX file "/Applications"'

2.9.2. config

1
git clone https://github.com/thatwist/.emacs.d.git ~/.config/emacs

Then you have to open .config/emacs/config.org and M-x org-babel-tangle

  • chemacs (been experimenting with) – https://github.com/plexus/chemacs2

2.9.3. start as daemon

see configs/bin/emacsclient-smart script

2.9.4. fonts

1
2
3
M-x all-the-icons-install-fonts
M-x nerd-icons-install-fonts
on windows - this will ask to download only, then install it manually

2.9.5. mu4e & mail

1
2
3
4
5
6
7
8
9
pacin gmime3 xapian-core python-html2text xdg-utils guile2.0
git clone git://github.com/djcb/mu.git
cd mu
./autogen.sh && make
sudo make install
# man mu, man mu-easy
 
yain mbsync
ln -s ~/configs/linux/.mbsyncrc ~

2.9.6. shell colors

1
2
# see emacs config
ln -s ~/configs/linux/.terminfo ~/.terminfo

2.9.7. various desktop file shortcuts

1
sudo ln -s ~/configs/linux/usr/local/share/applications/* /usr/local/share/applications/

2.10. vim

I use emacs 95% of time but still may use vim in some quick sys-files edits

1
2
3
4
5
6
7
stow vim nvim
# theme
yain vim-gruvbox-git
# neovim
yain neovim neovim-symlinks nvimpager neovide
# vim plugins
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

3. system

Lower-level optional tweaks and packages

3.1. boot

I’m currently using refind for dual boot of windows+arch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pacin refind
refind-install
# https://github.com/EvanPurkhiser/rEFInd-minimal
# for, but doesn't make blinking at load
# https://github.com/anthon38/refind-black
 
# tools
# uefi shell
pacin edk2-shell
sudo cp /usr/share/edk2-shell/x64/Shell.efi /efi/shellx64.efi
# memtest
yain memtest86-efi
sudo cp /usr/share/memtest86-efi/bootx64.efi /efi/EFI/tools/memtest86.efi
# after fwupd installed
sudo cp /usr/lib/fwupd/efi/fwupdx64.efi /efi/EFI/tools/
# gdisk
# download https://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.4/gdisk-binaries/gdisk-efi-1.0.4.zip/download
sudo cp gdisk_x64.efi /efi/EFI/tools
# todo - configure manual refind boot conf entries for each tool

3.2. firmware

1
2
3
4
5
6
7
pacin fwupd
# this one is not required on arch for sure
# sudo service fwupd start
# display devices
fwupdmgr get-devices
fwupdmgr get-updates
fwupdmgr update

3.3. kernel

1
2
3
4
# been experimenting with
pacin linux-zen
# edit ../EFI/refind/refind.conf
# vmlinuz-zen, initramfs.., fallback

3.4. performance

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# monitoring & info
pacin btop htop s-tui dmidecode
# sysinfo
pacin inxi
# power
pacin powertop
pacin upower
# cpu
pacin i7z i7z-mon cpupower cpupower-gui
# this or throttled - conflicts
pacin thermald
# laptop
pacin tlp tlp-rdw tlpui
# for thinkpads
pacin tpacpi-bat acpi_call
yain tlpui-git
# some more
pacin acpid

disk&network tools

1
2
3
pacin smartmontools ethtool
# netstat
pacin net-tools

monitor traffic

1
2
3
4
5
6
7
8
9
10
11
# requires running daemon
pacin vnstat
sc-enable vnstat
# by hosts
pacin iftop
# by processes
pacin nethogs
sudo nethogs
# by devices, with live graph
pacin nload
sudo nload wlp2s0

sleep&hibernate

1
2
# uncomment /etc/systemd/logind.conf for suspend on lidclose etc
# and then sc-kill -s HUP systemd-logind

disable system beep permanently (was needed on fedora)

1
rmmod pcspkr ; echo "blacklist pcspkr" >>/etc/modprobe.d/blacklist.conf

3.4.1. install on fedora

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install http://repo.linrunner.de/fedora/tlp/repos/releases/tlp-release.fc$(rpm -E %fedora).noarch.rpm
sudo dnf install akmod-tp_smapi akmod-acpi_call kernel-devel
sudo dnf install tlp tlp-rdw
sudo dnf install acpid
sudo dnf install apmd
# conflicts with throttled
# sudo dnf install thermald
sudo dnf install stress
sudo dnf install s-tui
# install lenovo_fix cpu throttle for thinkpad
# https://github.com/erpalma/throttled
sudo dnf copr enable adrake/throttled
sudo dnf install -y throttled

i7z

1
2
3
sudo dnf install ncurses-devel
#https://github.com/afontenot/i7z
#sudo dnf install qt-devel

4. crypt

These are notes on how I setup and manage sensitive information and configs:

  • passwords/credentials
  • private-keys (ssh, gpg, etc)
  • secure storage
1
2
pacin gnupg
chmod 700 ~/.gnupg

4.1. crypt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# these has to be copied in secure way
# - .cert (vpn certs)
# - .gnupg
# - .ssh
# - .authinfo (not used anymore)
# - .gitconfig (not, as far as ssh used and/or auth-info-pass + gh-auth populated in emacs)
# - .aws (creds get from pass)
 
# I used to have symlinks but switched to simply keeping a separate copies of each of these folders from rclone:crypt storage
rclone copy crypt:<files> ~/<....>
# rclone copy crypt: ~/Documents/crypt
# ln -s ~/Documents/crypt/.aws ~/.aws
# ln -s ~/Documents/crypt/.ssh ~/.ssh
# ln -s ~/Documents/crypt/.gnupg ~/.gnupg
 
chmod 600 ~/.ssh/id_rsa

4.2. test if gpg works

1
2
3
4
5
6
7
8
9
# list pub keys
gpg -k
# list priv keys
gpg -K
# encrypt
echo "testsdf" > test.txt
gpg -r twist522@gmail.com -e test.txt
# decrypt
gpg -d test.txt.gpg

4.3. pass

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pacin pass
pass init <gpg-key>
pass git init
pass git remote add origin git@github.com:thatwist/pass-store.git
 
pacin browserpass
pacin browserpass-chromium
 
# experimental
pacin pass-git-helper
ln -s ~/configs/linux/.config/pass-git-helper/ ~/.config
 
yain pass-update pass-import pass-extension-tail
 
pip install keyring-pass
 
yain passrofi-git
 
# pinentry
# https://github.com/ritze/pinentry-dmenu
yain pinentry-rofi
 
# otp
pacin pass-otp
pacin zbar
# to scan qr code:
# zbarimg ~/Documents/screenshots/2021-10-26-1635267895_screenshot_502x509.jpg
pass otp append <pass-name>

4.4. access win bitlocked disk

1
2
yain dislocker-noruby
linux-notes:how to mount bitlocked windows disk

5. desktop

I’m currently using xorg+i3+i3blocks

5.1. i3

1
2
3
4
5
6
7
8
9
pacin i3-wm dmenu xbacklight feh lm_sensors rofi scrot
ln -s ~/configs/linux/.config/i3 ~/.config/
# ln -s ~/configs/linux/.config/i3status ~/.config/
ln -s ~/configs/linux/.config/rofi ~/.config/
ln -s ~/configs/linux/.xinitrc ~
ln -s ~/configs/linux/.xprofile ~
ln -s ~/configs/linux/.xsettingsd ~
# required by i3-match-windows.sh
pacin xorg-xwininfo

i3 rename window (in-progess)

1
pacin xdotool wmctrl

5.2. i3blocks

1
2
3
4
5
6
7
8
9
10
11
pacin i3blocks
# dependencies for some blocks modules
pacin acpi
mkdir ~/.config/i3blocks
ln -s ~/configs/linux/.config/i3blocks/config ~/.config/i3blocks/config
git clone https://github.com/thatwist/i3blocks-contrib ~/.config/i3blocks/i3blocks-contrib
git clone https://github.com/Anachron/i3blocks ~/.config/i3blocks/i3blocks-anachron
cd ~/.config/i3blocks/i3blocks-contrib
git checkout origin/mine -b mine
cd ~/.config/i3blocks/i3blocks-contrib/cpu_usage2
make

5.3. i3ipc

Used by Alt-tab script in ~/bin/

1
pacin python-i3ipc

5.4. clipboard

1
pacin xclip xsel

5.5. X key bindings

1
2
3
4
# some old xbind stuff here
# ln -s ~/configs/linux/.xprofile ~/.xprofile
# some more scaling terminal stuff and old urxvt configs here
# ln -s ~/configs/linux/.Xresources ~/.Xresources

5.6. wayland & sway

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
swayfx # sway + additional visual fx
seatd # dm alternative
wlroots # compositor
slurp # select a region of screen
grim # make a screenshot
swayshot # scripts and bindings for slurp+grim
wayshot # grim alternative written in rust
wf-recorder # screen recorder
wl-clipboard
swaybg
swayidle
swaylock
swayimg # img editor
waybar
foot # terminal
wmenu # dmenu
wofi # rofi
mako # dunst
wdisplays
xorg-xwayland # x compatibility

sudo run x apps under wayland

1
2
3
# sometimes it is required to run as sudo
pacin xhost
xhost local:root

manage xresources on wayland&sway

1
2
3
pacin xorg-xrdb
# then xrdb -load
# but what is enough is just to put everything into .Xdefaults

dmenu (but I’m using rofi now)

1
2
pacin bemenu
yain j4-dmenu-desktop

cursors (wayland)

1
2
3
# pacin xcursor-simpleandsoft
# TODO - requires some more configuration probably
# seat seat0 xcursor_theme my_cursor_theme my_cursor_size

5.7. hyprland

1
2
3
4
5
6
7
8
hyprland
hyprcursor
hypridle
hyprlock
hyprshade
pyprland
hyprpaper # wallpapers
xdg-desktop-portal-hyprland

5.8. scaling

1
2
3
4
# scaling stuff here, this will be initialized by agreety, but not by gtkgreeter (zsh,etc init order - should invistigate)
ln -s ~/configs/linux/.profile ~/.profile
# Xfont scaling - used by wayland as well
ln -s ~/configs/linux/.Xdefaults ~/.Xdefaults

5.9. fonts & icons

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pacin ttf-ibm-plex ttf-input ttf-victor-mono-nerd
 
ln -s ~/configs/linux/.config/fontconfig ~/.config
   
yain ttf-font-awesome 
yain awesome-terminal-fonts
 
# todo - below fonts mess up everything
# ln -s ~/configs/linux/.fonts ~/.fonts
# adobe-source-code-pro-fonts (in conflict with google fonts)
# unifont-fonts (bdg-unifont on arch)
# fontawesome-fonts (awesome-terminal-fonts on arch, ttf-font-awesome)
# ttf-dejavu
# ttf-roboto
# ttf-ibm-plex
# aur:ttf-google-fonts-git
 
# what is this font for?
git clone https://github.com/stark/siji && cd siji
./install.sh
 
# font cache reload
fc-cache -fv
 
# arial/timesnewroman/microsoft fonts
pacin ttf-liberation
 
# some symbolic/emoji fonts
yain ttf-symbola
 
# for emacs all-the-icons
yain ttf-all-the-icons
 
# nerd fonts mess up icons - do not install:
+yay nerd-fonts-complete+

5.9.1. install ibm plex from sources

1
2
3
4
cd /usr/share/fonts/truetype
sudo mkdir plex
sudo cp /from/wherever/the-flex-font.ttf plex/.
sudo fc-cache -fv

5.9.2. manage fonts

1
2
3
4
5
6
7
8
# before - `conda deactive`
yain font-manager
# this one is nice
pacin fontforge
# will produce png
fontimage /home/twist/.fonts/IBMPlexMono-SemiBoldItalic.ttf
# X
pacin xorg-xfontsel xorg-xlsfonts xorg-xgd

5.9.3. mono fonts

input

https://rubjo.github.io/victor-mono/

1
2
3
pacin ttf-fira-mono ttf-fira-code ttf-hack
# includes consolas
yain ttf-vista-fonts

5.10. tray icons

1
2
3
4
5
yain hardcode-tray
python -m pip install PyGObject
pacin papirus-icon-theme
# run on desktop start
sudo -E hardcode-tray --conversion-tool RSVGConvert --size 22 --theme Papirus --apply

5.11. notifications

5.11.1. dunst

1
2
3
4
5
6
7
8
9
10
11
mkdir ~/.config/dunst
sudo dnf install dunst
sudo dnf install notification-daemon
# TODO - copy your dunst conf
systemctl restart --user dunst.service
ln -s ~/configs/linux/.config/dunst ~/.config/
 
# journalctl errors:
yay -S journalctl-desktop-notification-git
# it's not for i3
# cp /usr/share/applications/journalctl-desktop-notification.desktop ~/.config/autostart/

5.11.2. mako (wayland)

1
2
pacin mako
ln -s ~/configs/linux/.config/mako ~/.config

5.11.3. battery_low

1
2
3
4
5
# make sure bin folder is linked into home
sudo ln -s /home/twist/configs/linux/usr/share/icons/hicolor/scalable/status/notification-battery-low.svg /usr/share/icons/hicolor/scalable/status/notification-battery-low.svg
# this is to provide sound
# ln -s /home/twist/configs/linux/.config/battery_low /home/twist/.config/
(sudo crontab -l 2>/dev/null; echo "*/5 * * * * /home/twist/bin/battery_low") | sudo crontab -
  • swaynag-battery

    yain swaynag-battery
    ln -s ~/configs/linux/.config/systemd ~/.config

5.11.4. do not disturb on meetings

1
(sudo crontab -l 2>/dev/null; echo "* * * * * /home/twist/bin/auto_do_not_disturb.sh") | sudo crontab -

5.11.5. sounds

https://bigsoundbank.com/

5.12. wallpaper

1
2
3
# ln -s ~/configs/linux/.fehbg ~/
# sudo ln -s /home/twist/configs/linux/usr/local/share/backgrounds /usr/local/share/
pacin nitrogen

5.13. minimalist greeter (instead of display manager) for sway

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# add sway-start script before this one (see above)
yain greetd
# trying gtk greeter first
yain greetd-gtkgreet
# wayland+sway
yain greetd-wlgreet
# greetd configs
sudo ln -s ~/configs/linux/etc/greetd/sway-conf /etc/greetd/sway-conf
sudo chown -h greeter:greeter /etc/greetd/sway-conf
# add greeter to video group
sudo usermod -a -G video greeter
# in /etc/greetd/config.toml
# command = "agreety --cmd sway"
# or
# command = "sway --my-next-gpu-wont-be-nvidia --config /etc/greetd/sway-config"
    
# no sway
pacin cage
command = "cage gtkgreet"

5.14. rofi

1
2
3
4
5
6
pacin rofi
# use rofi for passmenu etc
ln -s /usr/bin/rofi /usr/bin/dmenu
 
# clipboard
yain rofi-greenclip

5.15. screen/idle lock, suspend

1
2
3
4
5
6
7
8
9
10
11
12
# yain i3lock-fancy-rapid-git
# yain i3lock-fancy-multimonitor
yain i3lock-color
yain xidlehook
# pacin xorg-xautolock
    
# then ln -s .config/systemd should place the service
# this one is for lock after idle
# lightdm doesn't work with logind idle events (eh)
systemctl --user enable --now autolock.service
# this one is for lock right after suspend
sudo vim /etc/systemd/system/suspend@.service
[Unit] Description=Lock the screen Before=sleep.target [Service] User=%I Type=forking Environment=DISPLAY=:0 ExecStart=/home/twist/bin/lock.sh [Install] WantedBy=sleep.target

if not lightdm – set IdleAction=lock in sudo vim /etc/systemd/logind.conf

lightdm lid close handlers – set HandleLidSwitch=suspend in /etc/systemd/logind.conf

betterlockscreen

1
# betterlockscreen -u ~/wallpaper/004.png

5.15.1. i3lock

I’m not using this anymore

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
BLANK='#00000000'
CLEAR='#ffffff22'
DEFAULT='#6c71c4aa'
TEXT='#6c71c4ee'
WRONG='#dc322fbb'
VERIFYING='#d33682bb'
 
i3lock \
--radius 80 \
--ring-width 5 \
--insidever-color=$CLEAR     \
--ringver-color=$VERIFYING   \
\
--insidewrong-color=$CLEAR   \
--ringwrong-color=$WRONG     \
\
--inside-color=$BLANK        \
--ring-color=$DEFAULT        \
--line-color=$BLANK          \
--separator-color=$DEFAULT   \
\
--verif-color=$TEXT          \
--wrong-color=$TEXT          \
--time-color=$TEXT           \
--date-color=$TEXT           \
--layout-color=$TEXT         \
--keyhl-color=$WRONG         \
--bshl-color=$WRONG          \
\
--screen 1                   \
--blur 5                     \
--clock                      \
--indicator                  \
--time-str="%H:%M:%S"        \
--date-str="%A, %m %Y"       \
--keylayout 1                \

5.16. screensaver (stupid)

pacin xscreensaver

5.17. composite manager

1
2
3
4
5
6
# this on is old probably
# pacin xcompmgr
pacin picom
# ui for configuring
yain compton-conf
ln -s ~/configs/linux/.config/picom.conf ~/.config/

5.18. prettifying and settings tools

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
stow gtk
pacin variety nitrogen gtk-chtheme lxappearance
yain qtconfig-qt4
# managed by lxappearance or by yourself
ln -s configs/linux/.gtkrc-2.0 .
~/.config/gtk-3.0/settings.ini
# but gsettings take higher priority
pacin xsettingsd
yain gruvbox-material-icon-theme-git
yain gruvbox-material-gtk-theme-git
yain volantes-cursors
# gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"
gsettings set org.gnome.desktop.interface cursor-theme "volantes_cursors"
gsettings set org.gnome.desktop.interface gtk-theme "Gruvbox-Material-Dark"
gsettings set org.gnome.desktop.wm.preferences theme "Gruvbox-Material-Dark"
gsettings set org.gnome.desktop.interface icon-theme "Gruvbox-Material-Dark"
 
    
yain qt5ct qt5-styleplugins
# c'mon lets use some reasonable ui to manage this configs
pacin xfce4-settings
 
# worth looking into - manjaro i3 configs
https://github.com/Airblader/dotfiles-manjaro
# option to show hidden files in gtk file dialog is in
ln -s ~/configs/linux/.config/gtk-2.0 ~/.config

5.19. cursors

1
2
3
4
5
6
7
# to apply changed theme of cursors
ln -s ~/configs/linux/.config/gtk-3.0 ~/.config
# preview and change cursors
git clone https://github.com/drizt/xcursor-viewer
cmake .
make
sudo make install

5.20. display manager

1
2
3
- lightdm
  - pacin lightdm lightdm-webkit2-greeter
  - sc-enable lightdm

5.21. conky

1
2
3
4
5
pacin conky
# pacin  conky-manager
ln -s ~/configs/linux/.config/conky ~/.config
# remote server monitors
https://github.com/fouad-j/monitoring-server-conky

5.22. screenfetch -t

1
pacin screenfetch

6. peripheral

6.1. keyboard & touch

6.1.1. on x11

1
2
3
4
5
6
7
8
# used by i3blocks
# yain xkb-switch
yain xkb-switch-i3
# tap to click, inversed scroll, keyboard, etc
sudo ln -s /home/twist/configs/linux/etc/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf
# not sure why I needed this one
# sudo ln -s /home/twist/configs/linux/etc/X11/xorg.conf.d/20-intel-brightness.conf /etc/X11/xorg.conf.d/20-intel-brightness.conf
sudo ln -s /home/twist/configs/linux/etc/X11/xorg.conf.d/00-keyboard.conf /etc/X11/xorg.conf.d/

6.1.2. gestures

1
2
3
4
5
yain libinput-gestures
sudo gpasswd -a $USER input
stow libinput-gestures
libinput-gestures-setup stop service autostart start
# restart system

6.1.3. on wayland-sway

configure in sway config

6.1.4. interceptions tools, caps2esc, space2meta, return2ctrl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cd ~
git clone https://gitlab.com/interception/linux/tools
git clone https://gitlab.com/interception/linux/plugins/caps2esc
git clone https://gitlab.com/interception/linux/plugins/space2meta
# sudo make install
# on arch - from aur
yain interception-tools interception-space2meta interception-caps2esc
# make sure to install yaml-cpp-0.6.2, 0.6.3 doesn't work with udevmon (on fedora)
# on arch works with yaml-cpp-0.6.3-2
# aur
# return2ctrl
# TODO - put into my github
git clone https://github.com/thatwist/interception-return2ctrl && \
   cd interception-return2ctrl && rm -rf build && mkdir build && cd build && cmake .. && make && sudo make install
# add service - this one is redundant, udevmon is already there on arch
# sudo cp /home/twist/configs/linux/usr/lib/systemd/system/udevmon.service /usr/lib/systemd/system/
sudo cp /home/twist/configs/linux/etc/udevmon.yaml /etc/
sudo systemctl enable --now udevmon

6.1.5. screen capture on sway

1
2
yain swayshot wf-recorder-git
pacin grim slurp wl-clipboard wf-recorder

6.1.6. screenkey with slop

1
2
3
dnfi screenkey pygtk2 slop
# usage:
screenkey -p fixed -g $(slop -n -f '%g')

6.2. camera

1
2
3
4
5
6
7
8
9
10
# disable IR camera on Carbon
# find camera usb port and cd into that dir
lsusb
cd /sys/bus/usb/devices/1-5
cat id{Vendor,Product}
# disable it
echo 0 > bConfigurationValue
 
# basic app
pacin xawtv

6.3. fingerprint

thinkpad x1 carbon gen6

1
2
3
4
yain python-validity
pacin open-fprintd
fprintd-enroll
sudo validity-sensors-firmware
1
2
3
4
# factory reset:
sudo systemctl stop python3-validity
sudo validity-sensors-firmware
sudo python3 /usr/share/python-validity/playground/factory-reset.py

ok, now setup pam:
/etc/pam.d/system-auth

auth sufficient pam_fprintd.so auth [success=2 default=ignore] pam_unix.so try_first_pass nullok -auth [success=1 default=ignore] pam_systemd_home.so

/etc/pam.d/system-local-login

auth sufficient pam_fprintd.so auth include system-login
1
2
3
# this is to restrict finger enroll only to root
# need to enable polkit and have gui agent (maybe not required)
pacin lxqt-policykit

6.4. thunderbolt

1
2
3
pacin bolt
# to authorize device
boltctl authorize <uuid>

7. display & graphics

7.1. intel graphics

1
2
3
mesa
# benchmarks and glx- utils
mesa-demos

7.2. nvidia gpu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# reload kernel modules - needed after nvidia update?
# sudo mkinitcpio -P
pacin nvidia nvidia-settings nvidia-prime
# opengl
pacin nvidia-utils
# opengl multilib (for steam), version 4 (otherwise it uses mesa opengl version3)
pacin lib32-nvidia-utils
# benchmarks
yain unigine-heaven unigine-superposition
# manual load
sudo modprobe nvidia
nvidia-modprobe
# info
lspci -vnnn | grep 'VGA'
lspci -k | grep -A 2 -E "(VGA|3D)"
nvidia-smi
sudo lsof /dev/nvidia*
xrandr --listproviders
# card in use
glxinfo|egrep "OpenGL vendor|OpenGL renderer"
glxheads

7.3. autoxrandr

1
2
3
4
5
6
pacin autorandr
xrandr --output HDMI1 --auto --left-of eDP1
# ready config
# ln -s ~/configs/linux/.config/autorandr/ ~/.config/
# to generate
autorandr --save external

7.4. backlight & brightness

1
2
3
4
# adjust screen backlight
pacin light
# allow to run without sudo (this may break after package update, by default light should work as is becuase it install udev rules but it didn't)
sudo chmod +s /usr/bin/light

7.5. redshift

1
2
# adjust screen brightness and warmness
pacin redshift

at /etc/geoclue

url=https://location.services.mozilla.com/v1/geolocate?key=geoclue [redshift] allowed=true system=false users=

check:
/usr/lib/geoclue-2.0/demos/agent
/usr/lib/geoclue-2.0/demos/where-am-i

service

systemctl –user enable redshift.service systemctl –user start redshift.service systemctl –user restart redshift.service systemctl –user status redshift.service

7.6. manage displays on wayland

1
yain wdisplays

7.7. screen sharing on wayland

1
2
3
4
5
6
7
8
yain xdg_desktop_portal_wlr
# then you need XDG_CURRENT_DESKTOP=sway in .profile and MOZ_ENABLE_WAYLAND=1
yain pipewire
# in chromium, enable webrtc setting for pipewire:
chrome://flags/#enable-webrtc-pipewire-capturer
# check if pipewire running ok
systemctl --user status pipewire.socket
systemctl --user status pipewire.service

8. disks & files

8.1. disks

1
2
3
4
5
6
7
8
9
10
# daemon for management of disks and media using dbus
pacin udisks2
# automount usb media, there is exec in swayconf to start it in tray
pacin udiskie
# trash bin
trash-cli
# backup
yain timeshift
# disk free
pacin duf

8.2. nemo

1
pacin nemo

8.3. ranger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pacin ranger
# if from scratch
# ranger --copy-config=rc,rifle
# own config
ln -s ~/configs/linux/.config/ranger ~/.config/
# add image preview in kitty support
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
# to fix yank in X, dirty fix to remove wayland clipboard
pacrem wl-clipboard
# highlights
pacin python-prompt_toolkit
pacin python-pygments
pacin ffmpegthumbnailer
sudo python -m pip install xlsx2csv
# yain perl-xls2csv # below works
pacin catdoc
yain pandoc-bin
 
# for image preview
pacin w3m

8.4. dirvish

1
2
3
4
pacin exa
pacin ffmpegthumbnailer
yain epub-thumbnailer-git
yain mediainfo

8.5. dropbox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# dnf: dropbox - rpm nautilius
yain dropbox dropbox-cli
# required by install daemon to verify signatures
pacin python3-pgp
# install daemon
dropbox-cli start -i
# prevent auto-updates
rm -rf ~/.dropbox-dist
install -dm0 ~/.dropbox-dist
# autostart
# (on boot)
systemctl edit dropbox@username
# (on login) DISPLAY should be already imported but it's not
systemctl --user edit dropbox
# config [Service] Environment=DISPLAY=:0 # empty override for ExecStart, otherwise systemc compains ExecStart=

8.6. rclone

1
2
pacin rclone
ln -s ~/configs/linux/.config/rclone ~/.config

8.7. office

1
pacin libreoffice-fresh libreoffice-fresh-uk

8.8. gdrive

1
2
# not using it
# go get -u github.com/odeke-em/drive/cmd/drive

8.8.1. google-drive-ocamlfuse

1
yain google-drive-ocamlfuse-opam
  • automount (fstab)

    /usr/bin/gdfuse +x

    1
    2
    3
    4
    #!/bin/bash
     
    su $USERNAME -l -c "google-drive-ocamlfuse -label $1 $*"
    exit 0

    etc/fstab

    gdfuse#default /home/$USERNAME/gdrive fuse uid=1000,gid=1000,allow_other,user,_netdev 0 0
  • automount (systemd)
    1
    sudo vi /etc/systemd/system/google-drive.service  
    [Unit] Description=FUSE filesystem over Google Drive After=network.target [Service] User=twist Group=twist ExecStart=/home/twist/.opam/default/bin/google-drive-ocamlfuse -label default /home/twist/mnt/drive ExecStop=fusermount -u /home/twist/mnt/drive Restart=always Type=forking [Install] WantedBy=multi-user.target Alias=google-drive.service
    1
    2
    3
    sudo systemctl daemon-reload
     
    sudo systemctl start google-drive

8.8.2. gvfs and files-mngr integration

1
pacin gvfs-goa gvfs-google gnome-online-accounts

8.8.3. rclone

1
rclone mount drive:/ mnt/drive

8.9. android mount&files

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pacin mtpfs
mtp-detect
pacin android-file-transfer
aft-mtp-mount ~/mnt
# easy
aft-mtp-cli
# below - I'm not sure if needed
sudo su
echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"18d1\", ATTR{idProduct}==\"4ee1\", MODE=\"0666\"" >> /etc/udev/rules.d/51-android.rules
sc-restart udevmon
sc-restart systemd-udevd
# ##
# gnome vfs integration
pacin gvfs-mtp
 
# tramp emacs - adb
pacin android-tools

8.10. pdf & djvu

1
2
3
4
5
6
7
8
9
pacin poppler
 
# pacin zathura zathura-pdf-mupdf djvulibre
 
# this one better
# pacin epdfview
 
# this
pacin xreader

8.11. latex

1
2
3
4
5
6
7
8
9
# required to export org into pdf
pacin texlive-core
 
# this one is for emacs and auctex?
pacin okular
 
# cyrillic
pacin texlive-langcyrillic
pacin texlive-latexextra

8.12. books

1
sudo pacman -S calibre

8.13. mime

1
2
3
4
5
# mime
yain lsdesktopf
yain selectdefaultapplication-git
# mime fix skype open octetstream
sudo rm /usr/share/applications/skypeforlinux-share.desktop

9. multimedia

9.1. audio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pacin alsa-utils
pacin mpd
pacin pavucontrol pulseaudio-alsa pulseaudio-bluetooth
/etc/pulse/default.pa
   # automatically switch to newly-connected devices
   load-module module-switch-on-connect
# EXPERIMENTAL: update for shorter name for i3blocks
pacmd 'update-sink-proplist alsa_output.pci-0000_00_1f.3.analog-stereo device.description="Built-in Audio"'
pacin pulseaudio-equalizer
# used by emacs google-translate
pacin mplayer
# stream music
pacin youtube-dl mpd mpc
ln -s ~/configs/linux/.config/mpd ~/.config/mpd
cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf
# split mp3
pacin mpgtx
 
yain audio-recorder

9.2. issue with mic not detected on startup (only detected after in-out of headphones)

1
2
3
4
# as per https://newbedev.com/microphone-not-working-on-archlinux
# we can manually load module
load-module module-alsa-source device=hw:0,0
# although it had to be loaded by udev setting

9.3. music

1
2
3
4
5
6
7
8
9
10
11
12
13
14
browser-playerctl
pacin playerctl
# yain youtube-music-bin
chrome://flags/#hardware-media-key-handling
 
# to download youtube music
yt-dlp --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist '<YouTube playlist URL>'
 
# yain soundux museeks
 
# vlc skins
# https://www.videolan.org/vlc/skins.php
# but it is better just to configure qt5 interface appearance (see 'desktop/qt5 appearance')
# set vlc interface to 'gtk2' after installing qt5 stuff

9.4. bluetooth

1
pacin bluez bluez-utils blueman

enable bluetooth.service
/etc/bluetooth/main.conf

[Policy] AutoEnable=true

9.4.1. how to connect bluetooth headset?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
power off
# (optionally) sudo btmgmt ssp off
untrust ..
remove ..
power on
agent off
default-agent
agent on
scan on
trust ..
pair ..
pulseaudio -k
[add module switch-on-connect into /etc/pulse/default.pa]
change mic priority in sudo vim /usr/share/pulseaudio/alsa-mixer/paths/analog-input-headset-mic.conf (98)
pulseaudio --start
connect ..

9.5. codecs

1
2
3
sudo dnf install gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-ugly gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free gstreamer1-plugins-bad-freeworld gstreamer1-plugins-bad-free-extras ffmpeg
sudo dnf group upgrade --with-optional Multimedia
sudo dnf install vlc

9.6. video

1
2
3
4
5
6
# video convert
sudo dnf install HandBrake-gui
# media player
pacin mpv
# and better ui for mpv
yain mpv-uosc-git

9.7. images

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# pacin sxiv
# # gallery? didn't work for me
# pacin nomacs
# # manage photos
# pacin shotwell
# # thumbnails
# pacin raw-thumbnailer
# pacin tumbler libraw
# yain ufraw-thumbnailer
 
# this one is better
yain qimgv
# if there is a problem with qt versions ("cannot mix incompatible qt library"):
yay -S qt5-styleplugins

9.8. drive&photos

1
gphotos-uploader-cli

9.9. graphics editing

1
pacin inkscape

9.10. camera

1
2
3
4
5
6
7
8
9
10
11
12
pacin libgphoto2 gphoto2
# fuse
yain gphotofs
# frontend (old)
yain gtkam
# for gvfs file manager
pacin gvfs-gphoto2
scu-enable-now gvfs-gphoto2-volume-monitor.service
# photo edit
pacin darktable gimp
# failed to build
yain rawstudio

9.10.1. control from computer

https://medium.com/nerdery/dslr-webcam-setup-for-linux-9b6d1b79ae22
https://www.crackedthecode.co/how-to-use-your-dslr-as-a-webcam-in-linux/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# need to test
yain entangle
# or
pacin dkms linux-headers
pacin v4l-utils v4l2loopback-dkms ffmpeg
sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2
# sudo vim /etc/modules-load.d/dslr-webcam.conf
dslr-webcam
# sudo vim /etc/modprobe.d/dslr-webcam.conf
alias dslr-webcam v4l2loopback
options v4l2loopback exclusive_caps=1 max_buffers=2
# test (open lens first)
gphoto2 --capture-image-and-download
# make sure /dev/video4
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4
# with gpu accel
gphoto2 --stdout --capture-movie | ffmpeg -hwaccel nvdec -c:v mjpeg_cuvid -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4
# the capture in vlc, but that didn't work for me
     
# for android - to use it as a webcam (haven't tested)
yain -i v4l2loopback-dc-dkms

9.11. video

1
2
# video edit
pacin openshot

9.12. daw

1
yain reaper-bin

10. apps

10.1. msgs

10.1.1. zoom

1
2
3
yain zoom
# hidpi
QT_SCALE_FACTOR=2 zoom

10.1.2. slack

1
2
3
4
yain slack-desktop
# hidpi
# in desktop entry:
Exec=env GDK_SCALE=1 GDK_DPI_SCALE=1 /usr/bin/slack -s --force-device-scale-factor=1.5 %U

10.1.3. others

1
2
yain teamviewer
yain viber

10.1.4. telegram

1
2
3
4
pacin telegram-desktop
# hidpi - in settings 150%
# for emacs telega
yay -S libtd libtgvoip

10.1.5. skype

1
yain skypeforlinux-stable-bin

10.1.6. pidgin

1
2
3
4
5
6
7
8
9
10
11
pacin pidgin
sudo dnf install purple-facebook purple-skypeweb purple-telegram pidgin-libnotify
sudo dnf install libsecret-devel purple-devel pidgin-devel libpurple-devel json-glib json-glib-devel
# https://github.com/aebrahim/pidgin-gnome-keyring
# https://github.com/sardemff7/purple-libnotify-plus#purple-libnotify
# $HOME/.purple/smileys/
# https://github.com/stv0g/unicode-emoji
# https://github.com/VxJasonxV/emoji-for-pidgin
# whatsapp
# https://fedora.pkgs.org/31/rpm-sphere-x86_64/whatsapp-purple-0.6-4.4.x86_64.rpm.html
# download rpmsphere releases, rpm install, dnf install whatsapp-purple

10.1.7. yain ferdi

10.1.8. yain upwork

10.1.9. matrix

1
2
3
4
# command line
pacin weechat
# rich
pacin element-desktop
  • synapse
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/prerequisites.md
     
    # server
    # ssh keys
    echo "<pubkey>" > .ssh/authorized_keys
     
    # host
    # https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/ansible.md
    pacin ansible
     
    # https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook.md
     
    # install (reinstall)
    ansible-playbook -i inventory/hosts setup.yml --tags=setup-all
     
    # start/restart
    ansible-playbook -i inventory/hosts setup.yml --tags=start
     
    # check
    ansible-playbook -i inventory/hosts setup.yml --tags=self-check
    #https://federationtester.matrix.org/#matrix.ostapchuk.xyz
     
    # create user
    ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=twist522 password=<pass> admin=yes' --tags=register-user
     
    # maintenance

    https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/faq.md#maintenance

    see:how to increase swap

  • slack
    1
    2
    3
    # how to (re)link bridge
    link xoxc d-cookie
    # (but remove last %% from that cookie value)

10.2. beancount & [h]ledger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pacin ledger gnuplot
ln -s configs/linux/.ledgerrc .
npm install -g ledgerble
# nice analytics
sudo npm install -g ledger-analytics
 
# beancount
sudo pip3 install beancount
 
# hledger
yain hledger-bin hledger-iadd-bin hledger-ui-bin hledger-web-bin
# plots
pacin gnuplot
# ledger viz
pacin graphviz

10.3. wine

1
2
3
4
5
6
# enable multilib - uncomment it in /etc/pacman.conf, then pacman -Sy
pacin wine
# for .net
pacin wine-mono
# hidpi
winecfg => graphics - 192dpi

10.4. virtualbox

1
2
3
# dnf - virtualbox
sudo wget https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo -P /etc/yum.repos.d
sudo dnf install -y VirtualBox

10.5. qemu

1
2
# faster tham vbox
pacin qemu-full virt-manager

10.6. steam

1
2
3
4
# choose lib32-nvidia-utils (2)
pacin steam
# cmd version
yain steamcmd

10.7. others

1
2
3
4
5
6
7
# mindmaps
pacin freemind
 
# flash
yain flashplayer-standalone
# calculator
yain qalculate-gtk

10.8. jackd

1
pacin jack2 jackmeter jack_mixer jack_utils

10.9. accessibility

1
2
3
4
5
pacin festival festival-english festival-us
# emacspeak
pacin libotf extra/m17n-db extra/m17n-lib extra/tk
git clone https://github.com/tvraman/emacspeak
cd emacspeak ; make config ; make
1
(load-file "/home/twist/emacspeak/lisp/emacspeak-setup.el")

11. dev tools

11.1. scala

1
2
curl -s "https://get.sdkman.io" | bash
sdk install scala

11.2. sbt

1
2
3
4
5
# sbt fedora
curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo
sudo dnf --enablerepo=bintray--sbt-rpm install -y sbt
# sbt arch
pacin sbt

11.3. java

1
2
3
4
5
6
7
8
sudo dnf install java-1.8.0-openjdk-devel
sudo dnf install java-1.8.0-openjdk-src
 
pacin jdk-openjdk
pacin jdk8-openjdk
 
# pick version
archlinux-java

11.3.1. java8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env bash
 
wget --no-cookies \
     --no-check-certificate \
     --header "Cookie: oraclelicense=accept-securebackup-cookie" \
     "http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-arm64-vfp-hflt.tar.gz" \
     -O jdk-8u162-linux-arm64.tar.gz
tar -xzvf jdk-8u162-linux-arm64.tar.gz
 
sudo mkdir /usr/lib/jvm
sudo mv ./jdk1.8* /usr/lib/jvm/jdk1.8.0
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0/bin/javac" 1
sudo chmod a+x /usr/bin/java
sudo chmod a+x /usr/bin/javac
 
echo 'JAVA_HOME="/usr/lib/jvm/jdk1.8.0"' | sudo tee -a /etc/environment > /dev/null && source /etc/environment && echo $JAVA_HOME
 
sudo rm jdk-8*

11.4. gradle

1
pacin gradle

11.5. python

1
2
pacin python python-pip pyenv
pip install virtualenv

11.5.1. conda

1
2
3
https://docs.conda.io/en/latest/miniconda.html
conda config --set changeps1 False
# pip install conda # what is this?

11.5.2. pip

1
pip install pyspark pandas numpy sklearn matplotlib jupyter jupyterlab notebook

11.5.3. libs

1
conda install Pillow

11.6. jupyter

1
2
3
4
5
conda install sparkmagic
conda run jupyter nbextension enable --py --sys-prefix widgetsnbextension
conda run jupyter labextension install "@jupyter-widgets/jupyterlab-manager"
# to fix autocomplete
conda install jedi==0.17.2

11.7. npm

1
2
3
4
5
6
7
8
# fedora
sudo dnf install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_12.x | sudo -E bash -
sudo dnf install nodejs
# arch
pacin nodejs npm
# for global access installs
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

11.8. other dev tools

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
pacin maven
# ag code searcher
pacin the_silver_searcher
# ripgrep code searcher
pacin ripgrep
# fzf
pacin fzf
# find
pacin fd
# zoxide - aka fast 'cd'
pacin zoxide
# golang
pacin go
# highlight in ranger (and other places)
pacin highlight
# sqlworkbench
yain sql-workbench
# dbeaver
pacin dbeaver
# rsync
pacin rsync
# aws
pacin aws-cli
pip install aws-shell
# required for live preview of markdown in emacs
yain multimarkdown
# redis-cli
pacin redis
# mysql
pacin mariadb
# spark
yain apache-spark
# postgre
pacin postgresql
# presto
yay presto
# jupyter
sudo pip install jupyter
sudo pip install notebook
# plantuml/emacs
yain plantuml
# github
pacin github-cli

11.9. reveal.js used by org-reveal

1
2
3
# git clone https://github.com/hakimel/reveal.js
yain reveal-md
npm i puppeteer

11.10. lsp

11.10.1. js

1
2
3
sudo npm i -g vscode-json-languageserver
sudo npm i -g typescript-language-server
sudo npm i -g typescript

11.10.2. py

1
2
3
# the below one is newer
# sudo pip install 'python-language-server[all]'
pacin python-lsp-server

11.10.3. others

1
2
3
4
5
6
7
sudo npm install -g yaml-language-server
sudo npm install -g bash-language-server
sudo npm install -g dockerfile-language-server-nodejs
sudo npm install -g vscode-css-languageserver-bin
sudo npm install -g vscode-html-languageserver-bin
# php
sudo npm install -g intelephense

11.10.4. c++/c

1
pacin ccls

11.11. docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# arch
pacin docker docker-compose
 
# fedora
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
 
# docker login
yain docker-credential-pass

11.12. boxes

1
2
3
4
5
pacin distrobox
xhost +SI:localuser:$USER
 
# this is required by host-spawn to run host execs from inside containers
pacin flatpak

11.13. lombok for lsp

1
2
3
4
cd ~
curl -O -J -L https://projectlombok.org/downloads/lombok.jar
mkdir lombok
mv lombok.jar lombok/

11.14. scala metals

1
2
3
4
5
6
curl -Lo coursier https://git.io/coursier-cli
chmod +x coursier
./coursier bootstrap org.scalameta:metals_2.12:0.10.0 -r bintray:scalacenter/releases -r sonatype:snapshots -f --java-opt -Xss4m --java-opt -Xms100m --java-opt -Dmetals.client=emacs --java-opt -Xmx2g --java-opt -XX:+UseG1GC --java-opt -XX:+UseStringDeduplication --java-opt -Dmetals.status-bar=off --java-opt -Dmetals.icons=unicode --java-opt -Dmetals.slow-task=status-bar -o /usr/local/bin/metals-emacs -f
# windows
coursier bootstrap org.scalameta:metals_2.12:0.10.5 -r "bintray:scalacenter/releases" -r "sonatype:snapshots" -f --java-opt "-Xss4m" --java-opt "-Xms100m" --java-opt "-Dmetals.client=emacs" --java-opt "-Xmx2g" --java-opt "-XX:+UseG1GC" --java-opt "-XX:+UseStringDeduplication" --java-opt "-Dmetals.status-bar=off" --java-opt "-Dmetals.icons=unicode" --java-opt "-Dmetals.slow-task=status-bar" -o C:\Users\Admin\AppData\Local\Coursier\data\bin\metals
# + fix COURSIER_CACHE=C:\Users\Admin\AppData\Local\Coursier\cache

11.15. kafkacat

1
yain kafkacat

11.16. k8s

1
pacin helm

11.17. spell-check

1
2
# used by M-$ in emacs
pacin aspell-en

11.18. sql

1
2
3
yay -S sqls
go get github.com/mjibson/sqlfmt
gem install sqlint

11.19. s3 mount

1
2
3
sudo pacman -S s3fs-fuse
# faster
yain goofys-bin

11.20. ftp

1
pacin curlftpfs

11.21. android

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
yay -S android-sdk-cmdline-tools-latest android-sdk-platform-tools android-sdk-build-tools
yay -S android-emulator
yay -S flutter
yay -S android-studio
 
# you may need to fix /opt/flutter permissions first
see linux-notes:how to add user to writable group
 
flutter doctor
flutter doctor --android-licenses
 
# you may need to set android-auto with enable-usb-logging on android device connected
 
flutter devices
 
flutter config --enable-linux-desktop

11.22. android

11.22.1. emulation

1
2
3
4
5
6
yain android-sdk               
yain android-x86-system-image-28
sudo avdmanager create avd -n MyWhatsAppVM -k "system-images;android-28;google_apis_playstore;x86"
# sdkmanager --install "system-images;android-28;google_apis_playstore;x86"
sudo avdmanager create avd -n MyVM28 -k "system-images;android-28;google_apis_playstore;x86"
emulator -show-kernel -no-boot-anim -avd MyVM28 -no-audio -camera-back webcam0 -verbose

11.22.2. anbox

linux-zen
https://wiki.archlinux.org/title/Anbox#Loading_the_kernel_modules

1
2
3
yain anbox-git
yain anbox-image-gapps-rooted
# apps: apkmirror.com
  • Twitter
  • Telegram
  • Email
  • RSS
© 2023 - made in ukraine