Skip to content

Latest commit

Β 

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Avatar Icon

frvg's .s! (WIP)

OS WM License Made with

✨ Introduction ✨

This repository contains my personal daily driver setup, customized for a balance between aesthetics and usability. The focus is on creating a smooth, visually appealing experience with glass-like transparency effects and dynamic theming. While built around my own workflow, it's open for anyone who enjoys a polished and fluid environment. Feel free to fork or open a pull request!

powered by caffeine β˜•.

πŸ“‹ Overview

βš™οΈ Install Arch

did you read the word personal in the intro?

After making the Arch ISO bootable USB, plug in the notebook and turn it on while booting from the pendrive. In the Arch screen choose installation.

  1. Set the keyboard layout
$ localectl list-keymaps	# will list all keymaps
$ loadkeys KEYMAP		# will load selected keymap
$ setfont ter-132b		# will set a font suitable for HiDPI screen
  1. Connect to the internet
$ iwctl
[iwd]$ device list				# get wireless device name
[iwd]$ device DEVICE set-property Powered on	# turn device on
[iwd]$ station DEVICE scan			# turn scan on
[iwd]$ station DEVICE get-networks		# list networks
[iwd]$ station DEVICE connect NETWORK		# connect to network
[iwd]$ exit					# to exit
  1. Set correct time
$ timedatectl list-timezones		# list timezones
$ timedatectl set-timezone TIMEZONE	# set timezone
$ timedatectl status			# check current RTC mode
$ timedatectl set-local-rtc BOOL	# change RTC mode (set as UTC)
$ timedatectl set-ntp BOOL		# start time sync daemon
  1. Partition the disk and mount it
$ cfdisk # will start the fdisk TUI
  • delete all existing partitions
  • create one for the EFI, another for root and one for the swap space
  • now it's time format all partitions, get the paths with:
$ fdisk -l
  • for each path, format it as needed
$ mkfs.fat -F 32 /dev/PATH_TO_EFI
$ mkfs.btrfs /dev/PATH_TO_ROOT # or mkfs.xfs
$ mkswap /dev/PATH_TO_SWAP
  • mount each partition and enable swap
$ mount /dev/PATH_TO_ROOT /mnt
$ mkdir /mnt/boot
$ mount /dev/PATH_TO_EFI /mnt/boot/
$ swapon /dev/PATH_TO_SWAP
  • also create the subvolumes (btrfs only)
$ btrfs su cr /mnt/@		# root subvolume
$ btrfs su cr /mnt/@home	# home subvolume
$ btrfs su cr /mnt/@snapshots	# snapshot subvolume
$ btrfs su cr /mnt/@log		# logs subvolume
$ btrfs su cr /mnt/@pkg		# pacman subvolume
  • now unmount everything and remount with the subvolumes
$ umount /mnt

# root (if btrfs)
$ mount -o noatime,compress=zstd:1,ssd,space_cache=v2,subvol=@ /dev/PATH_TO_ROOT /mnt

# create the directories to be mounted
$ mkdir -p /mnt/{boot,home,.snapshots}
$ mkdir -p /mnt/var/log
$ mkdir -p /mnt/var/pacman/pkg

# mount the subvolumes
$ mount -o noatime,compress=zstd:1,ssd,space_cache=v2,subvol=@home /dev/PATH_TO_ROOT /mnt/home
$ mount -o noatime,compress=zstd:1,ssd,space_cache=v2,subvol=@snapshots /dev/PATH_TO_ROOT /mnt/.snapshots
$ mount -o noatime,compress=zstd:1,ssd,space_cache=v2,subvol=@log /dev/PATH_TO_ROOT /mnt/var/log
$ mount -o noatime,compress=zstd:1,ssd,space_cache=v2,subvol=@pkg /dev/PATH_TO_ROOT /mnt/pkg

# if on XFS just do
$ mount /dev/PATH_TO_ROOT /mnt

# mount the EFI
$ mount /dev/PATH_TO_EFI /mnt/boot

# enable SWAP
$ swapon /dev/PATH_TO_SWAP

