275 lines
8.8 KiB
Markdown
Executable File
275 lines
8.8 KiB
Markdown
Executable File
# i3-stones
|
|
|
|
## Dependencies
|
|
|
|
### For i3
|
|
- i3wm
|
|
- polybar
|
|
|
|
### For sway
|
|
- wl-root
|
|
- grim
|
|
- slurp
|
|
- wl-clipboard
|
|
- sway
|
|
- swaybg
|
|
- waybar
|
|
|
|
### Others (notifications and icons)
|
|
- A Nerd Font (for icons)
|
|
- tiramisu
|
|
|
|
## For brightness and media control:
|
|
- brightnessctl (You have to add user to the following groups: video input)
|
|
- playerctl
|
|
## For screen tearing:
|
|
- Fix xorg config with appropriate driver.
|
|
- Driver:
|
|
- intel: xf86-video-intel
|
|
- sudo -e /etc/X11/xorg.conf.d/20-intel.conf
|
|
```
|
|
Section "Device"
|
|
Identifier "Intel Graphics"
|
|
Driver "intel"
|
|
Option "TearFree" "true"
|
|
EndSection
|
|
```
|
|
- amd: xf86-video-amdgpu (`VariableRefresh` = FreeSync, fullscreen apps only under Xorg)
|
|
- sudo -e /etc/X11/xorg.conf.d/20-amdgpu.conf
|
|
```
|
|
Section "Device"
|
|
Identifier "AMD"
|
|
Driver "amdgpu"
|
|
Option "VariableRefresh" "true"
|
|
Option "TearFree" "true"
|
|
EndSection
|
|
```
|
|
## High refresh rate flicker (AMD):
|
|
- At high refresh rates (240Hz+) the vblank can be too short for the GPU to
|
|
switch VRAM clock unnoticed, so the desktop flickers under changing load.
|
|
Windows avoids it by keeping VRAM clock high; amdgpu on Linux may not.
|
|
- Check: if the `*` jumps between levels while idle, this is likely the cause.
|
|
```bash
|
|
watch -n0.2 cat /sys/class/drm/card*/device/pp_dpm_mclk
|
|
```
|
|
- Fix 1: run the desktop at a lower rate (`i3/config` uses 120Hz). Find the
|
|
output name with `xrandr` (e.g. `DisplayPort-0`) and adjust it there:
|
|
```bash
|
|
xrandr --output DisplayPort-0 --mode 1920x1080 --rate 120
|
|
```
|
|
- sway: same idea in `sway/config` (`swaymsg -t get_outputs` for the name).
|
|
Keep `adaptive_sync off` there — sway applies it to the whole desktop, which
|
|
can stutter/flicker:
|
|
```
|
|
output DP-1 mode 1920x1080@120Hz adaptive_sync off
|
|
```
|
|
- Fix 2: keep the high rate and pin VRAM clock to its top level (more idle
|
|
power, resets on reboot; top level is the last line of `pp_dpm_mclk`):
|
|
```bash
|
|
echo manual | sudo tee /sys/class/drm/card*/device/power_dpm_force_performance_level
|
|
echo 3 | sudo tee /sys/class/drm/card*/device/pp_dpm_mclk
|
|
```
|
|
- Gaming: 120Hz + FreeSync is plenty for ~60fps games (VRR covers the dips).
|
|
Cap fps a few below max refresh so VRR stays active, e.g. Dota 2 console
|
|
`fps_max 117`. Under Xorg, VRR applies to fullscreen games only; under sway
|
|
with `adaptive_sync off` games run without it.
|
|
- To turn off FreeSync for a single game (Xorg): `adaptive_sync=false %command%`
|
|
(Steam launch options).
|
|

