README.md

This commit is contained in:
grayTerminal-sh 2026-07-26 23:40:30 +02:00
parent 41a6c5df2e
commit 7ed3f78c41

632
README.md
View file

@ -1,555 +1,161 @@
# ArchAP Arch Professor # Dotfiles ArchASP
<p align="center"> Configurations utilisateur de mon poste principal sous **Arch Linux**, avec un environnement **Wayland / Sway**.
<img src="https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/screen.jpg" width="900" alt="Screenshot">
</p>
Personal Arch Linux configuration focused on: Ce dépôt contient uniquement les fichiers liés à ma session utilisateur.
Les configurations système, les paquets, Btrfs, Snapper, Limine, TLP, nftables et les outils nécessitant les droits root sont gérés séparément dans le dépôt [`arch-system`](https://git.labfytools.com/fy59/arch-system).
- Keyboard-driventerminal-first ## Environnement
- Terminal-first workflow with Sway and MangoWM, Neovim, Kitty
- Catppuccin Mocha themed UI.
- Cyber Learning
**Goal** : - Arch Linux
all reproducible from a single install script and a GNU Stowmanaged dotfiles repo. - Sway
- Wayland
- Kitty
- Zsh
- Neovim
- PipeWire / WirePlumber
- systemd utilisateur
- GNU Stow pour le déploiement des fichiers
- [Installation Guide](#installation-on-existing-system) ## Contenu
- [Greetd/Regreet config](#regreet-config)
- [Snapper install & config](#snapper-config)
## Status Le dépôt regroupe notamment :
ArchASP is currently in active development. ```text
.config/
├── kitty/
├── nvim/
├── sway/
├── systemd/user/
└── ...
.local/
├── bin/
└── share/
If you want to contribute, improve the codebase, suggest ideas, or help .zshrc
shape the installer workflow, feel free to contribute to that repository
too.
---
## Overview
This repo contains my entire user configuration, including:
- Zsh shell configuration with plugins, history tuning, fuzzy-finding and Python helpers
- A Catppuccin Mocha desktop theme applied consistently across GTK 3/4, Qt
- Sway configuration split into modular files with custom keybinds, bar, rules and styling
- Neovim configuration using Lua, Lazy, Treesitter, LSP and a full plugin setup
- Kitty terminal configuration with a large theme collection and a current theme
- Extra configs for GTK, Qt, TUI tools (yazi, fastfetch, calcure, bat, eza, cliphist, i3status-rust)
- Systemd user services for background daemons (idle/lock, clipboard, theming, sync, etc.)
The goal is to provide an opinionated but reusable starting point for an Arch/Linux tiling window manager environment.
---
## Required packages
This setup assumes the following tools are installed (Arch package names):
- [swayfx](https://github.com/WillPower3309/swayfx) (Wayland tiling window manager)
- [swaylock-effects](https://github.com/mortie/swaylock-effects)
- [swayidle](https://github.com/swaywm/swayidle)
- [wofi](https://github.com/SimplyCEO/wofi) (Wayland application launcher)
- [i3status-rust](https://github.com/greshake/i3status-rust?tab=readme-ov-file) (status bar blocks)
- [kitty](https://github.com/kovidgoyal/kitty) (terminal emulator)
- [neovim](https://github.com/neovim/neovim) (text editor)
- [zsh](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH) (shell)
- [starship](https://github.com/starship/starship) (prompt)
- [atuin](https://github.com/atuinsh/atuin) (shell history)
- [fzf](https://github.com/junegunn/fzf) (fuzzy finder)
- [fd](https://github.com/sharkdp/fd) (fast file search, used by fzf)
- [ripgrep](https://github.com/burntsushi/ripgrep) (rg, fast grep)
- [eza](https://github.com/eza-community/eza) (ls replacement)
- [fastfetch](https://github.com/fastfetch-cli/fastfetch) (system info on shell startup)
- [yazi](https://github.com/sxyazi/yazi) (terminal file manager)
- [bat](https://github.com/sharkdp/bat) (cat replacement with syntax highlighting)
- [cliphist](https://github.com/sentriz/cliphist) (Wayland clipboard manager)
- [calcure](https://github.com/anufrievroman/calcure) (terminal calendar and tasks)
- [zoxide](https://github.com/ajeetdsouza/zoxide) (smart cd)
- [pyenv](https://github.com/jorgenschaefer/pyvenv) (Python version manager)
- [git](https://github.com/git/git) (version control)
- [yay](https://github.com/jguer/yay) (AUR helper)
- [gtk3](https://github.com/gooroom/gtk3)
- [gtk4](https://gitlab.gnome.org/GNOME/gtk/)
- [catppuccin-gtk-theme-mocha](https://github.com/catppuccin/gtk)
- [catppuccin-cursors-mocha](https://github.com/catppuccin/cursors)
- [greetd](https://github.com/kennylevinsen/greetd)
- [tuigreet](https://github.com/apognu/tuigreet)
- [systemd](https://github.com/systemd/systemd) (init system, login manager and user services used for greetd, idle/lock, snapper, timers, etc.)
- [wlogout](https://github.com/ArtsyMacaw/wlogout) (Power tool for waybar)
- [waybar](https://github.com/Alexays/Waybar) (Status bar with MangoWM)
- [mangown](https://github.com/mangowm/mango) (Windows compositor)
- [atuin](https://github.com/atuinsh/atuin)
---
## Zsh configuration
The Zsh configuration (`.zshrc`) is kept intentionally minimal and fast, while providing a modern shell experience.
Main features:
- Clean history settings (shared, deduplicated, trimmed) with a large history size
- Completion system using `compinit`, cached in `~/.cache/zsh`, with case-insensitive matching and colored completions
- Fastfetch banner on interactive shell startup if available
- Plugin setup without a plugin manager:
- `zsh-autosuggestions`
- `fast-syntax-highlighting`
- `fzf-tab`
- Prompt powered by `starship` with config in `~/.config/starship.toml`
- Incremental history search via `zsh-history-substring-search` (up/down arrows)
- Tight integration with `fzf` and `zoxide`:
- Custom `FZF_DEFAULT_COMMAND` and previews using `bat`
- Key bindings and completion from the system `fzf` scripts
- Convenient aliases:
- Navigation (`..`, `...`, `....`)
- Tools (`b` for yazi, `n` for neovim)
- Git shortcuts (`g`, `gs`, `ga`, `gc`, `gp`, `gl`)
- `eza` replacing `ls` with different presets
- `rg` as default grep-like search
- OSINT helpers:
- `whois-ip`, `geoip`, `myip`, `headers`, `dns`, `subdomains`, `shot`, `topcmd`
- Arch Linux workflow:
- `pacman` and `yay` aliases for install, upgrade, cleanup, orphan handling
- `journalctl` aliases (`jlog`, `jfollow`, `jboot`)
- Utility functions:
- `extract` for unpacking many archive formats
- `mkcd` to create and enter a directory
- `psgrep` to search running processes
- Python / pyenv helpers:
- pyenv initialization
- `va` to activate `venv/` or `.venv/`
- aliases for creating, destroying and managing virtualenvs and `requirements.txt`
---
## Themes: `.themes/Catppuccin-Mocha`
This directory contains the Catppuccin Mocha theme adapted for several environments:
- `cinnamon/`
Cinnamon desktop theme, including CSS and assets like checkboxes, toggles and window control icons.
- `gnome-shell/`
GNOME Shell theme with CSS files and SVG assets for shell elements (calendar, toggles, process animation).
- `gtk-2.0/`, `gtk-3.0/`, `gtk-4.0/`
GTK themes for legacy and modern GTK applications, including:
- `gtkrc` and `gtkrc.hidpi` for GTK2
- `gtk.css` and `gtk-dark.css` plus a large set of SVG assets for GTK3/4 widgets (checkboxes, radio buttons, sliders, etc.).
- `metacity-1/`
Window manager theme for Metacity-based environments.
- `plank/`
Theme for the Plank dock (`dock.theme`).
- `xfwm4/`
Theme configuration for XFWM4 window manager.
- `index.theme`
The theme index file used by the system to register Catppuccin Mocha.
This ensures a consistent Catppuccin Mocha look across desktops, apps and widgets.
---
## Yazi: `.config/yazi`
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/yazi.jpg width="600" alt="screenshot">
</img>
</p>
Configuration for the Yazi terminal file manager:
- `yazi.toml`
Main Yazi configuration.
- `theme.toml`
Custom Yazi theme to match the overall colors.
- `keymap.toml`
Custom key mappings for navigation and actions.
- `package.toml`
Package metadata for the configuration.
---
## Wofi: `.config/wofi`
Configuration for Wofi, a Wayland application launcher and cliphist manager:
- `config`
Main Wofi settings (mode, matching, behavior).
- `style.css`
CSS styling to match the Catppuccin-like look.
- `wifi`
Script or configuration used to manage Wi-Fi selection via Wofi.
---
## Starship: `.config/starship.toml`
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/starship.jpg width="600" alt="screenshot">
</img>
</p>
Prompt configuration for the Starship prompt, referenced from `.zshrc`.
It defines the segments, colors and layout of the prompt to integrate visually with the rest of the setup.
---
## Sway: `.config/sway`
Sway configuration is split into multiple modular files for clarity:
- `config`
Main Sway configuration file that typically includes the others.
- `autostart.conf`
Applications and services launched automatically when Sway starts.
- `bar.conf`
Status bar configuration, including integration with `i3status-rust`.
- `bind.conf`
Keybindings for window management, launching applications, workspaces, etc.
- `input.conf`
Input configuration (keyboard, touchpad, etc.).
- `rules.conf`
Window rules (floating windows, specific workspaces, etc.).
- `style.conf`, `swayfx.conf`, `tty-style.conf`
Visual tweaks, SwayFX configuration and TTY-like styling.
- `catppuccin-mocha`
Theme-related configuration for Sway using the Catppuccin Mocha palette.
- `i3status.toml`
Configuration file for `i3status-rust` used in the bar.
- `assets/screen.jpg`
Screenshot or background asset.
- `scripts/`
Helper scripts:
- `copypast` to integrate clipboard history with Wofi and images
- `inactive-windows-transparency.py` for window transparency effects
- `README.md`
Local documentation for the Sway setup.
---
## Qt: `.config/qt5ct` and `.config/qt6ct`
Qt theming configuration using `qt5ct` and `qt6ct`:
- `colors/catppuccin-mocha-lavender.conf`
Qt colour scheme matching the Catppuccin Mocha palette.
- `qss/`
Extra styling via Qt Style Sheets.
- `qt5ct.conf`, `qt6ct.conf`
Main Qt configuration files for both Qt5 and Qt6, aligning fonts, colors and style.
---
## Neovim: `.config/nvim`
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/nvim.jpg width="600" alt="screenshot">
</img>
</p>
Neovim configuration built in Lua with a modern plugin stack:
- `init.lua`
Entry point that sets up Neovim and loads modules.
- `lua/config/`
Core configuration:
- `lazy.lua` for the Lazy plugin manager
- `maps.lua` for key mappings
- `markdown.lua` for markdown-related settings
- `lua/plugins/`
Plugin configuration files, one per plugin or group:
- `bufferline.lua`
- `catppuccin.lua`
- `cmp.lua`
- `colorscheme.lua`
- `filebrowser.lua`
- `gitsign.lua`
- `lsp.lua`
- `mini-icons.lua`
- `mini_map.lua`
- `neowiki.lua`
- `nvim-autopair.lua`
- `outline.lua`
- `render-markdown.lua`
- `starter.lua`
- `neo-tree.lua`
- `telescope.lua`
- `treesitter.lua`
- `ui.lua`
- `vim-fugitive.lua`
- `witch-key.lua` (which-key style helper)
- `nvim-tree.lua.old` (old configuration kept for reference)
- `lazy-lock.json`
Lockfile for Lazy to pin exact plugin versions.
- `assets/`
Screenshots and images for documentation (`nvim-starter.*`, `screen.jpg`).
- `LICENSE.md`, `readme.md`
Local documentation and license for the Neovim configuration.
This setup gives a modern, IDE-like Neovim experience with LSP, Treesitter, file browsing, git integration, markdown rendering and more.
---
## Kitty: `.config/kitty`
Kitty terminal configuration and themes:
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/kitty.jpg width="600" alt="screenshot">
</img>
</p>
- `kitty.conf`
Main Kitty configuration (fonts, window behavior, keybindings, etc.).
- `current-theme.conf`
Includes or defines the currently active theme.
- `kitty-themes/`
A full copy of the kitty-themes collection:
- `LICENSE.md`, `README.md`, `CONTRIBUTING.md`
- `themes/*.conf`
Hundreds of ready-to-use color schemes (Solarized, Dracula, Gruvbox, Monokai variants, Catppuccin-like themes, etc.).
This allows instant switching between many color schemes while defaulting to a Catppuccin-style dark theme.
---
## Snapper
Snapper is used here to manage Btrfs snapshots for the root filesystem.
Its main configuration for this setup lives in /etc/snapper/configs/root, where snapshot limits and cleanup rules are defined.
Together with grub-btrfs, this configuration is integrated into GRUB so that the created snapshots appear as additional boot entries in the GRUB menu and can be selected directly at startup.
---
## Other configs
Additional directories complete the environment:
- `.config/i3status-rust/`
Used by the Sway bar via `i3status.toml` (config content is referenced from Sways side).
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/i3s.jpg width="600" alt="screenshot">
</img>
</p>
- `.config/gtk-3.0/` and `.config/gtk-4.0/`
GTK settings and overrides for applications using GTK3/GTK4 (bookmarks, settings backups, etc.).
- `.config/fastfetch/config.jsonc`
Fastfetch configuration controlling system summary display in the terminal.
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/fastfetch.jpg width="600" alt="screenshot">
</img>
</p>
- `.config/eza/catppuccin-mocha-lavender.yml`
eza color theme file tuned to match Catppuccin Mocha.
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/eza.jpg width="600" alt="screenshot">
</img>
</p>
- `.config/cliphist/config`
Configuration for cliphist clipboard manager.
- `.config/calcure/`
Calcure TUI calendar and task manager configuration:
- `config.ini`
- `events.csv`
- `tasks.csv`
- `info.log`
- `.config/bat/themes/Catppuccin Mocha.tmTheme`
Bat syntax highlighting theme, again using Catppuccin Mocha.
<p align="center">
<img src=https://git.labfytools.com/fy59/Dotfiles_ArchAP/raw/branch/main/.assets/bat.jpg width="600" alt="screenshot">
</img>
</p>
---
## Installation (on existing system)
### YAY install
```shell
sudo pacman -S stow git base-devel
cd /tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
``` ```
### Git clone & themes install ### Scripts utilisateur
```shell Le dossier `~/.local/bin` contient plusieurs outils personnels, notamment :
yay -S catppuccin-cursors-mocha catppuccin-gtk-theme-mocha && git clone https://github.com/grayTerminal-sh/archasp.git
- gestion temporaire du seuil de charge de la batterie ;
- synchronisation Nextcloud à la demande ;
- lancement conjoint de Thunderbird et Proton Mail Bridge ;
- démarrage et arrêt à la demande de VMware et Samba ;
- notifications de batterie faible ;
- outils de maintenance Arch et AUR ;
- scripts liés à Sway, au presse-papiers et à la session Wayland.
### Services systemd utilisateur
Les unités présentes dans `.config/systemd/user/` permettent notamment de gérer :
- les notifications de batterie ;
- Cliphist ;
- GNOME Keyring ;
- lagent SSH ;
- Swayidle ;
- Wlsunset ;
- Proton Mail Bridge ;
- différents services propres à la session graphique.
Les services lourds ou occasionnels ne sont pas démarrés en permanence.
## Installation
Cloner le dépôt dans le dossier personnel :
```bash
git clone \
https://git.labfytools.com/fy59/Dotfiles_ArchAP.git \
"$HOME/Dotfiles_ArchAP"
cd "$HOME/Dotfiles_ArchAP"
``` ```
### Move dotfiles Avant tout déploiement, vérifier les liens qui seraient créés :
```shell ```bash
mkdir ~/.dotfiles && \ stow --no --verbose --target="$HOME" .
mv ~/archasp/* ~/.dotfiles && \
rm -r ~/archasp
``` ```
### Config backup Puis appliquer les dotfiles :
```shell ```bash
cd &&\ stow --verbose --target="$HOME" .
mkdir ~/.config/config_backup && \
mv ~/.config/atuin ~/.config/config_backup && \
mv ~/.config/bat ~/.config/config_backup && \
mv ~/.config/btop ~/.config/config_backup && \
mv ~/.config/calcure ~/.config/config_backup && \
mv ~/.config/cliphist ~/.config/config_backup && \
mv ~/.config/eza ~/.config/config_backup && \
mv ~/.config/fastfetch ~/.config/config_backup && \
mv ~/.config/gtk-3.0 ~/.config/config_backup && \
mv ~/.config/gtk-4.O ~/.config/config_backup && \
mv ~/.config/icons ~/.config/config_backup && \
mv ~/.config/kitty ~/.config/config_backup && \
mv ~/.config/nvim ~/.config/config_backup && \
mv ~/.config/qt5ct ~/.config/config_backup && \
mv ~/.config/qt6ct ~/.config/config_backup && \
mv ~/.config/starship ~/.config/config_backup && \
mv ~/.config/sway ~/.config/config_backup && \
mv ~/.config/swaylock ~/.config/config_backup && \
mv ~/.config/swaync ~/.config/config_backup && \
mv ~/.config/themes ~/.config/config_backup && \
mv ~/.config/wofi ~/.config/config_backup && \
mv ~/.config/yazi ~/.config/config_backup && \
mv ~/.config/zsh ~/.config/config_backup
``` ```
### Stow dotfiles & install packages En cas de conflit avec des fichiers existants, les sauvegarder ou les comparer avant de les remplacer.
```shell ## Recharger la configuration
cd ~/.dotfiles
Après une modification des unités systemd utilisateur :
```bash
systemctl --user daemon-reload
``` ```
```shell Pour réactiver les unités voulues :
stow *\
```bash
systemctl --user enable --now NOM.service
systemctl --user enable --now NOM.timer
``` ```
```shell Pour recharger Sway :
yay -S \
sway wofi i3status-rust kitty neovim zsh \ ```bash
starship fzf fd ripgrep eza fastfetch yazi bat \ swaymsg reload
cliphist calcure zoxide pyenv git \
gtk3 gtk4 catppuccin-gtk-theme-mocha \
catppuccin-cursors-mocha swaylock \
swayidle greetd greetd-tuigreet grim slurp \
snapper brtfs-progs grub-snapper uwsm \
autotiling atuin
``` ```
### greetd-tuigreet config ## Mise à jour du dépôt
--- Depuis le dépôt :
```toml
# /etc/greetd/config.toml
[terminal]
# The VT to run the greeter on. Can be "next", "current" or a number
# designating the VT.
vt = 1
# The default session, also known as the greeter.
[default_session]
command = "tuigreet --time --greeting 'Welcome to ArchASP' --theme 'container=brightblack;border=magenta;text=white;greet=brightmagenta;prompt=cyan;input=brightcyan;time=brightyellow;error=red;button=green;action=green' --cmd 'uwsm start default' --power-shutdown 'shutdown -h now' --power-reboot 'reboot'"
# The user to run the command as. The privileges this user must have depends
# on the greeter. A graphical greeter may for example require the user to be
# in the `video` group.
user = "greetd"
```bash
git status
git add -A
git commit -m "chore: update user configuration"
git push
``` ```
--- Les données sensibles ne doivent jamais être ajoutées au dépôt.
```shell Sont notamment exclus :
sudo systemctl enable --now greetd.service
```
### Snapper config - clés SSH ;
- mots de passe ;
- jetons daccès ;
- fichiers `.netrc` ;
- mots de passe dapplication ;
- clés WireGuard ;
- bases de données personnelles ;
- fichiers contenant des informations privées.
```shell ## Séparation avec `arch-system`
sudo snapper -c root create-config /\
sudo snapper -c root create-config /@
```
```shell | Dépôt | Responsabilité |
sudo systemctl enable --now grub-btrfsd.service grub-btrfs.path |---|---|
``` | [`Dotfiles_ArchAP`](https://git.labfytools.com/fy59/Dotfiles_ArchAP) | Configuration utilisateur, Sway, Neovim, Kitty, Zsh, scripts et unités systemd utilisateur |
| [`arch-system`](https://git.labfytools.com/fy59/arch-system) | Paquets, configuration système, Btrfs, Snapper, Limine, TLP, nftables, sudoers et helpers root |
```shell Cette séparation évite de mélanger les fichiers personnels avec les éléments propres à linstallation du système.
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
```config ## Avertissement
# /etc/snapper/configs/root
# subvolume to snapshot
SUBVOLUME="/"
# filesystem type Ces fichiers correspondent à mon matériel, mon utilisateur et mon organisation personnelle.
FSTYPE="btrfs"
Ils peuvent servir de référence, mais ne doivent pas être déployés tels quels sur une autre machine sans vérifier :
# btrfs qgroup for space aware cleanup algorithms - les chemins ;
QGROUP="" - le nom dutilisateur ;
- les écrans et périphériques ;
- les commandes disponibles ;
- les unités systemd ;
- les dépendances installées.
## Licence
# fraction or absolute size of the filesystems space the snapshots may use Configuration personnelle fournie sans garantie.
SPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be free
FREE_LIMIT="0.2"
# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="3600"
NUMBER_LIMIT="5"
NUMBER_LIMIT_IMPORTANT="1"
# create hourly snapshots
TIMELINE_CREATE="yes"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="3600"
TIMELINE_LIMIT_HOURLY="0"
TIMELINE_LIMIT_DAILY="3"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_QUARTERLY="0"
TIMELINE_LIMIT_YEARLY="0"
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="3600"
```