Finally, is time to pacstrap core stuff.

best time to act like a wizard summoning an esoteric spell

$ pacstrap /mnt amd-ucode base base-devel [btrfs-progs (if on btrfs)] linux linux-firmware linux-headers linux-lts neovim networkmanager sudo [xfsprogs (if on xfs)]

Also generate the fstab entries.

$ genfstab -U /mnt >> /mnt/etc/fstab

# also check if everything is alright
$ cat /mnt/etc/fstab

Enter the installation directory to setup the system.

$ arch-chroot /mnt
  1. Set the timezone and sync the clock.
$ ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
$ hwclock --systohc
  1. Generate the locales info.
# find and uncomment en_US.UTF-8
$ nvim /etc/locale.gen
# then run
$ locale-gen
  • now edit /etc/locale.conf to become
LANG=en_US.UTF-8
  • also edit /etc/vconsole.conf
KEYMAP=us
  1. Add btrfs or xfs module to kernel by editing /etc/mkinitcpio.conf.
...
MODULES=(btrfs) # or xfs
...
  • then run
$ mkinitcpio -p linux
  1. Set the host name by editing /etc/hostname.
nitro-arch
  • also edit /etc/hosts
127.0.0.1	localhost
::1		localhost
127.0.1.1	nitro-arch.localdomain	nitroarch
  1. Add sudo password.
$ passwd
  1. Install the bootloader.
$ bootctl --path=/boot install
  • now edit the /boot/loader.conf file
timeout 0
console-mode auto
editor no
default @saved
  • create the /boot/loader/entries/arch.conf file
title	Arch Linux
linux	/vmlinuz-linux
initrd	/initramfs-linux.img
options	root=/dev/PATH_TO_ROOT rw
  1. Get more packages.
$ pacman -S efibootmgr nm-connection-editor [snapper (if on btrfs only)] wpa_supplicant xdg-utils
  1. Enable networkmanager.
$ systemctl enable NetworkManager
  1. Create a new user.
$ useradd -mG wheel frvg
$ passwd frvg
  • now add the user to the sudoers, first run
$ EDITOR=nvim visudo
  • then uncomment the line
%wheel ALL=(ALL) ALL
  1. Boot into the system.
$ exit
$ umount -a
$ reboot
  1. Connect to the wifi again.
$ nmtui
  1. Config pacman.
$ EDITOR=nvim sudoedit /etc/pacman.conf
  • find and uncomment the lines:
...
Color
ILoveCandy
CheckSpace
...
  • enable parallel downloads
...
ParallelDownloads = 50
...
  • enable multilib repo (for gaming)
...
[multilib]
Include = /etc/pacman.d/mirrorlist
...
  • also edit the mirrorlist
$ EDITOR=nvim sudoedit /etc/pacman.d/mirrorlist
  • add the following mirrors
Server = http://mirror.ufscar.br/archlinux/$repo/os/$arch
Server = https://mirror.ufscar.br/archlinux/$repo/os/$arch
Server = http://archlinux.c3sl.ufpr.br/$repo/os/$arch
Server = https://archlinux.c3sl.ufpr.br/$repo/os/$arch
Server = http://www.caco.ic.unicamp.br/archlinux/$repo/os/$arch
Server = https://www.caco.ic.unicamp.br/archlinux/$repo/os/$arch
Server = http://br.mirrors.cicku.me/archlinux/$repo/os/$arch
Server = https://br.mirrors.cicku.me/archlinux/$repo/os/$arch
Server = http://linorg.usp.br/archlinux/$repo/os/$arch
Server = http://archlinux.pop-es.rnp.br/$repo/os/$arch
Server = http://mirror.ufam.edu.br/archlinux/$repo/os/$arch
Server = http://mirrors.ic.unicamp.br/archlinux/$repo/os/$arch
Server = https://mirrors.ic.unicamp.br/archlinux/$repo/os/$arch
  • then refresh all mirrors