|
|
|
|
## Installing dependencies
|
|
|
|
Package availability differs between distros — Arch has everything below in the
|
|
official/multilib repos, no AUR needed. Gentoo's main tree is missing a few
|
|
newer tools (noted below); those need the [GURU overlay](https://wiki.gentoo.org/wiki/Project:GURU)
|
|
or manual/cargo install.
|
|
|
|
### Window manager & session (both i3 and sway)
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S i3-wm i3status i3blocks sway swaybg swaylock swayidle \
|
|
waybar polybar rofi alacritty dex snixembed \
|
|
xss-lock xorg-xset xorg-xrandr xclip scrot imagemagick i3lock \
|
|
network-manager-applet blueman gnome-keyring polkit-gnome \
|
|
pipewire wireplumber pipewire-pulse pipewire-alsa pipewire-jack \
|
|
pasystray playerctl brightnessctl \
|
|
fcitx5 fcitx5-im fcitx5-configtool
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask \
|
|
x11-wm/i3 x11-misc/i3status x11-misc/i3blocks \
|
|
gui-wm/sway gui-apps/swaybg gui-apps/swaylock gui-apps/swayidle \
|
|
gui-apps/waybar x11-misc/polybar x11-misc/rofi x11-terms/alacritty \
|
|
x11-misc/dex x11-misc/snixembed \
|
|
x11-misc/xss-lock x11-apps/xset x11-apps/xrandr x11-misc/xclip media-gfx/scrot \
|
|
media-gfx/imagemagick x11-misc/i3lock \
|
|
net-misc/networkmanager net-misc/network-manager-applet net-wireless/blueman \
|
|
app-crypt/gnome-keyring gnome-extra/polkit-gnome \
|
|
media-video/pipewire media-video/wireplumber media-sound/playerctl \
|
|
app-i18n/fcitx app-i18n/fcitx-qt app-i18n/fcitx-gtk
|
|
```
|
|
- `brightnessctl` is **not in the main Gentoo tree** — install from the GURU
|
|
overlay (`sudo emerge --ask brightnessctl`, after enabling GURU below) or
|
|
build from source. Add your user to the `video` and `input` groups either way.
|
|
- PipeWire's PulseAudio/ALSA/JACK compatibility on Gentoo is controlled by
|
|
USE flags (`pulseaudio`/`alsa`/`jack`... check `equery u media-video/pipewire`)
|
|
rather than separate packages.
|
|
- `pasystray` (systray volume icon) is not in the main tree either; the GURU
|
|
overlay or `pavucontrol` are common substitutes.
|
|
|
|
Enable the GURU overlay once, needed by several packages below:
|
|
```bash
|
|
sudo eselect repository enable guru
|
|
sudo emerge --sync guru
|
|
```
|
|
|
|
### Wayland screenshots, clipboard, and screen sharing (sway)
|
|
|
|
These are the pieces the Print-key bindings and screen sharing/recording in
|
|
`sway/config` depend on — without `xdg-desktop-portal-wlr` specifically,
|
|
no app (browser tab share, Discord, OBS) can capture the screen at all.
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S grim slurp wl-clipboard cliphist \
|
|
xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk \
|
|
wf-recorder obs-studio
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask \
|
|
gui-apps/grim gui-apps/slurp gui-apps/wl-clipboard \
|
|
sys-apps/xdg-desktop-portal gui-libs/xdg-desktop-portal-wlr sys-apps/xdg-desktop-portal-gtk \
|
|
media-video/wf-recorder media-video/obs-studio
|
|
```
|
|
- `cliphist` (clipboard history) is not in the main tree — GURU overlay.
|
|
|
|
After installing the portal packages, restart the portal service so it picks
|
|
up the new backend:
|
|
```bash
|
|
systemctl --user restart xdg-desktop-portal
|
|
```
|
|
|
|
### AMD GPU stack (mesa/RADV/amdgpu)
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon \
|
|
xf86-video-amdgpu linux-firmware-amdgpu libvdpau-va-gl
|
|
```
|
|
Mesa on current Arch already bundles the VA-API driver (`radeonsi_drv_video.so`)
|
|
and there's no separate `mesa-vdpau`/`lib32-mesa-vdpau` package anymore —
|
|
`libvdpau-va-gl` is the VDPAU-to-VA-API translation layer that replaces it.
|
|
|
|
**Gentoo**
|
|
```bash
|
|
# In /etc/portage/make.conf:
|
|
# VIDEO_CARDS="amdgpu radeonsi"
|
|
sudo emerge --ask media-libs/mesa media-libs/vulkan-loader \
|
|
x11-drivers/xf86-video-amdgpu media-video/libvdpau media-libs/libvdpau-va-gl
|
|
```
|
|
Make sure `mesa` is built with `USE="vulkan"` and, for 32-bit/Steam
|
|
compatibility, `ABI_X86="32 64"` in `package.use`.
|
|
|
|
### Gaming & performance
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S gamemode lib32-gamemode mangohud lib32-mangohud
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask games-util/gamemode
|
|
```
|
|
- `mangohud` is **not in the main Gentoo tree** — GURU overlay
|
|
(`sudo emerge --ask games-util/mangohud` after enabling GURU).
|
|
|
|
Adaptive sync (sway): the desktop runs at a fixed 240 Hz with VRR off, because
|
|
sway only renders on change and idle frame rates fall below the panel's 48 Hz
|
|
floor (out of LFC range → flicker). `sway/scripts/vrr-follow` turns VRR on for
|
|
DP-1 only while the visible workspace has a fullscreen window; `lock-now` turns
|
|
it off while locked. Needs `jq`.
|
|
|
|
### GPU monitoring & tuning
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S radeontop amdgpu_top nvtop lact lm_sensors
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask app-misc/radeontop sys-process/nvtop sys-power/lm-sensors
|
|
```
|
|
- `amdgpu_top`, `lact`, and `corectrl` (fan curves/overclocking GUIs) are not
|
|
in the main tree — GURU overlay, or install `lact`/`amdgpu_top` via `cargo`
|
|
since both are Rust tools.
|
|
|
|
### Razer peripherals (polling rate, DPI, RGB)
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S openrazer-daemon openrazer-meta polychromatic
|
|
sudo gpasswd -a $USER plugdev
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask sys-apps/openrazer
|
|
sudo gpasswd -a $USER plugdev
|
|
```
|
|
- Gentoo ships a single unified `sys-apps/openrazer` package (driver +
|
|
daemon together) rather than split `-daemon`/`-meta` packages.
|
|
`polychromatic` (GUI) is not in the main tree — GURU overlay.
|
|
|
|
### Notifications & fonts
|
|
|
|
**Arch**
|
|
```bash
|
|
sudo pacman -S ttf-firacode-nerd
|
|
# tiramisu (notification daemon) is AUR-only on Arch: yay -S tiramisu
|
|
```
|
|
|
|
**Gentoo**
|
|
```bash
|
|
sudo emerge --ask media-fonts/nerd-fonts
|
|
```
|
|
- `tiramisu` is not in the main Gentoo tree — GURU overlay or build from
|
|
source (https://github.com/Sweets/tiramisu).
|
|
|
|
### PipeWire launcher (Gentoo only)
|
|
|
|
`sway/config` calls `gentoo-pipewire-launcher`, the community launcher script
|
|
documented on the [Gentoo PipeWire wiki page](https://wiki.gentoo.org/wiki/PipeWire) —
|
|
it's a shell script you place on your `PATH` yourself, not a portage package.
|
|
|
|
## Vim
|
|
|
|
### Vimplug
|
|
#### Neovim
|
|
```
|
|
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
|
|
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
|
|
```
|
|
#### Vim
|
|
```sh
|
|
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
|
|
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
```
|
|
### Conquer of Completion
|
|
- Requirements:
|
|
- Nodejs
|
|
### coc.nvim
|
|
```
|
|
:CocInstall coc-pairs coc-json coc-tsserver coc-snippets
|
|
```
|
|
### coc.vimtex
|
|
```
|
|
:CocInstall coc-vimtex
|
|
```
|