$ sudo pacman -Syyu
  • also it's a good idea to set a hook to update systemd-boot, to do so create the file in /etc/pacman.d/hooks/
$ EDITOR=nvim sudoedit /etc/pacman.d/hooks/95-systemd-boot.hook
  • and add the following content
[Trigger]
Type = Package
Operation = Upgrade
Target = systemd

[Action]
Description = Gracefully upgrading systemd-boot...
When = PostTransaction
Exec = /usr/bin/systemctl restart systemd-boot-update.service
  1. Schedule fstrim.
  • just enable the systemd timer
$ sudo systemctl enable fstrim.timer
  1. Config git
$ sudo pacman -Syu git github-cli
$ git config --global user.name "frvgmxntx"
$ git config --global user.email "gnavelino@estudante.ufscar.br"
$ gh auth login
  1. Install AUR helper.
$ git clone https://aur.archlinux.org/paru.git
$ cd paru && makepkg -si
  • enable paru to clean after
$ EDITOR=nvim sudoedit /etc/paru.conf
  • find and uncomment the line
...
CleanAfter
...
  1. Get sound.
$ sudo pacman -Syu pipewire lib32-pipewire wireplumber pwvucontrol pipewire-audio pipewire-alsa pipewire-jack pipewire-pulse && reboot

  1. Get bluetooth.
$ sudo pacman -Syu bluez bluez-utils blueman
$ sudo systemctl enable --now bluetooth.service
  1. Setup fan control.
  • first install nbfc-linux from AUR
$ paru -Syu nbfc-linux
  • then copy the configuration file from the repo to the config folder
$ cp dxts/nbfc/'Acer Nitro AN515-44.json' /usr/share/nbfc/configs
  • apply the config and start the service
$ sudo nbfc config -a 'Acer Nitro AN515-44'
  1. Setup battery charge limit.
  • compile the module
$ git clone https://github.com/frederik-h/acer-wmi-battery.git
$ cd acer-wmi-battery && make
  • copy the module to the loader directory
$ sudo mkdir /lib/modules/$(uname -r)/kernel/acer  
$ cp acer-wmi-battery.ko /lib/modules/$(uname -r)/kernel/acer/
  • create the module loader file
$ EDITOR=nvim sudoedit /etc/modules-load.d/acer-wmi-battery.conf
  • add the following line
acer-wmi-battery
  • create the modprobe file
$ EDITOR=nvim sudoedit /etc/modprobe.d/acer-wmi-battery.conf
  • add the following line
options acer-wmi-battery enable_health_mode=1
  • update kernel modules dependencies info
$ sudo depmod -a
  1. Setup nvidia drivers (GTX 1650 Mobile / Max-Q | TU117).
  • get the drivers
$ sudo pacman -Syu nvidia-open nvidia-utils

yeah it's this simple.

  1. Set auto login on tty.
  • create the auto auto login service for tty1
$ sudo mkdir /etc/systemd/system/getty@tty.service.d
  • create an autologin.conf file
$ cd /etc/systemd/system/getty@tty.service.d
$ EDITOR=nvim sudoedit autologin.conf
  • add the following content
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin frvg %I $TERM
Type=simple
  • also create the skip prompt file
$ EDITOR=nvim sudoedit skip-prompt.conf
  • add the following content
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --skip-login --nonewline --noissue --autologin frvg --noclear %I $TERM
  1. Set quiet boot.
  • just add these parameters to /boot/loader/entries/*_linux.conf
...
options	root=/dev/PATH_TO_ROOT rw quiet nowatchdogs loglevel=3 systemd.show_status=auto rd.udev.log_level=3
...
  1. Finish getting some needed programs.
$ paru -Syu 7zip ffmpeg fuzzel glances gvfs imagemagick lutris nm-connection-editor python qbittorrent torzu-git udiskie vesktop-bin wine winetricks

other stuff wip

kitty noto-fonts-emoji

brightnessctl cava dart-sass fastfetch ffmpegthumbnailer file-roller gimp gpu-screen-recorder grim hyprland hyprlock hyprpicker hyprpolkitagent mako mpv nm-connection-editor ollama poppler rnote satty slurp swww-git thunar thunar-archive-plugin thunar-media-tags-plugin thunar-vcs-plugin thunar-volman torzu-git tumbler tumbler-extra-thumbnailers wl-clipboard xdg-desktop-portal-hyprland yt-dlp zathura zathura-cb zathura-pdf-poppler zathura-ps zed

πŸ’» Terminal & Shell

caution with the sea 🐟*

  1. Get bat, eza, fish, fzf, qalc and zoxide.
$ sudo pacman -Syu bat eza fish fzf qalc zoxide
  1. Set default shell.
  • check shell paths
$ chsh -l
  • set fish as default
$ chsh -s /usr/bin/fish # or path shown by chsh
  • disable fish greeting
$ set -U fish_greeting
  • make su use fish too, create the file ~/.config/fish/functions/su.fish and add the following
function su
	command su --shell/usr/bin/fish $argv
end
  • create the necessary alias
$ alias -s cat 'bat'
$ alias -s cd 'z'
$ alias -s del 'gio trash'
$ alias -s ff 'fastfetch'
$ alias -s icat 'sudo kitten icat'
$ alias -s ls 'eza --long --color=always --icons=always -a'
$ alias -s lt 'eza --tree --color=always --icons=always -a'
$ alias -s nv 'nvim'
$ alias -s pac 'paru -Syu'
$ alias -s pyv 'source ./.venv/bin/activate.fish' 
$ alias -s snv 'EDITOR=nvim sudoedit'
  • add fzf and zoxide to fish, by appending this line to ~/.config/fish/config.fish
...
fzf --fish | source
zoxide init fish | source
...
  • set a prompt on fish
$ fish_config
  1. Set up Hyprland then come back to configure kitty.
  • install kitty
$ sudo pacman -Syu kitty
  • get the config files from dxts/kitty

  • include the files by appending this to the config file

  1. Set Neovim
  • copy the starter config

  • add plugins. First install dependencies

$ sudo pacman -Syu luarocks tree-sitter

neovim kickstart neovim neorg neovim lualine neovim pywal16 neovim colorizer

πŸ’§ Hyprland

  1. Get Hyprland and friends
$ sudo pacman -Syu hyprland
  1. Then just follow the wiki https://wiki.hyprland.org/Getting-Started/
  • monitor
  • env vars in uwsm
  • animations
  • binds (change uwsm to app2unit)
  • decorations
  • inputs
  • startup
  • window-rules
  • scripts
  1. To set uwsm
  • install uwsm
$ sudo pacman -Syu uwsm libnewt app2unit-git
  • append to config.fish the autostart
...
if uwsm check may-start
	exec uwsm start hyprland.desktop
end
...
  • add app2unit env var to faster startups, in ~/.config/uwsm/env
...
APP2UNIT_SLICES='a=app-graphical.slice b=background-graphical.slice s=session-graphical.slice'
...

🎨 Matugen

  1. Get Matugen
$ paru -Syu matugen

🧰 Waybar

  1. Get Waybar
$ sudo pacman -Syu waybar

πŸƒ Zen Browser

  1. Get Zen
$ paru -Syu zen-browser
  1. Install mods
  • get both Transparent Zen and Zen Internet

  • don't forget to enable transparency on Transparent Zen configuration, and to sync the latest themes on Zen Internet addon menu

  1. Disable dimming when out of focus and check transparency status
  • go to the about config page, change zen.view.grey-out-inactive-windows to false. Also, make sure that zen.widget.linux.transparency and browser.tabs.allow_transparent_browser are both set to true.

πŸ–ΌοΈ GTK & QT Themes

being honest this is the hardest step

✨ Showcase ✨

desktop with rainy firewatch game wallpaper
desktop with moving grass wallpaper
desktop with moving moon and clouds illustration wallpaper

✨ Thank You Section ✨

❀️ Matugen - A material you color generation tool.

shoutout to the giants whose shoulders I'm standing on πŸ™.

Used by

Contributors