Compare commits
32 commits
f0d39800d6
...
7ed3f78c41
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ed3f78c41 | ||
|
|
41a6c5df2e | ||
|
|
960faa2d60 | ||
|
|
890fe92bab | ||
|
|
c993c233fd | ||
|
|
4be37d6118 | ||
|
|
7c7093b9cd | ||
|
|
fad850b76d | ||
|
|
ed3b8cddf3 | ||
|
|
de1a669d79 | ||
|
|
2e85cf8d43 | ||
|
|
f5918e4151 | ||
|
|
c83c2201ec | ||
|
|
edd90f8003 | ||
|
|
a7b1b877eb | ||
|
|
6d843133e7 | ||
|
|
5cdda1e86c | ||
|
|
109ca4f677 | ||
|
|
e56585414d | ||
|
|
0542d1b08a | ||
|
|
49683dd970 | ||
|
|
fc76a6278f | ||
|
|
f85dea2ede | ||
|
|
50cdf05a7d | ||
|
|
95ce9f00f1 | ||
|
|
79f56f47f2 | ||
|
|
4bdcc16092 | ||
|
|
c5bef5dcd0 | ||
|
|
f2b0849175 | ||
|
|
7ab1abfb21 | ||
|
|
62ee5c6e85 | ||
|
|
e4e7c447cd |
BIN
.assets/i3s.jpg
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 73 KiB |
BIN
.assets/yazi.jpg
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 806 KiB |
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
atuin/.local/share/
|
||||
hyprwhspr/.local/share/
|
||||
716
README.md
|
|
@ -1,621 +1,161 @@
|
|||
# ArchASP – Arch Sway Professor
|
||||
# Dotfiles ArchASP
|
||||
|
||||
<p align="center">
|
||||
<img src=https://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/screen.jpg width="600" height="400" alt="screenshot">
|
||||
</picture>
|
||||
Configurations utilisateur de mon poste principal sous **Arch Linux**, avec un environnement **Wayland / Sway**.
|
||||
|
||||
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
|
||||
- Terminal-first workflow with Sway and MangoWM, Neovim, Kitty
|
||||
- Catppuccin Mocha themed UI.
|
||||
- Cyber Learning
|
||||
## Environnement
|
||||
|
||||
**Goal** :
|
||||
all reproducible from a single install script and a GNU Stow‑managed dotfiles repo.
|
||||
<p>
|
||||
- Arch Linux
|
||||
- Sway
|
||||
- Wayland
|
||||
- Kitty
|
||||
- Zsh
|
||||
- Neovim
|
||||
- PipeWire / WirePlumber
|
||||
- systemd utilisateur
|
||||
- GNU Stow pour le déploiement des fichiers
|
||||
|
||||
[Installation Guide](#installation-on-existing-system)
|
||||
[Greetd/Regreet config](#regreet-config)
|
||||
[Snapper install & config](#snapper-config)
|
||||
## Contenu
|
||||
|
||||
## 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
|
||||
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)
|
||||
- [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)
|
||||
|
||||
---
|
||||
|
||||
## 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/yazi.jpg width="600" height="400" 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.
|
||||
- `flavors/tokyo-night.yazi/`
|
||||
Additional theme flavor based on Tokyo Night, with its own README, flavor definition and preview.
|
||||
|
||||
---
|
||||
|
||||
## 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/starship.jpg width="600" height="400" 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:
|
||||
- `cliphist-wofi-img` 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/nvim.jpg width="600" height="400" 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/kitty.jpg width="600" height="400" 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.
|
||||
|
||||
---
|
||||
|
||||
## wiki
|
||||
This wiki is my personal cybersecurity knowledge base.
|
||||
It centralizes course notes, lab write‑ups and reference material for networking, blue team and red team topics, so I can grow a coherent skill set over time instead of scattered notes.
|
||||
The structure is intentionally simple: foundations first, then focused sections for tools and defensive/offensive techniques, plus dedicated reference indexes to quickly jump back to key resources when needed.
|
||||
|
||||
All my notes live in a Neovim‑driven wiki.
|
||||
From a terminal session, I just launch:
|
||||
```shell
|
||||
nvim
|
||||
```
|
||||
and use
|
||||
```
|
||||
<leader>ww
|
||||
```
|
||||
to open my main index page, then navigate through Markdown links like a lightweight personal documentation site.
|
||||
|
||||
---
|
||||
|
||||
## Other configs
|
||||
|
||||
Additional directories complete the environment:
|
||||
|
||||
- `.config/i3status-rust/`
|
||||
Used by the Sway bar via `i3status.toml` (config content is referenced from Sway’s side).
|
||||
<p align="center">
|
||||
<img src=https://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/i3s.jpg width="600" height="400" 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/fastfetch.jpg width="600" height="400" 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/eza.jpg width="600" height="400" 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://raw.githubusercontent.com/grayTerminal-sh/archasp/main/.assets/bat.jpg width="600" height="400" 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
|
||||
.zshrc
|
||||
```
|
||||
|
||||
### Git clone & themes install
|
||||
### Scripts utilisateur
|
||||
|
||||
```shell
|
||||
yay -S catppuccin-cursors-mocha catppuccin-gtk-theme-mocha && git clone https://github.com/grayTerminal-sh/archasp.git
|
||||
```
|
||||
Le dossier `~/.local/bin` contient plusieurs outils personnels, notamment :
|
||||
|
||||
### Move dotfiles
|
||||
- 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.
|
||||
|
||||
```shell
|
||||
mkdir ~/.dotfiles &&\
|
||||
mv ~/archasp/* ~/.dotfiles &&\
|
||||
rm -r ~/archasp
|
||||
```
|
||||
### Services systemd utilisateur
|
||||
|
||||
### Config backup
|
||||
Les unités présentes dans `.config/systemd/user/` permettent notamment de gérer :
|
||||
|
||||
```shell
|
||||
cd &&\
|
||||
mkdir ~/.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/mango ~/.config/mango_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
|
||||
```
|
||||
- les notifications de batterie ;
|
||||
- Cliphist ;
|
||||
- GNOME Keyring ;
|
||||
- l’agent SSH ;
|
||||
- Swayidle ;
|
||||
- Wlsunset ;
|
||||
- Proton Mail Bridge ;
|
||||
- différents services propres à la session graphique.
|
||||
|
||||
### Stow dotfiles & install packages
|
||||
Les services lourds ou occasionnels ne sont pas démarrés en permanence.
|
||||
|
||||
```shell
|
||||
cd ~/.dotfiles
|
||||
```
|
||||
## Installation
|
||||
|
||||
```shell
|
||||
stow *\
|
||||
```
|
||||
|
||||
```shell
|
||||
yay -S \
|
||||
mangowm-git swayfx wofi i3status-rust kitty neovim zsh \
|
||||
starship fzf fd ripgrep eza fastfetch yazi bat \
|
||||
cliphist calcure zoxide pyenv git \
|
||||
gtk3 gtk4 catppuccin-gtk-theme-mocha \
|
||||
catppuccin-cursors-mocha swaylock-effects \
|
||||
swayidle greetd greetd-tuigreet grim slurp \
|
||||
snapper brtfs-progs grub-snapper
|
||||
```
|
||||
|
||||
### greetd-tuigreet config
|
||||
|
||||
---
|
||||
|
||||
```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 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 mango --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"
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```desktop
|
||||
# /usr/share/wayland-sessions/mango.desktop
|
||||
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Mango
|
||||
DesktopNames=mango;wlroots
|
||||
Comment=mango WM
|
||||
Exec=/home/fy59/.local/bin/mango-session.sh
|
||||
Icon=mango
|
||||
Type=Application
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```sh
|
||||
# /etc/greetd/sway-config
|
||||
|
||||
exec "regreet; swaymsg exit"
|
||||
include /etc/sway/config.d/*
|
||||
|
||||
### Keyboard (modify it)
|
||||
input * {
|
||||
xkb_layout fr
|
||||
xkb_variant oss
|
||||
}
|
||||
|
||||
### Touchpad
|
||||
input "type:touchpad" {
|
||||
tap enabled
|
||||
tap_button_map lrm
|
||||
}
|
||||
```
|
||||
---
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
|
||||
# .local/bin/mango-session.sh
|
||||
|
||||
systemctl --user start wayland-session.target
|
||||
exec mango
|
||||
```
|
||||
Cloner le dépôt dans le dossier personnel :
|
||||
|
||||
```bash
|
||||
chmod +x ~/.local/bin/mango-session.sh
|
||||
git clone \
|
||||
https://git.labfytools.com/fy59/Dotfiles_ArchAP.git \
|
||||
"$HOME/Dotfiles_ArchAP"
|
||||
|
||||
cd "$HOME/Dotfiles_ArchAP"
|
||||
```
|
||||
|
||||
---
|
||||
Avant tout déploiement, vérifier les liens qui seraient créés :
|
||||
|
||||
```shell
|
||||
sudo systemctl enable --now greetd.service
|
||||
```bash
|
||||
stow --no --verbose --target="$HOME" .
|
||||
```
|
||||
|
||||
### Snapper config
|
||||
Puis appliquer les dotfiles :
|
||||
|
||||
```shell
|
||||
sudo snapper -c root create-config /\
|
||||
sudo snapper -c root create-config /@
|
||||
```bash
|
||||
stow --verbose --target="$HOME" .
|
||||
```
|
||||
```shell
|
||||
sudo systemctl enable --now grub-btrfsd.service grub-btrfs.path
|
||||
|
||||
En cas de conflit avec des fichiers existants, les sauvegarder ou les comparer avant de les remplacer.
|
||||
|
||||
## Recharger la configuration
|
||||
|
||||
Après une modification des unités systemd utilisateur :
|
||||
|
||||
```bash
|
||||
systemctl --user daemon-reload
|
||||
```
|
||||
```shell
|
||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||
|
||||
Pour réactiver les unités voulues :
|
||||
|
||||
```bash
|
||||
systemctl --user enable --now NOM.service
|
||||
systemctl --user enable --now NOM.timer
|
||||
```
|
||||
```config
|
||||
# /etc/snapper/configs/root
|
||||
# subvolume to snapshot
|
||||
SUBVOLUME="/"
|
||||
|
||||
# filesystem type
|
||||
FSTYPE="btrfs"
|
||||
Pour recharger Sway :
|
||||
|
||||
|
||||
# btrfs qgroup for space aware cleanup algorithms
|
||||
QGROUP=""
|
||||
|
||||
|
||||
# fraction or absolute size of the filesystems space the snapshots may use
|
||||
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"
|
||||
```bash
|
||||
swaymsg reload
|
||||
```
|
||||
|
||||
## Mise à jour du dépôt
|
||||
|
||||
Depuis le dépôt :
|
||||
|
||||
```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.
|
||||
|
||||
Sont notamment exclus :
|
||||
|
||||
- clés SSH ;
|
||||
- mots de passe ;
|
||||
- jetons d’accès ;
|
||||
- fichiers `.netrc` ;
|
||||
- mots de passe d’application ;
|
||||
- clés WireGuard ;
|
||||
- bases de données personnelles ;
|
||||
- fichiers contenant des informations privées.
|
||||
|
||||
## Séparation avec `arch-system`
|
||||
|
||||
| Dépôt | Responsabilité |
|
||||
|---|---|
|
||||
| [`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 |
|
||||
|
||||
Cette séparation évite de mélanger les fichiers personnels avec les éléments propres à l’installation du système.
|
||||
|
||||
## Avertissement
|
||||
|
||||
Ces fichiers correspondent à mon matériel, mon utilisateur et mon organisation personnelle.
|
||||
|
||||
Ils peuvent servir de référence, mais ne doivent pas être déployés tels quels sur une autre machine sans vérifier :
|
||||
|
||||
- les chemins ;
|
||||
- le nom d’utilisateur ;
|
||||
- les écrans et périphériques ;
|
||||
- les commandes disponibles ;
|
||||
- les unités systemd ;
|
||||
- les dépendances installées.
|
||||
|
||||
## Licence
|
||||
|
||||
Configuration personnelle fournie sans garantie.
|
||||
|
|
|
|||
371
atuin/.config/atuin/config.toml
Normal file
|
|
@ -0,0 +1,371 @@
|
|||
## Base directory for Atuin data files (databases, keys, session, etc.)
|
||||
## All data file paths default to being relative to this directory.
|
||||
## linux/mac: ~/.local/share/atuin (or XDG_DATA_HOME/atuin)
|
||||
## windows: %USERPROFILE%/.local/share/atuin
|
||||
# data_dir = "~/.local/share/atuin"
|
||||
|
||||
## where to store your database, default is your system data directory
|
||||
## linux/mac: ~/.local/share/atuin/history.db
|
||||
## windows: %USERPROFILE%/.local/share/atuin/history.db
|
||||
# db_path = "~/.history.db"
|
||||
|
||||
## where to store your encryption key, default is your system data directory
|
||||
## linux/mac: ~/.local/share/atuin/key
|
||||
## windows: %USERPROFILE%/.local/share/atuin/key
|
||||
# key_path = "~/.key"
|
||||
|
||||
## where to store your auth session token, default is your system data directory
|
||||
## linux/mac: ~/.local/share/atuin/session
|
||||
## windows: %USERPROFILE%/.local/share/atuin/session
|
||||
# session_path = "~/.session"
|
||||
|
||||
## date format used, either "us" or "uk"
|
||||
# dialect = "us"
|
||||
|
||||
## default timezone to use when displaying time
|
||||
## either "l", "local" to use the system's current local timezone, or an offset
|
||||
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
|
||||
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
|
||||
# timezone = "local"
|
||||
|
||||
## enable or disable automatic sync
|
||||
# auto_sync = true
|
||||
|
||||
## enable or disable automatic update checks
|
||||
# update_check = true
|
||||
|
||||
## address of the sync server
|
||||
# sync_address = "https://api.atuin.sh"
|
||||
|
||||
## how often to sync history. note that this is only triggered when a command
|
||||
## is ran, so sync intervals may well be longer
|
||||
## set it to 0 to sync after every command
|
||||
# sync_frequency = "10m"
|
||||
|
||||
## which search mode to use
|
||||
## possible values: prefix, fulltext, fuzzy, skim
|
||||
# search_mode = "fuzzy"
|
||||
|
||||
## which filter mode to use by default
|
||||
## possible values: "global", "host", "session", "session-preload", "directory", "workspace"
|
||||
## consider using search.filters to customize the enablement and order of filter modes
|
||||
filter_mode = "global"
|
||||
|
||||
## With workspace filtering enabled, Atuin will filter for commands executed
|
||||
## in any directory within a git repository tree (default: false).
|
||||
##
|
||||
## To use workspace mode by default when available, set this to true and
|
||||
## set filter_mode to "workspace" or leave it unspecified and
|
||||
## set search.filters to include "workspace" before other filter modes.
|
||||
# workspaces = false
|
||||
|
||||
## which filter mode to use when atuin is invoked from a shell up-key binding
|
||||
## the accepted values are identical to those of "filter_mode"
|
||||
## leave unspecified to use same mode set in "filter_mode"
|
||||
# filter_mode_shell_up_key_binding = "global"
|
||||
|
||||
## which search mode to use when atuin is invoked from a shell up-key binding
|
||||
## the accepted values are identical to those of "search_mode"
|
||||
## leave unspecified to use same mode set in "search_mode"
|
||||
# search_mode_shell_up_key_binding = "fuzzy"
|
||||
|
||||
## which style to use
|
||||
## possible values: auto, full, compact
|
||||
style = "compact"
|
||||
|
||||
## the maximum number of lines the interface should take up
|
||||
## set it to 0 to always go full screen
|
||||
inline_height = 20
|
||||
|
||||
## the maximum number of lines the interface should take up
|
||||
## when atuin is invoked from a shell up-key binding
|
||||
## the accepted values are identical to those of "inline_height"
|
||||
# inline_height_shell_up_key_binding = 0
|
||||
|
||||
## Invert the UI - put the search bar at the top , Default to `false`
|
||||
# invert = false
|
||||
|
||||
## enable or disable showing a preview of the selected command
|
||||
## useful when the command is longer than the terminal width and is cut off
|
||||
show_preview = true
|
||||
|
||||
## what to do when the escape key is pressed when searching
|
||||
## possible values: return-original, return-query
|
||||
# exit_mode = "return-original"
|
||||
|
||||
## possible values: emacs, subl
|
||||
# word_jump_mode = "emacs"
|
||||
|
||||
## characters that count as a part of a word
|
||||
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
|
||||
## number of context lines to show when scrolling by pages
|
||||
# scroll_context_lines = 1
|
||||
|
||||
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
|
||||
## alt-0 .. alt-9
|
||||
# ctrl_n_shortcuts = false
|
||||
|
||||
## Show numeric shortcuts (1..9) beside list items in the TUI
|
||||
## set to false to hide the moving numbers if you find them distracting
|
||||
# show_numeric_shortcuts = true
|
||||
|
||||
## default history list format - can also be specified with the --format arg
|
||||
# history_format = "{time}\t{command}\t{duration}"
|
||||
|
||||
## Defaults to true. If enabled, strip trailing spaces and tabs from commands
|
||||
## before saving them to history.
|
||||
## Escaped trailing spaces (for example `printf foo\\ `) are preserved.
|
||||
# strip_trailing_whitespace = true
|
||||
|
||||
## prevent commands matching any of these regexes from being written to history.
|
||||
## Note that these regular expressions are unanchored, i.e. if they don't start
|
||||
## with ^ or end with $, they'll match anywhere in the command.
|
||||
## For details on the supported regular expression syntax, see
|
||||
## https://docs.rs/regex/latest/regex/#syntax
|
||||
# history_filter = [
|
||||
# "^secret-cmd",
|
||||
# "^innocuous-cmd .*--secret=.+",
|
||||
# ]
|
||||
|
||||
## prevent commands run with cwd matching any of these regexes from being written
|
||||
## to history. Note that these regular expressions are unanchored, i.e. if they don't
|
||||
## start with ^ or end with $, they'll match anywhere in CWD.
|
||||
## For details on the supported regular expression syntax, see
|
||||
## https://docs.rs/regex/latest/regex/#syntax
|
||||
# cwd_filter = [
|
||||
# "^/very/secret/area",
|
||||
# ]
|
||||
|
||||
## Configure the maximum height of the preview to show.
|
||||
## Useful when you have long scripts in your history that you want to distinguish
|
||||
## by more than the first few lines.
|
||||
# max_preview_height = 4
|
||||
|
||||
## Configure whether or not to show the help row, which includes the current Atuin
|
||||
## version (and whether an update is available), a keymap hint, and the total
|
||||
## amount of commands in your history.
|
||||
# show_help = true
|
||||
|
||||
## Configure whether or not to show tabs for search and inspect
|
||||
# show_tabs = true
|
||||
|
||||
## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
|
||||
## tab, such as Search or Inspector, and other tabs you may wish to see. This will
|
||||
## only be hidden if there are fewer than this count of lines available, and does not affect the use
|
||||
## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
|
||||
## This is ignored except in `compact` mode.
|
||||
# auto_hide_height = 8
|
||||
|
||||
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
|
||||
## 1. AWS key id
|
||||
## 2. Github pat (old and new)
|
||||
## 3. Slack oauth tokens (bot, user)
|
||||
## 4. Slack webhooks
|
||||
## 5. Stripe live/test keys
|
||||
# secrets_filter = true
|
||||
|
||||
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command,
|
||||
## whereas tab will put the command in the prompt for editing.
|
||||
## If set to false, both enter and tab will place the command in the prompt for editing.
|
||||
## This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
|
||||
enter_accept = true
|
||||
|
||||
## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line.
|
||||
# command_chaining = false
|
||||
|
||||
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
|
||||
## search`. If this is set to "auto", the startup keymap mode in the Atuin
|
||||
## search is automatically selected based on the shell's keymap where the
|
||||
## keybinding is defined. If this is set to "emacs", "vim-insert", or
|
||||
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
|
||||
## the specified one.
|
||||
# keymap_mode = "auto"
|
||||
|
||||
## Cursor style in each keymap mode. If specified, the cursor style is changed
|
||||
## in entering the cursor shape. Available values are "default" and
|
||||
## "{blink,steady}-{block,underline,bar}".
|
||||
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
|
||||
|
||||
# network_connect_timeout = 5
|
||||
# network_timeout = 5
|
||||
|
||||
## Timeout (in seconds) for acquiring a local database connection (sqlite)
|
||||
# local_timeout = 5
|
||||
|
||||
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
|
||||
## Alternatively, set env NO_MOTION=true
|
||||
# prefers_reduced_motion = false
|
||||
|
||||
[stats]
|
||||
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
|
||||
# common_subcommands = [
|
||||
# "apt",
|
||||
# "cargo",
|
||||
# "composer",
|
||||
# "dnf",
|
||||
# "docker",
|
||||
# "dotnet",
|
||||
# "git",
|
||||
# "go",
|
||||
# "ip",
|
||||
# "jj",
|
||||
# "kubectl",
|
||||
# "nix",
|
||||
# "nmcli",
|
||||
# "npm",
|
||||
# "pecl",
|
||||
# "pnpm",
|
||||
# "podman",
|
||||
# "port",
|
||||
# "systemctl",
|
||||
# "tmux",
|
||||
# "yarn",
|
||||
# ]
|
||||
|
||||
## Set commands that should be totally stripped and ignored from stats
|
||||
# common_prefix = ["sudo"]
|
||||
|
||||
## Set commands that will be completely ignored from stats
|
||||
# ignored_commands = [
|
||||
# "cd",
|
||||
# "ls",
|
||||
# "vi"
|
||||
# ]
|
||||
|
||||
[keys]
|
||||
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
|
||||
# scroll_exits = true
|
||||
|
||||
# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character
|
||||
# exit_past_line_start = true
|
||||
|
||||
# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
|
||||
# accept_past_line_end = true
|
||||
|
||||
# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
|
||||
# accept_past_line_start = false
|
||||
|
||||
# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line.
|
||||
# accept_with_backspace = false
|
||||
|
||||
[sync]
|
||||
# Enable sync v2 by default
|
||||
# This ensures that sync v2 is enabled for new installs only
|
||||
# In a later release it will become the default across the board
|
||||
records = true
|
||||
|
||||
[preview]
|
||||
## which preview strategy to use to calculate the preview height (respects max_preview_height).
|
||||
## possible values: auto, static
|
||||
## auto: length of the selected command.
|
||||
## static: length of the longest command stored in the history.
|
||||
## fixed: use max_preview_height as fixed height.
|
||||
# strategy = "auto"
|
||||
|
||||
[daemon]
|
||||
## Enables using the daemon to sync.
|
||||
# enabled = false
|
||||
|
||||
## Automatically start and manage the daemon when needed.
|
||||
## Not compatible with `systemd_socket = true`.
|
||||
# autostart = false
|
||||
|
||||
## How often the daemon should sync in seconds
|
||||
# sync_frequency = 300
|
||||
|
||||
## The path to the unix socket used by the daemon (on unix systems)
|
||||
## linux/mac: ~/.local/share/atuin/atuin.sock
|
||||
## windows: Not Supported
|
||||
# socket_path = "~/.local/share/atuin/atuin.sock"
|
||||
|
||||
## The daemon pidfile used for lifecycle management.
|
||||
## Defaults to the Atuin data directory.
|
||||
# pidfile_path = "~/.local/share/atuin/atuin-daemon.pid"
|
||||
|
||||
## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
|
||||
## linux: false
|
||||
## mac/windows: Not Supported
|
||||
# systemd_socket = false
|
||||
|
||||
## The port that should be used for TCP on non unix systems
|
||||
# tcp_port = 8889
|
||||
|
||||
# [theme]
|
||||
## Color theme to use for rendering in the terminal.
|
||||
## There are some built-in themes, including the base theme ("default"),
|
||||
## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
|
||||
## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
|
||||
## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
|
||||
## the string values as lowercase entries from this list:
|
||||
## https://ogeon.github.io/docs/palette/master/palette/named/index.html
|
||||
## If you provide a custom theme file, it should be called "NAME.toml" and the theme below
|
||||
## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
|
||||
name = "catppuccin"
|
||||
|
||||
## Whether the theme manager should output normal or extra information to help fix themes.
|
||||
## Boolean, true or false. If unset, left up to the theme manager.
|
||||
# debug = true
|
||||
|
||||
[search]
|
||||
## The list of enabled filter modes, in order of priority.
|
||||
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
|
||||
## Default filter mode can be overridden with the filter_mode setting.
|
||||
# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]
|
||||
|
||||
[tmux]
|
||||
## Enable using atuin with tmux popup (requires tmux >= 3.2)
|
||||
## When enabled and running inside tmux, Atuin will use a popup window for interactive search.
|
||||
## Set to false to disable the popup.
|
||||
## This can also be controlled with the ATUIN_TMUX_POPUP environment variable.
|
||||
## Note: The tmux popup is currently supported in zsh, bash, and fish shells. This currently doesn't work with iTerm native tmux integration.
|
||||
# enabled = false
|
||||
|
||||
## Width of the tmux popup window
|
||||
## Can be a percentage, or integer (e.g. "100" means 100 characters wide)
|
||||
# width = "80%"
|
||||
|
||||
## Height of the tmux popup window
|
||||
## Can be a percentage, or integer (e.g. "100" means 100 lines tall)
|
||||
# height = "60%"
|
||||
|
||||
[ui]
|
||||
## Columns to display in the interactive search, from left to right.
|
||||
## The selection indicator (" > ") is always shown first implicitly.
|
||||
##
|
||||
## Each column can be specified as a simple string (uses default width)
|
||||
## or as an object with type, width, and expand:
|
||||
## { type = "directory", width = 30, expand = true }
|
||||
##
|
||||
## Available column types (with default widths):
|
||||
## duration (5) - Command execution duration (e.g., "123ms")
|
||||
## time (8) - Relative time since execution (e.g., "59m ago")
|
||||
## datetime (16) - Absolute timestamp (e.g., "2025-01-22 14:35")
|
||||
## directory (20) - Working directory (truncated if too long)
|
||||
## host (15) - Hostname where command was run
|
||||
## user (10) - Username
|
||||
## exit (3) - Exit code (colored by success/failure)
|
||||
## command (*) - The command itself (expands by default)
|
||||
##
|
||||
## The "expand" option (default: true for command, false for others) makes a
|
||||
## column fill remaining space. Only one column should have expand = true.
|
||||
##
|
||||
## Default:
|
||||
# columns = ["duration", "time", "command"]
|
||||
##
|
||||
## Examples:
|
||||
##
|
||||
## Minimal - more space for commands:
|
||||
# columns = ["duration", "command"]
|
||||
##
|
||||
## With wider directory column:
|
||||
# columns = ["duration", { type = "directory", width = 30 }, "command"]
|
||||
##
|
||||
## Show host for multi-machine sync users:
|
||||
# columns = ["duration", "time", "host", "command"]
|
||||
##
|
||||
## Show exit codes prominently:
|
||||
# columns = ["exit", "duration", "command"]
|
||||
##
|
||||
## Make directory expand instead of command:
|
||||
# columns = ["duration", "time", { type = "directory", expand = true }, { type = "command", expand = false }]
|
||||
12
atuin/.config/atuin/themes/catppuccin.toml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[theme]
|
||||
name = "catppuccin"
|
||||
|
||||
[colors]
|
||||
AlertInfo = "#a6e3a1"
|
||||
AlertWarn = "#fab387"
|
||||
AlertError = "#f38ba8"
|
||||
Annotation = "#b4befe"
|
||||
Base = "#cdd6f4"
|
||||
Guidance = "#9399b2"
|
||||
Important = "#f38ba8"
|
||||
Title = "#b4befe"
|
||||
BIN
bin/.local/bin/agy
Executable file
3
bin/.local/bin/appid
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
sleep 3
|
||||
mmsg -g -c | sed 's/^/title|appid: /'
|
||||
124
bin/.local/bin/aurinstall
Executable file
|
|
@ -0,0 +1,124 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
AUR_DIR="$HOME/Aur"
|
||||
EDITOR_CMD="${EDITOR:-nvim}"
|
||||
|
||||
ASK_EDIT=0
|
||||
FORCE_EDIT=0
|
||||
DOWNLOAD_ONLY=0
|
||||
|
||||
while getopts ":eEd" opt; do
|
||||
case "$opt" in
|
||||
e) ASK_EDIT=1 ;;
|
||||
E) FORCE_EDIT=1 ;;
|
||||
d) DOWNLOAD_ONLY=1 ;;
|
||||
*)
|
||||
echo "Usage: aurinstall [-e|-E] [-d] <paquet1> [paquet2 ...]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
RED='\033[1;31m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
CYAN='\033[1;36m'
|
||||
|
||||
info() { printf "${BLUE}==>${RESET} %s\n" "$1"; }
|
||||
ok() { printf "${GREEN}==>${RESET} %s\n" "$1"; }
|
||||
warn() { printf "${YELLOW}==>${RESET} %s\n" "$1"; }
|
||||
error() { printf "${RED}==>${RESET} %s\n" "$1"; }
|
||||
section() { printf "\n${CYAN}${BOLD}>>> %s${RESET}\n" "$1"; }
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
error "Usage: aurinstall [-e|-E] [-d] <paquet1> [paquet2 ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$AUR_DIR"
|
||||
|
||||
if [[ "$DOWNLOAD_ONLY" -eq 0 ]]; then
|
||||
sudo -v || exit 1
|
||||
while true; do
|
||||
sudo -n true || exit
|
||||
sleep 30
|
||||
done 2>/dev/null &
|
||||
SUDO_LOOP_PID=$!
|
||||
trap 'kill "$SUDO_LOOP_PID" 2>/dev/null' EXIT INT TERM
|
||||
fi
|
||||
|
||||
for pkg in "$@" ; do
|
||||
section "$pkg"
|
||||
cd "$AUR_DIR" || exit 1
|
||||
|
||||
if [[ "$DOWNLOAD_ONLY" -eq 0 ]] && pacman -Q "$pkg" >/dev/null 2>&1; then
|
||||
warn "$pkg est déjà installé, on passe."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -d "$pkg/.git" ]]; then
|
||||
warn "$pkg déjà cloné, utilisation du dossier existant"
|
||||
cd "$pkg" || { error "Impossible d'entrer dans $pkg"; continue; }
|
||||
|
||||
pull_output=$(git pull --ff-only 2>&1) || {
|
||||
error "git pull failed pour $pkg"
|
||||
cd "$AUR_DIR" || exit 1
|
||||
continue
|
||||
}
|
||||
printf "%s\n" "$pull_output"
|
||||
else
|
||||
info "Clonage de $pkg"
|
||||
if ! git clone "https://aur.archlinux.org/${pkg}.git"; then
|
||||
error "Impossible de cloner $pkg"
|
||||
continue
|
||||
fi
|
||||
cd "$pkg" || { error "Impossible d'entrer dans $pkg"; continue; }
|
||||
fi
|
||||
|
||||
if [[ "$FORCE_EDIT" -eq 1 ]]; then
|
||||
info "Ouverture de PKGBUILD et .SRCINFO dans $EDITOR_CMD"
|
||||
"$EDITOR_CMD" PKGBUILD .SRCINFO
|
||||
elif [[ "$ASK_EDIT" -eq 1 || "$DOWNLOAD_ONLY" -eq 1 ]]; then
|
||||
printf "${YELLOW}Éditer PKGBUILD/.SRCINFO pour %s ? [y/N] ${RESET}" "$pkg"
|
||||
read -r ans
|
||||
if [[ "$ans" == "y" || "$ans" == "Y" ]]; then
|
||||
"$EDITOR_CMD" PKGBUILD .SRCINFO
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$DOWNLOAD_ONLY" -eq 1 ]]; then
|
||||
ok "$pkg prêt pour audit dans $AUR_DIR/$pkg"
|
||||
continue
|
||||
fi
|
||||
|
||||
info "Vérifie au minimum source=(), checksums, prepare()/build()/package() et validpgpkeys si présents"
|
||||
rm -f ./*.pkg.tar ./*.pkg.tar.*
|
||||
|
||||
if ! makepkg -sf; then
|
||||
error "Build failed pour $pkg"
|
||||
cd "$AUR_DIR" || exit 1
|
||||
continue
|
||||
fi
|
||||
|
||||
pkgfile=$(find . -maxdepth 1 -type f \( -name '*.pkg.tar' -o -name '*.pkg.tar.*' \) ! -name '*.sig' | head -n1 || true)
|
||||
echo "DEBUG: pkgfile='$pkgfile'"
|
||||
if [[ -z "$pkgfile" ]]; then
|
||||
error "Aucun paquet généré pour $pkg"
|
||||
cd "$AUR_DIR" || exit 1
|
||||
continue
|
||||
fi
|
||||
|
||||
info "Installation de $pkgfile"
|
||||
if ! sudo pacman -U --noconfirm "$pkgfile"; then
|
||||
error "Install failed pour $pkg"
|
||||
cd "$AUR_DIR" || exit 1
|
||||
continue
|
||||
fi
|
||||
|
||||
ok "$pkg installé avec succès"
|
||||
done
|
||||
59
bin/.local/bin/aurremove
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
AUR_DIR="$HOME/Aur"
|
||||
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
RED='\033[1;31m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
CYAN='\033[1;36m'
|
||||
|
||||
info() { printf "${BLUE}==>${RESET} %s\n" "$1"; }
|
||||
ok() { printf "${GREEN}==>${RESET} %s\n" "$1"; }
|
||||
warn() { printf "${YELLOW}==>${RESET} %s\n" "$1"; }
|
||||
error() { printf "${RED}==>${RESET} %s\n" "$1"; }
|
||||
section() { printf "\n${CYAN}${BOLD}>>> %s${RESET}\n" "$1"; }
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
error "Usage: aurremove <paquet1> [paquet2 ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -v || exit 1
|
||||
while true; do
|
||||
sudo -n true || exit
|
||||
sleep 30
|
||||
done 2>/dev/null &
|
||||
SUDO_LOOP_PID=$!
|
||||
trap 'kill "$SUDO_LOOP_PID" 2>/dev/null' EXIT INT TERM
|
||||
|
||||
for pkg in "$@" ; do
|
||||
section "$pkg"
|
||||
|
||||
if ! pacman -Q "$pkg" >/dev/null 2>&1; then
|
||||
warn "$pkg n'est pas installé"
|
||||
continue
|
||||
fi
|
||||
|
||||
info "Désinstallation de $pkg"
|
||||
if ! sudo pacman -Rns "$pkg"; then
|
||||
error "Échec de suppression pour $pkg"
|
||||
continue
|
||||
fi
|
||||
|
||||
ok "$pkg supprimé du système"
|
||||
|
||||
if [[ -d "$AUR_DIR/$pkg" ]]; then
|
||||
printf "${YELLOW}Supprimer aussi le dossier %s ? [y/N] ${RESET}" "$AUR_DIR/$pkg"
|
||||
read -r ans
|
||||
if [[ "$ans" == "y" || "$ans" == "Y" ]]; then
|
||||
rm -rf "$AUR_DIR/$pkg"
|
||||
ok "Dossier $AUR_DIR/$pkg supprimé"
|
||||
else
|
||||
warn "Dossier conservé : $AUR_DIR/$pkg"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
155
bin/.local/bin/aursearch
Executable file
|
|
@ -0,0 +1,155 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
RPC_BASE="https://aur.archlinux.org/rpc/?v=5"
|
||||
SEARCH_BY="name-desc"
|
||||
DETAILS=0
|
||||
QUIET=0
|
||||
LIMIT=10
|
||||
SORT_BY="popularity"
|
||||
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
RED='\033[1;31m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
CYAN='\033[1;36m'
|
||||
|
||||
info() { printf "${BLUE}==>${RESET} %s\n" "$1"; }
|
||||
ok() { printf "${GREEN}==>${RESET} %s\n" "$1"; }
|
||||
warn() { printf "${YELLOW}==>${RESET} %s\n" "$1"; }
|
||||
error() { printf "${RED}==>${RESET} %s\n" "$1" >&2; }
|
||||
section() { printf "\n${CYAN}${BOLD}>>> %s${RESET}\n" "$1"; }
|
||||
|
||||
die() {
|
||||
error "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
Usage: aursearch [options] <recherche>
|
||||
|
||||
Options:
|
||||
-n rechercher seulement dans le nom
|
||||
-m rechercher par mainteneur
|
||||
-d afficher les détails complets
|
||||
-q afficher seulement les noms des paquets
|
||||
-l N limiter le nombre de résultats (défaut : 10)
|
||||
-s mode trier par : popularity | votes | name | modified | submitted
|
||||
-h afficher cette aide
|
||||
|
||||
Exemples:
|
||||
aursearch proton
|
||||
aursearch -n sway
|
||||
aursearch -m Eschwartz
|
||||
aursearch -d rustdesk
|
||||
aursearch -q -l 20 python
|
||||
USAGE
|
||||
}
|
||||
|
||||
require_cmd() {
|
||||
command -v "$1" >/dev/null 2>&1 || die "Commande requise manquante : $1"
|
||||
}
|
||||
|
||||
while getopts ":nmdql:s:h" opt; do
|
||||
case "$opt" in
|
||||
n) SEARCH_BY="name" ;;
|
||||
m) SEARCH_BY="maintainer" ;;
|
||||
d) DETAILS=1 ;;
|
||||
q) QUIET=1 ;;
|
||||
l)
|
||||
[[ "$OPTARG" =~ ^[0-9]+$ ]] || die "-l attend un entier"
|
||||
LIMIT="$OPTARG"
|
||||
;;
|
||||
s)
|
||||
case "$OPTARG" in
|
||||
popularity|votes|name|modified|submitted) SORT_BY="$OPTARG" ;;
|
||||
*) die "Mode de tri invalide : $OPTARG" ;;
|
||||
esac
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
[[ $# -ge 1 ]] || {
|
||||
usage
|
||||
exit 1
|
||||
}
|
||||
|
||||
require_cmd curl
|
||||
require_cmd jq
|
||||
|
||||
query="$*"
|
||||
encoded_query=$(printf '%s' "$query" | jq -sRr @uri)
|
||||
url="${RPC_BASE}&type=search&by=${SEARCH_BY}&arg=${encoded_query}"
|
||||
|
||||
json=$(curl -fsSL "$url") || die "Échec de requête vers l'AUR"
|
||||
count=$(jq '.resultcount // 0' <<< "$json")
|
||||
|
||||
if (( count == 0 )); then
|
||||
warn "Aucun résultat pour : $query"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
sorted=$(jq --arg sort "$SORT_BY" '
|
||||
.results
|
||||
| if $sort == "name" then sort_by(.Name)
|
||||
elif $sort == "votes" then sort_by(.NumVotes // 0) | reverse
|
||||
elif $sort == "submitted" then sort_by(.FirstSubmitted // 0) | reverse
|
||||
elif $sort == "modified" then sort_by(.LastModified // 0) | reverse
|
||||
else sort_by(.Popularity // 0) | reverse
|
||||
end
|
||||
' <<< "$json")
|
||||
|
||||
limited=$(jq --argjson limit "$LIMIT" '.[0:$limit]' <<< "$sorted")
|
||||
shown=$(jq 'length' <<< "$limited")
|
||||
|
||||
if (( QUIET == 1 )); then
|
||||
jq -r '.[].Name' <<< "$limited"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
info "$count résultat(s) trouvé(s), affichage de $shown entrée(s)"
|
||||
|
||||
if (( DETAILS == 1 )); then
|
||||
jq -r '
|
||||
.[] |
|
||||
"\(.Name)\n" +
|
||||
" Version : \(.Version // "?")\n" +
|
||||
" Votes : \(.NumVotes // 0)\n" +
|
||||
" Popularité : \(.Popularity // 0)\n" +
|
||||
" Mainteneur : \(.Maintainer // "orphan")\n" +
|
||||
" Soumis le : \(.FirstSubmitted // 0 | strftime("%Y-%m-%d %H:%M"))\n" +
|
||||
" Modifié le : \(.LastModified // 0 | strftime("%Y-%m-%d %H:%M"))\n" +
|
||||
" Hors date : \(if .OutOfDate then "yes" else "no" end)\n" +
|
||||
" URL AUR : https://aur.archlinux.org/packages/\(.Name)\n" +
|
||||
" Description : \(.Description // "")\n"
|
||||
' <<< "$limited"
|
||||
else
|
||||
jq -r '
|
||||
.[] |
|
||||
[
|
||||
.Name,
|
||||
(.Version // "?"),
|
||||
((.NumVotes // 0) | tostring),
|
||||
((.Popularity // 0) | tostring),
|
||||
(.Maintainer // "orphan")
|
||||
] | @tsv
|
||||
' <<< "$limited" | awk 'BEGIN {
|
||||
printf "%-32s %-22s %-8s %-12s %-20s\n", "Nom", "Version", "Votes", "Popularité", "Mainteneur";
|
||||
printf "%-32s %-22s %-8s %-12s %-20s\n", "--------------------------------", "----------------------", "--------", "------------", "--------------------";
|
||||
}
|
||||
{
|
||||
printf "%-32s %-22s %-8s %-12s %-20s\n", $1, $2, $3, $4, $5;
|
||||
}'
|
||||
fi
|
||||
194
bin/.local/bin/aurupdate
Executable file
|
|
@ -0,0 +1,194 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
AUR_DIR="${AUR_DIR:-$HOME/Aur}"
|
||||
END_UPDATE="Mis à jour avec succès ;p."
|
||||
SYSTEM_NAME="$(cat /etc/hostname 2>/dev/null || echo "unknown")"
|
||||
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
RED='\033[1;31m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
CYAN='\033[1;36m'
|
||||
|
||||
info() { printf "${BLUE}==>${RESET} %s\n" "$1"; }
|
||||
ok() { printf "${GREEN}==>${RESET} %s\n" "$1"; }
|
||||
warn() { printf "${YELLOW}==>${RESET} %s\n" "$1"; }
|
||||
error() { printf "${RED}==>${RESET} %s\n" "$1"; }
|
||||
section() { printf "\n${CYAN}${BOLD}>>> %s${RESET}\n" "$1"; }
|
||||
|
||||
[[ -d "$AUR_DIR" ]] || {
|
||||
error "Répertoire AUR introuvable : $AUR_DIR"
|
||||
exit 1
|
||||
}
|
||||
|
||||
sudo -v || exit 1
|
||||
while true; do
|
||||
sudo -n true || exit
|
||||
sleep 30
|
||||
done 2>/dev/null &
|
||||
SUDO_LOOP_PID=$!
|
||||
trap 'kill "$SUDO_LOOP_PID" 2>/dev/null' EXIT INT TERM
|
||||
|
||||
cd "$AUR_DIR" || exit 1
|
||||
|
||||
shopt -s nullglob
|
||||
repos=(*/)
|
||||
shopt -u nullglob
|
||||
|
||||
if [[ ${#repos[@]} -eq 0 ]]; then
|
||||
warn "Aucun dépôt AUR dans $AUR_DIR"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
declare -a outdated_repos=()
|
||||
|
||||
audit_repo() {
|
||||
local repo="$1"
|
||||
local branch upstream local_rev remote_rev base_rev
|
||||
|
||||
cd "$AUR_DIR/$repo" || return 1
|
||||
|
||||
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
error "$repo n'est pas un dépôt git valide"
|
||||
return 1
|
||||
fi
|
||||
|
||||
branch=$(git symbolic-ref --quiet --short HEAD 2>/dev/null || true)
|
||||
[[ -n "$branch" ]] || {
|
||||
warn "$repo : HEAD détachée, ignoré"
|
||||
return 1
|
||||
}
|
||||
|
||||
if ! git remote update --prune >/dev/null 2>&1; then
|
||||
error "Impossible de contacter le remote pour $repo"
|
||||
return 1
|
||||
fi
|
||||
|
||||
upstream=$(git rev-parse --abbrev-ref --symbolic-full-name '@{u}' 2>/dev/null || true)
|
||||
[[ -n "$upstream" ]] || upstream="origin/$branch"
|
||||
|
||||
local_rev=$(git rev-parse HEAD 2>/dev/null || true)
|
||||
remote_rev=$(git rev-parse "$upstream" 2>/dev/null || true)
|
||||
base_rev=$(git merge-base HEAD "$upstream" 2>/dev/null || true)
|
||||
|
||||
if [[ -z "$remote_rev" || -z "$local_rev" || -z "$base_rev" ]]; then
|
||||
error "Impossible de comparer $repo avec $upstream"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ "$local_rev" == "$remote_rev" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ "$local_rev" != "$base_rev" ]]; then
|
||||
warn "$repo a des commits locaux non poussés, ignoré"
|
||||
return 1
|
||||
fi
|
||||
|
||||
outdated_repos+=("$repo")
|
||||
return 0
|
||||
}
|
||||
|
||||
ask_update() {
|
||||
local repo="$1"
|
||||
while true; do
|
||||
printf "${YELLOW}Mettre à jour %s ? [y/N/q] ${RESET}" "$repo"
|
||||
read -r ans
|
||||
case "$ans" in
|
||||
y|Y) return 0 ;;
|
||||
n|N|"") return 1 ;;
|
||||
q|Q) return 2 ;;
|
||||
*) warn "Réponse invalide, utilise y, n ou q" ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
info "Scan des dépôts AUR..."
|
||||
for d in "${repos[@]}"; do
|
||||
repo="${d%/}"
|
||||
audit_repo "$repo" || true
|
||||
done
|
||||
|
||||
if [[ ${#outdated_repos[@]} -eq 0 ]]; then
|
||||
ok "Aucune mise à jour AUR détectée"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
section "Mises à jour détectées"
|
||||
for repo in "${outdated_repos[@]}"; do
|
||||
cd "$AUR_DIR/$repo" || continue
|
||||
upstream=$(git rev-parse --abbrev-ref --symbolic-full-name '@{u}' 2>/dev/null || echo "origin/HEAD")
|
||||
printf "${YELLOW}- %s${RESET}\n" "$repo"
|
||||
git --no-pager log --oneline --decorate HEAD.."$upstream" | sed 's/^/ /'
|
||||
done
|
||||
|
||||
declare -a selected_repos=()
|
||||
|
||||
section "Sélection"
|
||||
for repo in "${outdated_repos[@]}"; do
|
||||
if ask_update "$repo"; then
|
||||
selected_repos+=("$repo")
|
||||
else
|
||||
rc=$?
|
||||
if [[ $rc -eq 2 ]]; then
|
||||
warn "Sélection interrompue"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#selected_repos[@]} -eq 0 ]]; then
|
||||
warn "Aucun paquet sélectionné"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
section "Paquets sélectionnés"
|
||||
for repo in "${selected_repos[@]}"; do
|
||||
printf "${GREEN}- %s${RESET}\n" "$repo"
|
||||
done
|
||||
|
||||
for repo in "${selected_repos[@]}"; do
|
||||
cd "$AUR_DIR/$repo" || continue
|
||||
section "$repo"
|
||||
|
||||
info "Récupération des changements"
|
||||
if ! git pull --ff-only; then
|
||||
error "git pull failed for $repo"
|
||||
continue
|
||||
fi
|
||||
|
||||
info "Vérifie au minimum PKGBUILD, sources, checksums et fonctions de build"
|
||||
rm -f ./*.pkg.tar.*
|
||||
|
||||
if ! makepkg -sf; then
|
||||
error "Build failed for $repo"
|
||||
continue
|
||||
fi
|
||||
|
||||
pkgfile=$(find . -maxdepth 1 -type f -name '*.pkg.tar.*' ! -name '*.sig' | head -n1 || true)
|
||||
if [[ -z "$pkgfile" ]]; then
|
||||
error "Aucun paquet trouvé pour $repo"
|
||||
continue
|
||||
fi
|
||||
|
||||
info "Installation de $pkgfile"
|
||||
if ! sudo pacman -U --noconfirm "$pkgfile"; then
|
||||
error "Install failed for $repo"
|
||||
continue
|
||||
fi
|
||||
|
||||
ok "$repo installé avec succès"
|
||||
done
|
||||
|
||||
printf "\n"
|
||||
if command -v figlet >/dev/null 2>&1; then
|
||||
figlet -f slant "$SYSTEM_NAME" | while IFS= read -r line; do
|
||||
printf "${GREEN}%s${RESET}\n" "$line"
|
||||
done
|
||||
printf "${GREEN}%s${RESET}\n" "$END_UPDATE"
|
||||
else
|
||||
printf "${GREEN}%s : %s${RESET}\n" "$SYSTEM_NAME" "$END_UPDATE"
|
||||
fi
|
||||
39
bin/.local/bin/batlimit
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readonly BATTERY="BAT1"
|
||||
readonly THRESHOLD_FILE="/sys/class/power_supply/${BATTERY}/charge_control_end_threshold"
|
||||
readonly CAPACITY_FILE="/sys/class/power_supply/${BATTERY}/capacity"
|
||||
readonly STATUS_FILE="/sys/class/power_supply/${BATTERY}/status"
|
||||
readonly HELPER="/usr/local/sbin/batlimit-set"
|
||||
|
||||
if [[ ! -e "$THRESHOLD_FILE" ]]; then
|
||||
echo "Erreur : aucun seuil de charge disponible pour ${BATTERY}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -rp "Niveau max de charge voulu [%] : " STOP
|
||||
|
||||
if [[ ! "$STOP" =~ ^[0-9]+$ ]]; then
|
||||
echo "Erreur : entre un nombre entier."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if (( STOP < 40 || STOP > 100 )); then
|
||||
echo "Erreur : choisis une valeur entre 40 et 100."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! sudo -n "$HELPER" "$STOP"; then
|
||||
echo "Erreur : impossible d’appliquer le seuil."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CURRENT_THRESHOLD=$(<"$THRESHOLD_FILE")
|
||||
|
||||
echo
|
||||
echo "Batterie : ${BATTERY}"
|
||||
echo "Seuil appliqué : ${CURRENT_THRESHOLD}%"
|
||||
echo "Charge actuelle : $(<"$CAPACITY_FILE")%"
|
||||
echo "État : $(<"$STATUS_FILE")"
|
||||
20
bin/.local/bin/battery-low-notify.sh
Executable file
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
BAT="BAT1"
|
||||
THRESHOLD=20
|
||||
STATE_FILE="${XDG_RUNTIME_DIR:-/tmp}/battery-low-notified"
|
||||
|
||||
capacity=$(cat /sys/class/power_supply/$BAT/capacity 2>/dev/null)
|
||||
bat_status=$(cat /sys/class/power_supply/$BAT/status 2>/dev/null)
|
||||
|
||||
[ -z "$capacity" ] && exit 0
|
||||
[ -z "$bat_status" ] && exit 0
|
||||
|
||||
if [ "$bat_status" = "Discharging" ] && [ "$capacity" -le "$THRESHOLD" ]; then
|
||||
if [ ! -f "$STATE_FILE" ]; then
|
||||
notify-send -u critical -t 10000 "Batterie faible" "Batterie à ${capacity}% — branche le chargeur."
|
||||
touch "$STATE_FILE"
|
||||
fi
|
||||
else
|
||||
rm -f "$STATE_FILE"
|
||||
fi
|
||||
4
bin/.local/bin/cliphist-daemon.sh
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
wl-paste --type text --watch cliphist store &
|
||||
wl-paste --type image --watch cliphist store &
|
||||
wait
|
||||
21
bin/.local/bin/dcnvim
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
PROJECT_DIR="$(pwd)"
|
||||
|
||||
devcontainer up --workspace-folder "$PROJECT_DIR" >/dev/null
|
||||
|
||||
CONTAINER_ID="$(
|
||||
docker ps -q \
|
||||
--filter "label=devcontainer.local_folder=$PROJECT_DIR"
|
||||
)"
|
||||
|
||||
if [ -z "$CONTAINER_ID" ]; then
|
||||
echo "Aucun conteneur trouvé"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export DEVCONTAINER_ID="$CONTAINER_ID"
|
||||
|
||||
nvim "$@"
|
||||
3
bin/.local/bin/i3s_restart
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
pkill i3status-rs
|
||||
i3status-rs ~/.config/i3status-rust/config.toml &
|
||||
10
bin/.local/bin/kitty-ssh-add.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
cd "$HOME"
|
||||
|
||||
# lance ssh-add dans ce kitty
|
||||
ssh-add "$HOME/.ssh/id_ed25519-admin"
|
||||
|
||||
# quand c'est fini, on lance un shell interactif normal
|
||||
exec zsh
|
||||
1
bin/.local/bin/llama-cli
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.local/src/llama.cpp/build/bin/llama-cli
|
||||
1
bin/.local/bin/llama-server
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.local/src/llama.cpp/build/bin/llama-server
|
||||
2
bin/.local/bin/mango-screenshot-clipboard.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
grim -g "$(slurp)" - | wl-copy -t image/png
|
||||
3
bin/.local/bin/mango-session.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
systemctl --user start graphical-session.target || true
|
||||
exec mango
|
||||
58
bin/.local/bin/nextcloud-sync
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -u
|
||||
|
||||
readonly LOCAL_DIR="$HOME/Documents"
|
||||
readonly SERVER_URL="https://cloud.labfytools.com"
|
||||
readonly LOG_DIR="$HOME/.local/state/nextcloud"
|
||||
readonly LOG_FILE="$LOG_DIR/sync.log"
|
||||
readonly LOCK_FILE="${XDG_RUNTIME_DIR:-/tmp}/nextcloud-sync.lock"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
# Empêche deux synchronisations simultanées.
|
||||
exec 9>"$LOCK_FILE"
|
||||
|
||||
if ! flock -n 9; then
|
||||
notify-send \
|
||||
-a "Nextcloud" \
|
||||
-u normal \
|
||||
"Nextcloud" \
|
||||
"Une synchronisation est déjà en cours."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
notify-send \
|
||||
-a "Nextcloud" \
|
||||
-u low \
|
||||
"Nextcloud" \
|
||||
"Synchronisation en cours…"
|
||||
|
||||
{
|
||||
printf '\n=== %s ===\n' "$(date --iso-8601=seconds)"
|
||||
} >> "$LOG_FILE"
|
||||
|
||||
if nextcloudcmd \
|
||||
-n \
|
||||
"$LOCAL_DIR" \
|
||||
"$SERVER_URL" >> "$LOG_FILE" 2>&1
|
||||
then
|
||||
notify-send \
|
||||
-a "Nextcloud" \
|
||||
-u normal \
|
||||
"Nextcloud" \
|
||||
"✅ Synchronisation réussie."
|
||||
|
||||
printf 'Résultat : réussite\n' >> "$LOG_FILE"
|
||||
else
|
||||
status=$?
|
||||
|
||||
notify-send \
|
||||
-a "Nextcloud" \
|
||||
-u critical \
|
||||
"Nextcloud" \
|
||||
"❌ Synchronisation échouée — code ${status}."
|
||||
|
||||
printf 'Résultat : échec, code %d\n' "$status" >> "$LOG_FILE"
|
||||
exit "$status"
|
||||
fi
|
||||
29
bin/.local/bin/sway-layout-ws1.sh
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Laisser le temps aux fenêtres de se lancer
|
||||
sleep 5
|
||||
|
||||
# Aller sur le workspace 1
|
||||
swaymsg "workspace 1"
|
||||
|
||||
# Regrouper les trois fenêtres sur le bon workspace (au cas où)
|
||||
swaymsg '[app_id="kitty-1"] move to workspace 1'
|
||||
swaymsg '[app_id="kitty-2"] move to workspace 1'
|
||||
swaymsg '[title="Perplexity"] move to workspace 1'
|
||||
|
||||
# Layout horizontal global
|
||||
swaymsg '[app_id="kitty-1"] focus'
|
||||
swaymsg 'move left'
|
||||
|
||||
# Revenir sur la zone gauche (un des kitty)
|
||||
swaymsg '[app_id="kitty-2"] focus'
|
||||
swaymsg 'move down'
|
||||
|
||||
# Envoyer Perplexity à droite
|
||||
swaymsg '[title="Perplexity"] focus'
|
||||
swaymsg 'move right'
|
||||
|
||||
# Envoyer Perplexity à droite
|
||||
swaymsg '[title="Perplexity"] focus'
|
||||
swaymsg 'move right'
|
||||
43
bin/.local/bin/thunderbird-proton
Executable file
|
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -u
|
||||
|
||||
# Empêche deux lanceurs simultanés.
|
||||
exec 9>"${XDG_RUNTIME_DIR:-/tmp}/thunderbird-proton.lock"
|
||||
|
||||
if ! flock -n 9; then
|
||||
notify-send "Thunderbird" "Thunderbird est déjà en cours d’utilisation."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Le Bridge utilise le trousseau GNOME pour ses identifiants.
|
||||
systemctl --user start gnome-keyring-daemon.service
|
||||
|
||||
if ! systemctl --user start protonmail-bridge.service; then
|
||||
notify-send -u critical \
|
||||
"Proton Mail Bridge" \
|
||||
"Impossible de démarrer le service."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
notify-send "Proton Mail Bridge" "Démarrage du serveur de messagerie…"
|
||||
|
||||
# Attendre que les processus du Bridge soient réellement présents.
|
||||
for _ in {1..20}; do
|
||||
if pgrep -f '/usr/lib/protonmail/bridge/bridge' >/dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
sleep 2
|
||||
|
||||
thunderbird "$@" &
|
||||
|
||||
# Attendre la fermeture complète de Thunderbird.
|
||||
while pgrep -x thunderbird >/dev/null; do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
systemctl --user stop protonmail-bridge.service
|
||||
notify-send "Proton Mail Bridge" "Arrêté après la fermeture de Thunderbird."
|
||||
15
bin/.local/bin/tlp-profile.sh
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Récupère la ligne "TLP profile = balanced/BAT" et isole "balanced/BAT"
|
||||
# profile=$(tlp-stat -s 2>/dev/null | awk -F'= ' '/TLP profile/ {print $2}')
|
||||
|
||||
# Optionnel : ne garder que le profil logique (performance/balanced/power-saver)
|
||||
# profile=$(printf "%s" "$profile" | cut -d'/' -f1)
|
||||
|
||||
# [ -z "$profile" ] && profile="unknown"
|
||||
# printf " %s\n" "$profile"
|
||||
|
||||
tlp=$(tlp-stat -s 2>/dev/null | awk -F'= ' '/TLP profile/ {print $2}')
|
||||
platform=$(cat /sys/firmware/acpi/platform_profile 2>/dev/null)
|
||||
|
||||
printf " %s | %s\n" "$tlp" "$platform"
|
||||
48
bin/.local/bin/vmware-on-demand
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -u
|
||||
|
||||
readonly STACK_HELPER="/usr/local/sbin/vmware-stack"
|
||||
readonly LOCK_FILE="${XDG_RUNTIME_DIR:-/tmp}/vmware-on-demand.lock"
|
||||
|
||||
services_started=0
|
||||
|
||||
cleanup() {
|
||||
if (( services_started == 1 )); then
|
||||
notify-send "VMware" "Arrêt du réseau VMware et de Samba…"
|
||||
|
||||
if sudo -n "$STACK_HELPER" stop; then
|
||||
notify-send "VMware" "Réseau VMware et Samba arrêtés."
|
||||
else
|
||||
notify-send -u critical \
|
||||
"VMware" \
|
||||
"Impossible d’arrêter les services."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
exec 9>"$LOCK_FILE"
|
||||
|
||||
if ! flock -n 9; then
|
||||
notify-send "VMware" "Une session VMware est déjà lancée."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
notify-send "VMware" "Démarrage du réseau VMware et de Samba…"
|
||||
|
||||
if ! sudo -n "$STACK_HELPER" start; then
|
||||
notify-send -u critical \
|
||||
"VMware" \
|
||||
"Impossible de démarrer les services."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
services_started=1
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
vmware "$@" &
|
||||
|
||||
while pgrep -x vmware >/dev/null ||
|
||||
pgrep -x vmware-vmx >/dev/null; do
|
||||
sleep 3
|
||||
done
|
||||
4
bin/.local/bin/waybar-restart
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
pkill waybar
|
||||
waybar &
|
||||
3
clangd/.config/clangd/config.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
CompileFlags:
|
||||
Add:
|
||||
- "-std=c17"
|
||||
|
|
@ -1,12 +1,20 @@
|
|||
// ~/.config/fastfetch/config.jsonc
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"display": {
|
||||
"separator": "• "
|
||||
},
|
||||
"logo":{
|
||||
"type": "sixel",
|
||||
"width": 30
|
||||
// "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
// "display": {
|
||||
// "separator": "• "
|
||||
// },
|
||||
// "logo":{
|
||||
// "type": "sixel",
|
||||
// "width": 30
|
||||
// },
|
||||
"logo": {
|
||||
"type": "small",
|
||||
"padding": {
|
||||
"top": 4, // Top padding
|
||||
"left": 3, // Left padding
|
||||
"right": 3 // Right padding
|
||||
}
|
||||
},
|
||||
"modules": [
|
||||
"break",
|
||||
|
|
@ -16,7 +24,7 @@
|
|||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "╭───────────────────────────────╮"
|
||||
"format": "╭────────────────────────────────────────────╮"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
|
|
@ -57,7 +65,7 @@
|
|||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "╰───────────────────────────────╯"
|
||||
"format": "╰────────────────────────────────────────────╯"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
|
|
|
|||
6
fzf/.config/fzf/catppuccin-fzff-mocha.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
export FZF_DEFAULT_OPTS=" \
|
||||
--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
|
||||
--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
|
||||
--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
|
||||
--color=selected-bg:#45475A \
|
||||
--color=border:#6C7086,label:#CDD6F4"
|
||||
|
|
@ -1,7 +1,5 @@
|
|||
file:///home/fy59/Downloads
|
||||
file:///home/fy59/Ansible
|
||||
file:///home/fy59/Documents
|
||||
file:///home/fy59/Musique
|
||||
file:///home/fy59/Images
|
||||
file:///home/fy59/Vid%C3%A9os
|
||||
file:///home/fy59/T%C3%A9l%C3%A9chargements
|
||||
file:///home/fy59/Pictures/Assets/
|
||||
file:///home/fy59/Pictures/Assets
|
||||
file:///home/fy59/Share
|
||||
|
|
|
|||
9
gtklock/.config/gtklock/config.ini
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[main]
|
||||
gtk-theme=Adwaita-dark
|
||||
style=/home/fy59/.config/gtklock/style.css
|
||||
background=/tmp/gtklock-blur.png
|
||||
time-format=%H:%M
|
||||
date-format=%A %d %B
|
||||
idle-hide=true
|
||||
idle-timeout=10
|
||||
modules=userinfo-module;playerctl-module;powerbar-module
|
||||
53
gtklock/.config/gtklock/style.css
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
window {
|
||||
background-color: #1e1e2e;
|
||||
background-image: url("/tmp/gtklock-blur.png");
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
#window-box {
|
||||
background-color: rgba(30, 30, 46, 0.78);
|
||||
border: 1px solid #b4befe;
|
||||
border-radius: 12px;
|
||||
padding: 12px;
|
||||
box-shadow: 0 0 32px rgba(0, 0, 0, 0.55);
|
||||
}
|
||||
|
||||
#clock-label {
|
||||
color: #cdd6f4;
|
||||
font-size: 72px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
#date-label {
|
||||
color: #bac2de;
|
||||
font-size: 22px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
#input-field {
|
||||
color: #cdd6f4;
|
||||
background-color: rgba(17, 17, 27, 0.92);
|
||||
border: 1px solid #b4befe;
|
||||
border-radius: 6px;
|
||||
padding: 12px;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
label {
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
button {
|
||||
color: #b4befe;
|
||||
background-color: #b4befe;
|
||||
border-radius: 6px;
|
||||
border: 1px solid #45475a;
|
||||
padding: 8px 12px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: rgba(69, 71, 90, 0.95);
|
||||
border-color: #89b4fa;
|
||||
}
|
||||
1
hyprwhspr/.config/hyprwhspr/audio_level
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/run/user/1000/hyprwhspr/audio_level
|
||||
17
hyprwhspr/.config/hyprwhspr/config.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"$schema": "https://raw.githubusercontent.com/goodroot/hyprwhspr/main/share/config.schema.json",
|
||||
"primary_shortcut": "SUPER+SHIFT+F23",
|
||||
"recording_mode": "push_to_talk",
|
||||
"keyboard_device_names": [
|
||||
"AT Translated Set 2 keyboard"
|
||||
],
|
||||
"model": "large-v3-turbo",
|
||||
"language": "fr",
|
||||
"transcription_backend": "vulkan",
|
||||
"start_sound_volume": 0.5,
|
||||
"stop_sound_volume": 0.5,
|
||||
"start_sound_path": "ping-up.ogg",
|
||||
"stop_sound_path": "ping-down.ogg",
|
||||
"audio_ducking": true,
|
||||
"whisper_prompt_fr": "Transcrire en fran\u00e7ais avec des phrases compl\u00e8tes, une ponctuation claire et des majuscules correctes au d\u00e9but des phrases, pour les noms propres et les titres, comme dans un texte r\u00e9dig\u00e9"
|
||||
}
|
||||
1
hyprwhspr/.config/hyprwhspr/recording_control
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/run/user/1000/hyprwhspr/recording_control
|
||||
1
hyprwhspr/.config/hyprwhspr/recording_status
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/run/user/1000/hyprwhspr/recording_status
|
||||
|
|
@ -5,11 +5,21 @@ theme = "ctp-mocha"
|
|||
[icons]
|
||||
icons = "material-nf"
|
||||
|
||||
[[block]]
|
||||
block = "scratchpad"
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#fab387"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
|
||||
[[block]]
|
||||
block = "focused_window"
|
||||
[block.format]
|
||||
full = " $title.str(max_w:15) |"
|
||||
short = " $title.str(max_w:10) |"
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#f9e2af"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "music"
|
||||
|
|
@ -25,8 +35,17 @@ action = "toggle_format"
|
|||
[[block]]
|
||||
block = "bluetooth"
|
||||
mac = "E4:61:F4:F4:A1:F7"
|
||||
format = " JBL Tune {{$battery_icon}} "
|
||||
disconnected_format = " "
|
||||
format = " JBL Tune "
|
||||
disconnected_format = " JBL Tune "
|
||||
[[block.click]]
|
||||
button = "left"
|
||||
action = "blueman-manager"
|
||||
|
||||
[[block]]
|
||||
block = "bluetooth"
|
||||
mac = "1C:57:85:33:54:7F"
|
||||
format = " EDENWOOD "
|
||||
disconnected_format = " EDENWOOD "
|
||||
[[block.click]]
|
||||
button = "left"
|
||||
action = "blueman-manager"
|
||||
|
|
@ -35,26 +54,46 @@ action = "blueman-manager"
|
|||
block = "net"
|
||||
device = "wlp1s0"
|
||||
format = " $icon {$signal_strength $ssid} "
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#a6e3a1"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "sound"
|
||||
step_width = 3
|
||||
max_vol = 100
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#94e2d5"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "backlight"
|
||||
device = "amdgpu_bl1"
|
||||
invert_icons = true
|
||||
minimum = 10
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#89dceb"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "battery"
|
||||
format = " $icon $percentage "
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#a6e3a1"
|
||||
warning_bg = "#f9e2af"
|
||||
critical_bg = "#f38ba8"
|
||||
|
||||
idle_fg = "#1e1e2e"
|
||||
warning_fg = "#1e1e2e"
|
||||
critical_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "custom"
|
||||
command = "~/.local/bin/tlp-profile.sh"
|
||||
interval = 5
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#74c7ec"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "packages"
|
||||
|
|
@ -68,25 +107,17 @@ format_up_to_date = " $icon Up to date "
|
|||
# aur_command should output available updates to stdout (ie behave as echo -ne "update\n")
|
||||
aur_command = "yay -Qua"
|
||||
|
||||
[[block]]
|
||||
block = "notify"
|
||||
driver = "swaync"
|
||||
[[block.click]]
|
||||
button = "left"
|
||||
action = "show"
|
||||
[[block.click]]
|
||||
button = "right"
|
||||
action = "toggle_paused"
|
||||
[[block]]
|
||||
block = "time"
|
||||
interval = 60
|
||||
[block.format]
|
||||
full = " $icon $timestamp.datetime(f:'%d-%m-%Y %R')"
|
||||
short = " $icon $timestamp.datetime(f:%R) "
|
||||
format = " $timestamp.datetime(f:'%d/%m %H:%M') "
|
||||
[block.theme_overrides]
|
||||
idle_bg = "#b4befe"
|
||||
idle_fg = "#1e1e2e"
|
||||
|
||||
[[block]]
|
||||
block = "menu"
|
||||
text = " \uf011 "
|
||||
text = " \uf011 "
|
||||
[[block.items]]
|
||||
display = " -> Sleep <-"
|
||||
cmd = "systemctl suspend"
|
||||
|
|
|
|||
|
|
@ -30,3 +30,5 @@ cursor_trail 0
|
|||
shell_integration no-cursor
|
||||
|
||||
include kitty-themes/themes/mocha.conf
|
||||
|
||||
map alt+c no_cp
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ text-color=#cdd6f4
|
|||
border-color=#b4befe
|
||||
progress-color=over #313244
|
||||
|
||||
border-radius=2
|
||||
border-radius=5
|
||||
|
||||
# Comportement
|
||||
default-timeout=5000
|
||||
default-timeout=10000
|
||||
ignore-timeout=1
|
||||
max-visible=3
|
||||
layer=overlay
|
||||
|
|
|
|||
|
|
@ -10,28 +10,25 @@
|
|||
# gnome-keyring-daemon
|
||||
# Verrouillage auto (swayidle)
|
||||
# protonmail-bridge
|
||||
#
|
||||
# cliphist
|
||||
# proton-pass
|
||||
# exec-once=swayidle -w timeout 300 '~/.config/mango/scripts/lock.sh' timeout 310 'wlopm --off "*"' resume 'wlopm --on "*"' before-sleep '~/.config/mango/scripts/lock.sh'
|
||||
# Les outils précédent ont été ajouter à systemd --user
|
||||
#
|
||||
# =================================================
|
||||
|
||||
# Wallpapers
|
||||
exec-once=swaybg -i ~/.wallpapers/662412-vanilla-arch-wallpaper-linuxart.png
|
||||
exec-once=swaybg -i ~/.wallpapers/arch_rainbow.jpg
|
||||
|
||||
# Lancement au démarrage
|
||||
exec-once=kitty --class kitty-1 --directory $HOME
|
||||
exec-once=perplexity
|
||||
exec-once=kitty --class kitty-2 --directory $HOME
|
||||
exec-once=kitty --class kitty-3 --directory $HOME -- sh -c "ssh srv-admin-ext"
|
||||
exec-once=kitty --class kitty-1
|
||||
exec-once=kitty --class kitty-2
|
||||
exec-once=kitty --class kitty-3
|
||||
exec-once=kitty --class kitty-mon --directory $HOME
|
||||
exec-once=chromium
|
||||
exec-once=gtk-launch chrome-hnpfjngllnobngcgfapefoaidbinmjnm-Default
|
||||
exec-once=gtk-launch
|
||||
exec-once=thunderbird
|
||||
exec-once=spotify-launcher
|
||||
exec-once=waybar
|
||||
exec-once=proton-pass
|
||||
|
||||
# Presse-papier
|
||||
exec=wl-paste --watch clipvault store
|
||||
exec=wl-paste --type image/png --watch clipvault store
|
||||
|
||||
# Idle
|
||||
exec-once=swayidle -w timeout 300 'swaylock -f -c 000000' timeout 301 'systemctl suspend' before-sleep 'swaylock -f -c 000000'
|
||||
exec-once=AppFlowy
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
# Applications system
|
||||
binds=SUPER,Return,spawn,kitty
|
||||
binds=SUPER+CTRL,t,spawn,thunderbird
|
||||
binds=SUPER+SHIFT,b,spawn,blueman-manager
|
||||
binds=SUPER+SHIFT,p,spawn,proton-pass
|
||||
binds=ALT,p,toggle_named_scratchpad,Proton Pass,none,proton-pass
|
||||
|
|
@ -14,6 +15,8 @@ binds=SUPER+CTRL,l,spawn,swaylock
|
|||
binds=SUPER+CTRL,e,spawn,wofi --cache-file=/dev/null -Dimage_size=26 -Dynamic_lines=true --location top --yoffset=10 --width=600 --height=300 --gtk-dark --show drun
|
||||
binds=SUPER,v,spawn,~/.config/mango/scripts/copypast
|
||||
binds=NONE,Print,spawn,~/.config/mango/scripts/screenshot-clip.sh
|
||||
binds=SUPER+CTRL,f,spawn,AppFlowy
|
||||
binds=SUPER+CTRL,g,spawn,gimp
|
||||
|
||||
# Browsers & net
|
||||
binds=SUPER,b,spawn,chromium
|
||||
|
|
@ -21,7 +24,6 @@ binds=SUPER+SHIFT,f,spawn,firefox
|
|||
binds=SUPER,t,spawn,thunderbird
|
||||
|
||||
# IA's
|
||||
binds=SUPER+SHIFT,XF86Assistant,spawn,perplexity
|
||||
binds=SUPER,m,spawn,spotify-launcher
|
||||
|
||||
# Virtualisation
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
# switch window focus
|
||||
binds=SUPER,Tab,focusstack,next
|
||||
binds=ALT,Left,focusdir,left
|
||||
binds=ALT,Right,focusdir,right
|
||||
binds=ALT,Up,focusdir,up
|
||||
binds=ALT,Down,focusdir,down
|
||||
binds=SUPER,Left,focusdir,left
|
||||
binds=SUPER,Right,focusdir,right
|
||||
binds=SUPER,Up,focusdir,up
|
||||
binds=SUPER,Down,focusdir,down
|
||||
|
||||
# swap window
|
||||
binds=SUPER+SHIFT,Up,exchange_client,up
|
||||
|
|
@ -19,52 +19,52 @@ binds=SUPER+SHIFT,Right,exchange_client,right
|
|||
|
||||
# switch window status
|
||||
binds=SUPER,g,toggleglobal,
|
||||
binds=ALT,Tab,toggleoverview,
|
||||
binds=ALT,backslash,togglefloating,
|
||||
binds=ALT,a,togglemaximizescreen,
|
||||
binds=ALT,f,togglefullscreen,
|
||||
binds=ALT+SHIFT,f,togglefakefullscreen,
|
||||
binds=SUPER,Tab,toggleoverview,
|
||||
binds=SUPER,backslash,togglefloating,
|
||||
binds=SUPER,a,togglemaximizescreen,
|
||||
binds=SUPER,f,togglefullscreen,
|
||||
binds=SUPER+SHIFT,f,togglefakefullscreen,
|
||||
binds=SUPER,i,minimized,
|
||||
binds=SUPER,o,toggleoverlay,
|
||||
binds=SUPER+SHIFT,I,restore_minimized
|
||||
binds=ALT,z,toggle_scratchpad
|
||||
binds=SUPER,z,toggle_scratchpad
|
||||
|
||||
# tag switch
|
||||
binds=SUPER,Left,viewtoleft,0
|
||||
binds=CTRL,Left,viewtoleft_have_client,0
|
||||
binds=SUPER,Right,viewtoright,0
|
||||
binds=CTRL,Right,viewtoright_have_client,0
|
||||
binds=CTRL+SUPER,Left,tagtoleft,0
|
||||
binds=CTRL+SUPER,Right,tagtoright,0
|
||||
binds=ALT,Left,viewtoleft,0
|
||||
binds=ALT+SHIFT,Left,viewtoleft_have_client,0
|
||||
binds=ALT,Right,viewtoright,0
|
||||
binds=ALT+SHIFT,Right,viewtoright_have_client,0
|
||||
binds=ALT+SUPER,Left,tagtoleft,0
|
||||
binds=ALT+SUPER,Right,tagtoright,0
|
||||
|
||||
binds=CTRL,ampersand,view,1,0
|
||||
binds=CTRL,eacute,view,2,0
|
||||
binds=CTRL,quotedbl,view,3,0
|
||||
binds=CTRL,apostrophe,view,4,0
|
||||
binds=CTRL,parenleft,view,5,0
|
||||
binds=CTRL,minus,view,6,0
|
||||
binds=CTRL,egrave,view,7,0
|
||||
binds=CTRL,underscore,view,8,0
|
||||
binds=CTRL,ccedilla,view,9,0
|
||||
binds=ALT,ampersand,view,1,0
|
||||
binds=ALT,eacute,view,2,0
|
||||
binds=ALT,quotedbl,view,3,0
|
||||
binds=ALT,apostrophe,view,4,0
|
||||
binds=ALT,parenleft,view,5,0
|
||||
binds=ALT,minus,view,6,0
|
||||
binds=ALT,egrave,view,7,0
|
||||
binds=ALT,underscore,view,8,0
|
||||
binds=ALT,ccedilla,view,9,0
|
||||
|
||||
# tag: move client to the tag and focus it
|
||||
# tagsilent: move client to the tag and not focus it
|
||||
# bind=ALT,1,tagsilent,1
|
||||
binds=ALT,ampersand,tag,1,0
|
||||
binds=ALT,eacute,tag,2,0
|
||||
binds=ALT,quotedbl,tag,3,0
|
||||
binds=ALT,apostrophe,tag,4,0
|
||||
binds=ALT,parenleft,tag,5,0
|
||||
binds=ALT,minus,tag,6,0
|
||||
binds=ALT,egrave,tag,7,0
|
||||
binds=ALT,underscore,tag,8,0
|
||||
binds=ALT,ccedilla,tag,9,0
|
||||
binds=ALT+SUPER,ampersand,tag,1,0
|
||||
binds=ALT+SUPER,eacute,tag,2,0
|
||||
binds=ALT+SUPER,quotedbl,tag,3,0
|
||||
binds=ALT+SUPER,apostrophe,tag,4,0
|
||||
binds=ALT+SUPER,parenleft,tag,5,0
|
||||
binds=ALT+SUPER,minus,tag,6,0
|
||||
binds=ALT+SUPER,egrave,tag,7,0
|
||||
binds=ALT+SUPER,underscore,tag,8,0
|
||||
binds=ALT+SUPER,ccedilla,tag,9,0
|
||||
|
||||
# monitor switch
|
||||
binds=ALT+SHIFT,Left,focusmon,left
|
||||
binds=ALT+SHIFT,Right,focusmon,right
|
||||
binds=SUPER+ALT,Left,tagmon,left
|
||||
binds=SUPER+ALT,Right,tagmon,right
|
||||
binds=CTRL+SHIFT,Left,focusmon,left
|
||||
binds=CTRL+SHIFT,Right,focusmon,right
|
||||
binds=CTRL+SUPER,Left,tagmon,left
|
||||
binds=CTRL+SUPER,Right,tagmon,right
|
||||
|
||||
# gaps
|
||||
binds=ALT+SHIFT,X,incgaps,1
|
||||
|
|
@ -78,10 +78,10 @@ binds=ALT+SHIFT,R,togglegaps
|
|||
# binds=CTRL+SHIFT,Right,movewin,+50,+0
|
||||
|
||||
# resizewin
|
||||
binds=CTRL+ALT,Up,resizewin,+0,-10
|
||||
binds=CTRL+ALT,Down,resizewin,+0,+10
|
||||
binds=CTRL+ALT,Left,resizewin,-10,+0
|
||||
binds=CTRL+ALT,Right,resizewin,+10,+0
|
||||
binds=SUPER+CTRL,Up,resizewin,+0,-10
|
||||
binds=SUPER+CTRL,Down,resizewin,+0,+10
|
||||
binds=SUPER+CTRL,Left,resizewin,-10,+0
|
||||
binds=SUPER+CTRL,Right,resizewin,+10,+0
|
||||
|
||||
# Mouse Button Bindings
|
||||
# btn_left and btn_right can't bind none mod key
|
||||
|
|
@ -91,4 +91,4 @@ mousebind=SUPER,btn_right,moveresize,curresize
|
|||
|
||||
# Axis Bindings
|
||||
axisbind=SUPER,UP,viewtoleft_have_client
|
||||
axisbind=SUPER,DOWN,viewtoright_have_client
|
||||
# axisbind=SUPER,DOWN,viewtoright_have_client
|
||||
|
|
|
|||
|
|
@ -12,13 +12,14 @@
|
|||
# scrolle5 layout
|
||||
binds=ALT,e,set_proportion,0.5
|
||||
binds=ALT+SHIFT,e,set_proportion,1
|
||||
binds=ALT,x,switch_proportion_preset,
|
||||
binds=SUPER,x,switch_proportion_preset,
|
||||
|
||||
# switch layou5
|
||||
binds=SUPER,n,switch_layout
|
||||
|
||||
# reload config
|
||||
binds=SUPER,r,reload_config
|
||||
binds=SUPER+CTRL,w,~/.config/waybar/scripts/restartWaybar.sh
|
||||
|
||||
# exit
|
||||
binds=SUPER+CTRL,q,quit
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
# layout support:
|
||||
# tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller
|
||||
tagrule=id:1,layout_name:scroller
|
||||
tagrule=id:1,layout_name:tile
|
||||
tagrule=id:2,layout_name:scroller
|
||||
tagrule=id:3,layout_name:scroller
|
||||
tagrule=id:4,layout_name:scroller
|
||||
|
|
|
|||
|
|
@ -5,16 +5,22 @@
|
|||
##############################
|
||||
|
||||
# Tag 1 : shell / terminaux / Perplexity
|
||||
windowrule=tags:1,scroller_proportion:0.5,appid:kitty-1
|
||||
windowrule=tags:1,scroller_proportion:0.5,appid:perplexity
|
||||
windowrule=tags:1,scroller_proportion:0.5,appid:kitty-2
|
||||
windowrule=tags:1,appid:kitty-1
|
||||
windowrule=tags:1,appid:kitty-2
|
||||
windowrule=tags:1,appid:kitty-3
|
||||
|
||||
# Tag 2 : Ssh serveur
|
||||
windowrule=tags:2,scroller_proportion:1,appid:kitty-3
|
||||
# Tag 2 : web
|
||||
windowrule=tags:2,scroller_proportion:1,appid:chromium
|
||||
windowrule=tags:2,appid:firefox
|
||||
|
||||
# Tag 3 : web
|
||||
windowrule=tags:3,scroller_proportion:0.8,appid:chromium
|
||||
windowrule=tags:3,appid:firefox
|
||||
# Tag 5 : web
|
||||
windowrule=tags:5,scroller_proportion:1,appid:AppFlowy
|
||||
|
||||
# Tag 6 : web
|
||||
windowrule=tags:6,scroller_proportion:1,appid:kitty-mon
|
||||
|
||||
# Tag 7 : web
|
||||
windowrule=tags:7,scroller_proportion:1,appid:chrome-hnpfjngllnobngcgfapefoaidbinmjnm-Default
|
||||
|
||||
# Tag 8 : mail
|
||||
windowrule=tags:8,scroller_proportion:0.5,appid:proton-bridge
|
||||
|
|
|
|||
|
|
@ -1,37 +1,41 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
thumb_dir="${XDG_CACHE_HOME:-$HOME/.cache}/clipvault/thumbs"
|
||||
thumb_dir="${XDG_CACHE_HOME:-$HOME/.cache}/cliphist/thumbs"
|
||||
mkdir -p "$thumb_dir"
|
||||
|
||||
clip_list="$(clipvault list)"
|
||||
clip_list="$(cliphist list)"
|
||||
|
||||
# nettoyer les vignettes orphelines
|
||||
# Nettoyer les vignettes orphelines
|
||||
for thumb in "$thumb_dir"/*; do
|
||||
[ -e "$thumb" ] || continue
|
||||
clip_id="${thumb##*/}"
|
||||
clip_id="${clip_id%.*}"
|
||||
check=$(printf '%s\n' "$clip_list" | rg "^${clip_id}\s")
|
||||
if [ -z "$check" ]; then
|
||||
|
||||
if ! printf '%s\n' "$clip_list" | rg -q "^${clip_id}[[:space:]]"; then
|
||||
rm -f "$thumb"
|
||||
fi
|
||||
done
|
||||
|
||||
# programme gawk : détecter les entrées image, générer les thumbs, préfixer par img:
|
||||
read -r -d '' prog <<EOF
|
||||
match(\$0, /^([0-9]+)\s\[\[ binary data .*image\/(jpeg|jpg|png|bmp|webp)/, grp) {
|
||||
match(\$0, /^([0-9]+)[[:space:]]+\\[\\[ binary data .* (png|jpeg|jpg|bmp|webp) [0-9]+x[0-9]+ \\]\\]/, grp) {
|
||||
id = grp[1]
|
||||
ext = grp[2]
|
||||
if (ext == "jpeg") ext = "jpg"
|
||||
|
||||
image = id "." ext
|
||||
cmd = "[ -f $thumb_dir/" image " ] || printf \"" id "\\n\" | clipvault get | magick - -resize '256x256>' $thumb_dir/" image
|
||||
thumb = "$thumb_dir/" image
|
||||
|
||||
cmd = "[ -f '" thumb "' ] || printf '%s\\n' '" \$0 "' | cliphist decode | magick - -resize '256x256>' '" thumb "'"
|
||||
system(cmd)
|
||||
print "img:$thumb_dir/" image
|
||||
|
||||
print "img:" thumb
|
||||
next
|
||||
}
|
||||
1
|
||||
EOF
|
||||
|
||||
choice=$(
|
||||
gawk <<< "$clip_list" "$prog" |
|
||||
gawk "$prog" <<< "$clip_list" |
|
||||
wofi -I --dmenu --cache-file=/dev/null \
|
||||
-Dimage_size=100 -Dynamic_lines=true \
|
||||
--xoffset=600 --yoffset=20 --width=45% --height=45% --gtk-dark
|
||||
|
|
@ -43,10 +47,14 @@ if [ "${choice:0:4}" = "img:" ]; then
|
|||
thumb_file="${choice:4}"
|
||||
clip_id="${thumb_file##*/}"
|
||||
clip_id="${clip_id%.*}"
|
||||
else
|
||||
# on prend l’ID (premier champ) de la ligne choisie
|
||||
clip_id="$(printf '%s\n' "$choice" | awk '{print $1}')"
|
||||
fi
|
||||
|
||||
# récupérer l’entrée choisie et la remettre dans le clipboard
|
||||
printf '%s\n' "$clip_id" | clipvault get | wl-copy
|
||||
printf '%s\n' "$clip_list" |
|
||||
rg "^${clip_id}[[:space:]]" |
|
||||
head -n 1 |
|
||||
cliphist decode |
|
||||
wl-copy
|
||||
else
|
||||
printf '%s\n' "$choice" |
|
||||
cliphist decode |
|
||||
wl-copy
|
||||
fi
|
||||
|
|
|
|||
9
mango/.config/mango/scripts/lock.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
img="/tmp/gtklock-shot.png"
|
||||
blur="/tmp/gtklock-blur.png"
|
||||
|
||||
grim "$img"
|
||||
magick "$img" -blur 0x14 -brightness-contrast -8x-5 "$blur"
|
||||
|
||||
pidof gtklock || gtklock -d
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
#!/usr/bin/env bash
|
||||
grim -g "$(slurp)" - | wl-copy -t image/png
|
||||
grim -g "$(slurp)" - | wl-copy
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ zoom_initial_ratio=0.4
|
|||
zoom_end_ratio=0.8
|
||||
fadein_begin_opacity=0.5
|
||||
fadeout_begin_opacity=0.8
|
||||
animation_duration_move=500
|
||||
animation_duration_open=400
|
||||
animation_duration_tag=350
|
||||
animation_duration_close=800
|
||||
animation_duration_move=250
|
||||
animation_duration_open=220
|
||||
animation_duration_tag=100
|
||||
animation_duration_close=180
|
||||
animation_duration_focus=0
|
||||
animation_curve_open=0.46,1.0,0.29,1
|
||||
animation_curve_move=0.46,1.0,0.29,1
|
||||
|
|
|
|||
|
|
@ -26,38 +26,42 @@ vim.opt.clipboard = "unnamedplus"
|
|||
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
vim.g.loaded_node_provider = 0
|
||||
vim.g.loaded_perl_provider = 0
|
||||
|
||||
-- Avant require("config.lazy")
|
||||
local ts_site = vim.fn.stdpath("data") .. "/site"
|
||||
if not vim.tbl_contains(vim.opt.rtp:get(), ts_site) then
|
||||
vim.opt.rtp:append(ts_site)
|
||||
vim.opt.rtp:append(ts_site)
|
||||
end
|
||||
-- charge lazy.nvim + plugins
|
||||
require("config.lazy")
|
||||
-- Position du curser
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
callback = function()
|
||||
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
||||
local line_count = vim.api.nvim_buf_line_count(0)
|
||||
if mark[1] > 0 and mark[1] <= line_count then
|
||||
vim.api.nvim_win_set_cursor(0, mark)
|
||||
end
|
||||
end,
|
||||
callback = function()
|
||||
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
||||
local line_count = vim.api.nvim_buf_line_count(0)
|
||||
if mark[1] > 0 and mark[1] <= line_count then
|
||||
vim.api.nvim_win_set_cursor(0, mark)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Undo persistant
|
||||
local undodir = vim.fn.stdpath("state") .. "/undo"
|
||||
if vim.fn.isdirectory(undodir) == 0 then
|
||||
vim.fn.mkdir(undodir, "p")
|
||||
vim.fn.mkdir(undodir, "p")
|
||||
end
|
||||
vim.opt.undodir = undodir
|
||||
vim.opt.undofile = true
|
||||
|
||||
vim.filetype.add({
|
||||
pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
|
||||
pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
|
||||
})
|
||||
|
||||
-- require
|
||||
require("config.filetypes")
|
||||
-- Keymaps (fichier séparé)
|
||||
require("config.maps")
|
||||
|
||||
|
|
@ -67,7 +71,48 @@ require("config.markdown")
|
|||
-- Mason/LSP
|
||||
require("mason-lspconfig").setup()
|
||||
|
||||
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
|
||||
local function get_devcontainer()
|
||||
local project = vim.fn.getcwd()
|
||||
|
||||
local handle = io.popen(
|
||||
'docker ps -q --filter "label=devcontainer.local_folder='
|
||||
.. project
|
||||
.. '"'
|
||||
)
|
||||
|
||||
if not handle then
|
||||
return nil
|
||||
end
|
||||
|
||||
local container = handle:read("*a"):gsub("%s+", "")
|
||||
handle:close()
|
||||
|
||||
if container == "" then
|
||||
return nil
|
||||
end
|
||||
|
||||
return container
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<leader>dt", function()
|
||||
local container = get_devcontainer()
|
||||
|
||||
if not container then
|
||||
vim.notify("Aucun devcontainer actif", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
local docker_term = Terminal:new({
|
||||
cmd = "docker exec -it -u vscode -w /workspace " .. container .. " zsh",
|
||||
direction = "float",
|
||||
hidden = true,
|
||||
})
|
||||
|
||||
docker_term:toggle()
|
||||
end, {
|
||||
desc = "Docker terminal",
|
||||
})
|
||||
|
||||
vim.cmd.colorscheme "catppuccin-mocha"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +1,37 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" },
|
||||
"LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" },
|
||||
"catppuccin": { "branch": "main", "commit": "c7c692a0ad3080710893abbae100171819a3e4be" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" },
|
||||
"mason.nvim": { "branch": "main", "commit": "cbf8d285e1462dd24acf3507817be2bbcb035919" },
|
||||
"mini.icons": { "branch": "main", "commit": "9c7b1b90b15bdd69c52f6e31889dbc9987c30ec4" },
|
||||
"mini.map": { "branch": "stable", "commit": "234eaf5cbcaee320d87e96465fbb534aa05b301e" },
|
||||
"mini.starter": { "branch": "main", "commit": "35b018a035794e341ac01cb2091bbd71b3f823d0" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "7adc933dabcc7c86ae6b07aff7ee68eac398491f" },
|
||||
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
|
||||
"mini.starter": { "branch": "main", "commit": "25de4998197d59673f1918968a8f4060195edca0" },
|
||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "ebd66767191714e008ce73b769518a763ff31bdc" },
|
||||
"neowiki.nvim": { "branch": "main", "commit": "85dddf6057b07d4d6772b2f90e754a18e958a865" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "72a05f62c52241bc7441c820eb53946f92b2e6a4" },
|
||||
"nvim-lsp-file-operations": { "branch": "master", "commit": "b9c795d3973e8eec22706af14959bc60c579e771" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "246572944c2a1e2a646c2e7609ff619b0fe74c18" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "d592c1e6ad9a0a01b3d5ed3f0345d68407167181" },
|
||||
"nvim-tcss": { "branch": "main", "commit": "bf9001416158f32fe7e92c42de94de3595aa13e5" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "a45a920ec04cda5624f6dea0ff6454c81c3ad2d5" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "7d8dad2c837fcdf2e65997e68657c1a21c568074" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "2ae6958df7ced50baac5035cec0c15799eedfbf7" },
|
||||
"nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" },
|
||||
"outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
|
||||
"outline.nvim": { "branch": "main", "commit": "2a132953b944561d45b52e4541ebfff71934a742" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "629eb9533ec989d9d5c6cab8f3ad5372422c24e0" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "f422cb5c6855f150e2ddcfaf44e7157b98b34f6a" },
|
||||
"rustaceanvim": { "branch": "main", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" },
|
||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
local ts = require("nvim-treesitter.parsers")
|
||||
ts.filetype_to_parsername.swayconfig = "i3"
|
||||
|
||||
vim.filetype.add({
|
||||
pattern = {
|
||||
[".*/sway/config.*"] = "swayconfig",
|
||||
},
|
||||
extension = {
|
||||
h = "c",
|
||||
},
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,40 +1,89 @@
|
|||
-- Capabilities avec cmp si disponible
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
local ok_cmp, cmp_lsp = pcall(require, "cmp_nvim_lsp")
|
||||
|
||||
if ok_cmp then
|
||||
capabilities = cmp_lsp.default_capabilities(capabilities)
|
||||
capabilities = cmp_lsp.default_capabilities(capabilities)
|
||||
end
|
||||
|
||||
local lspconfig = require("lspconfig")
|
||||
-- Groupe nettoyé à chaque chargement de la configuration
|
||||
local lsp_attach_group = vim.api.nvim_create_augroup(
|
||||
"fy59_lsp_attach",
|
||||
{ clear = true }
|
||||
)
|
||||
|
||||
-- Fonction appelée quand un serveur LSP se connecte à un buffer
|
||||
local on_attach = function(_, bufnr)
|
||||
local map = function(mode, lhs, rhs, desc)
|
||||
vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, desc = desc })
|
||||
end
|
||||
-- Keymaps LSP
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = lsp_attach_group,
|
||||
|
||||
-- Keymaps de base LSP
|
||||
map("n", "gd", vim.lsp.buf.definition, "LSP: Go to definition")
|
||||
map("n", "gr", vim.lsp.buf.references, "LSP: References")
|
||||
map("n", "K", vim.lsp.buf.hover, "LSP: Hover")
|
||||
map("n", "<leader>rn", vim.lsp.buf.rename, "LSP: Rename")
|
||||
map("n", "<leader>ca", vim.lsp.buf.code_action, "LSP: Code action")
|
||||
map("n", "[d", vim.diagnostic.goto_prev, "LSP: Prev diagnostic")
|
||||
map("n", "]d", vim.diagnostic.goto_next, "LSP: Next diagnostic")
|
||||
callback = function(args)
|
||||
local bufnr = args.buf
|
||||
|
||||
-- Format on save (si le serveur sait formater)
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
vim.lsp.buf.format({ async = false })
|
||||
local map = function(lhs, rhs, desc)
|
||||
vim.keymap.set("n", lhs, rhs, {
|
||||
buffer = bufnr,
|
||||
desc = desc,
|
||||
})
|
||||
end
|
||||
|
||||
map("ld", vim.lsp.buf.definition, "LSP: Go to definition")
|
||||
map("lD", vim.lsp.buf.declaration, "LSP: Go to declaration")
|
||||
map("lr", vim.lsp.buf.references, "LSP: References")
|
||||
map("K", vim.lsp.buf.hover, "LSP: Hover")
|
||||
map("<leader>rn", vim.lsp.buf.rename, "LSP: Rename")
|
||||
map("<leader>ca", vim.lsp.buf.code_action, "LSP: Code action")
|
||||
map("<leader>e", vim.diagnostic.open_float, "LSP: Show diagnostic")
|
||||
|
||||
map("[d", function()
|
||||
vim.diagnostic.jump({ count = -1 })
|
||||
end, "LSP: Prev diagnostic")
|
||||
|
||||
map("]d", function()
|
||||
vim.diagnostic.jump({ count = 1 })
|
||||
end, "LSP: Next diagnostic")
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
-- Pyright pour Python
|
||||
-- Exemple approximatif avec la future API
|
||||
local cfg = vim.lsp._config -- ou vim.lsp.config selon la version
|
||||
|
||||
cfg.setup("pyright", {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-- Configuration des serveurs
|
||||
vim.lsp.config("pyright", {
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
vim.lsp.config("bashls", {
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
vim.lsp.config("lua_ls", {
|
||||
capabilities = capabilities,
|
||||
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { "vim" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.config("clangd", {
|
||||
capabilities = capabilities,
|
||||
cmd = {
|
||||
"clangd",
|
||||
"--background-index",
|
||||
"--clang-tidy",
|
||||
},
|
||||
|
||||
on_attach = function(client)
|
||||
client.server_capabilities.semanticTokensProvider = nil
|
||||
end,
|
||||
})
|
||||
|
||||
-- Activation des serveurs
|
||||
vim.lsp.enable({
|
||||
"clangd",
|
||||
"pyright",
|
||||
"bashls",
|
||||
"lua_ls",
|
||||
})
|
||||
|
||||
-- rust_analyzer est géré par rustaceanvim
|
||||
|
|
|
|||
|
|
@ -1,61 +1,103 @@
|
|||
local map = vim.keymap.set
|
||||
local opts = { noremap = true, silent = true }
|
||||
|
||||
-- Recherche
|
||||
map("n", "<leader>h", "<cmd>nohlsearch<cr>", { desc = "Clear hlsearch" })
|
||||
|
||||
-- neo-tree
|
||||
vim.keymap.set("n", "<C-n>", "<cmd>Neotree toggle<CR>", { silent = true, desc = "Explorer" })
|
||||
map("n", "<C-n>", "<cmd>Neotree toggle<CR>", { silent = true, desc = "Explorer" })
|
||||
|
||||
local telescope = require("telescope.builtin")
|
||||
|
||||
-- Fuzzy find files
|
||||
vim.keymap.set("n", "<leader>ff", telescope.find_files, { desc = "Find files" })
|
||||
|
||||
-- Live grep
|
||||
vim.keymap.set("n", "<leader>fg", telescope.live_grep, { desc = "Live grep" })
|
||||
|
||||
-- Buffers
|
||||
vim.keymap.set("n", "<leader>fb", telescope.buffers, { desc = "Find buffers" })
|
||||
|
||||
-- Help tags
|
||||
vim.keymap.set("n", "<leader>fh", telescope.help_tags, { desc = "Find help" })
|
||||
-- Telescope
|
||||
map("n", "<leader>ff", telescope.find_files, { desc = "Find files" })
|
||||
map("n", "<leader>fg", telescope.live_grep, { desc = "Live grep" })
|
||||
map("n", "<leader>fb", telescope.buffers, { desc = "Find buffers" })
|
||||
map("n", "<leader>fh", telescope.help_tags, { desc = "Find help" })
|
||||
|
||||
-- LSP
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
|
||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||
map("n", "gd", vim.lsp.buf.definition, opts)
|
||||
map("n", "gr", vim.lsp.buf.references, opts)
|
||||
map("n", "K", vim.lsp.buf.hover, opts)
|
||||
map("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||
map("n", "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||
map("n", "<leader>d", vim.diagnostic.open_float, opts)
|
||||
map("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||
map("n", "]d", vim.diagnostic.goto_next, opts)
|
||||
|
||||
-- Indenter en mode Visuel avec Tab / Shift-Tab
|
||||
vim.keymap.set("v", "<Tab>", ">gv", { desc = "Indent selection" })
|
||||
vim.keymap.set("v", "<S-Tab>", "<gv", { desc = "Unindent selection" })
|
||||
|
||||
require("which-key").add({
|
||||
-- mappings sans <leader>
|
||||
{ "f", group = "find" },
|
||||
{ "ff", "<cmd>Telescope find_files<cr>", desc = "Find files" },
|
||||
{ "fg", "<cmd>Telescope live_grep<cr>", desc = "Live grep" },
|
||||
{ "fb", "<cmd>Telescope buffers<cr>", desc = "Buffers" },
|
||||
{ "fh", "<cmd>Telescope help_tags<cr>", desc = "Help tags" },
|
||||
-- mappings sans <leader>
|
||||
{ "<leader>f", group = "find" },
|
||||
{ "ff", "<cmd>Telescope find_files<cr>", desc = "Find files" },
|
||||
{ "fg", "<cmd>Telescope live_grep<cr>", desc = "Live grep" },
|
||||
{ "fb", "<cmd>Telescope buffers<cr>", desc = "Buffers" },
|
||||
{ "fh", "<cmd>Telescope help_tags<cr>", desc = "Help tags" },
|
||||
|
||||
{ "w", group = "write" },
|
||||
{ "ww", "<cmd>w<cr>", desc = "Write file" },
|
||||
{ "w", group = "write" },
|
||||
{ "ww", "<cmd>w<cr>", desc = "Write file" },
|
||||
|
||||
-- mappings sous <leader>
|
||||
{ "<leader>f", group = "file" },
|
||||
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find files" },
|
||||
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live grep" },
|
||||
|
||||
--Git
|
||||
{ "<leader>g", group = "Git"},
|
||||
{ "<leader>gs", "<cmd>Git status<cr>", desc = "Git status" },
|
||||
{ "<leader>ga", "<cmd>Git add .<cr>", desc = "Git add all" },
|
||||
{ "<leader>gc", "<cmd>Git commit<cr>", desc = "Git commit" },
|
||||
{ "<leader>gp", "<cmd>Git push<cr>", desc = "Git push" },
|
||||
|
||||
})
|
||||
|
||||
vim.keymap.set("x", "<Tab>", ">gv", { desc = "Indent selection" })
|
||||
vim.keymap.set("x", "<S-Tab>", "<gv", { desc = "Unindent selection" })
|
||||
|
||||
local function devcontainer()
|
||||
local container = vim.fn.getenv("DEVCONTAINER_ID")
|
||||
|
||||
if container == vim.NIL or container == nil or container == "" then
|
||||
vim.notify("Aucun DEVCONTAINER_ID trouvé", vim.log.levels.ERROR)
|
||||
return nil
|
||||
end
|
||||
|
||||
return tostring(container)
|
||||
end
|
||||
|
||||
local function docker_cmd(cmd)
|
||||
local container = devcontainer()
|
||||
if not container then
|
||||
return
|
||||
end
|
||||
|
||||
vim.cmd("write")
|
||||
vim.cmd("terminal docker exec -it -u vscode " .. container .. " zsh -lc '" .. cmd .. "'")
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<F5>", function()
|
||||
local file = vim.fn.expand("%")
|
||||
local out = vim.fn.expand("%:r")
|
||||
|
||||
docker_cmd("gcc -Wall -Wextra -std=c17 -g " .. file .. " -o " .. out)
|
||||
end, { desc = "GCC compile current file" })
|
||||
|
||||
vim.keymap.set("n", "<F6>", function()
|
||||
local out = vim.fn.expand("%:r")
|
||||
docker_cmd("./" .. out)
|
||||
end, { desc = "Run current program" })
|
||||
|
||||
vim.keymap.set("n", "<F7>", function()
|
||||
local out = vim.fn.expand("%:r")
|
||||
docker_cmd("gdb ./" .. out)
|
||||
end, { desc = "Debug with GDB" })
|
||||
|
||||
vim.keymap.set("n", "<F8>", function()
|
||||
local out = vim.fn.expand("%:r")
|
||||
docker_cmd("valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./" .. out)
|
||||
end, { desc = "Run Valgrind" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cb", function()
|
||||
docker_cmd(
|
||||
"cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON && cmake --build build --parallel")
|
||||
end, { desc = "CMake build" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cc", function()
|
||||
docker_cmd("cmake --build build --target clean")
|
||||
end, { desc = "CMake clean" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cp", function()
|
||||
docker_cmd("cppcheck --enable=all --std=c17 --suppress=missingIncludeSystem -I include src")
|
||||
end, { desc = "Cppcheck project" })
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
return {
|
||||
"norcalli/nvim-colorizer.lua",
|
||||
config = function()
|
||||
require("colorizer").setup()
|
||||
end,
|
||||
"catgoose/nvim-colorizer.lua",
|
||||
event = "BufReadPre",
|
||||
opts = {},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
opts = {
|
||||
current_line_blame = true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +1,42 @@
|
|||
return {
|
||||
"mason-org/mason-lspconfig.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"pyright"
|
||||
-- Mason
|
||||
{
|
||||
"mason-org/mason.nvim",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Bridge Mason <-> lspconfig
|
||||
{
|
||||
"mason-org/mason-lspconfig.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"pyright", -- Python (tu l'avais déjà)
|
||||
"bashls", -- Bash
|
||||
"lua_ls", -- Lua
|
||||
-- rust_analyzer : géré par rustaceanvim, pas ici
|
||||
},
|
||||
automatic_enable = {
|
||||
exclude = { "rust_analyzer" },
|
||||
},
|
||||
},
|
||||
dependencies = {
|
||||
{ "mason-org/mason.nvim", opts = {} },
|
||||
"neovim/nvim-lspconfig",
|
||||
},
|
||||
},
|
||||
dependencies = {
|
||||
{
|
||||
"mason-org/mason.nvim",
|
||||
opts = {}
|
||||
},
|
||||
|
||||
-- nvim-lspconfig : chargé, config dans lsp-setup.lua
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
config = function()
|
||||
require("config.lsp-setup")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Rust : rustaceanvim
|
||||
{
|
||||
"mrcjkb/rustaceanvim",
|
||||
version = "^5",
|
||||
lazy = false,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
-- lua/plugins/mini-icons.lua
|
||||
return {
|
||||
"nvim-mini/mini.icons",
|
||||
lazy = true, -- ou enlève lazy si tu veux partout
|
||||
opts = {
|
||||
-- style = "glyph", -- icônes Nerd Font (par défaut)
|
||||
-- style = "ascii", -- si ton terminal n’a pas de Nerd Font
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("mini.icons").setup(opts)
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"echasnovski/mini.map",
|
||||
branch = "stable",
|
||||
config = function()
|
||||
local map = require("mini.map")
|
||||
|
||||
map.setup({
|
||||
symbols = {
|
||||
encode = map.gen_encode_symbols.dot("4x2"),
|
||||
},
|
||||
integrations = {
|
||||
map.gen_integration.builtin_search(),
|
||||
map.gen_integration.diagnostic(),
|
||||
map.gen_integration.gitsigns(),
|
||||
},
|
||||
})
|
||||
|
||||
-- PAS d'ouverture auto : bloc autocmd commenté
|
||||
|
||||
-- <leader>p : toggle minimap
|
||||
vim.keymap.set("n", "<leader>p", function()
|
||||
map.toggle()
|
||||
end, {
|
||||
desc = "Toggle minimap",
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
disable_filetype = { "TelescopePrompt", "vim" },
|
||||
-- tu pourras ajuster ici (ignored_next_char, fast_wrap, etc.)
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
disable_filetype = { "TelescopePrompt", "vim" },
|
||||
-- tu pourras ajuster ici (ignored_next_char, fast_wrap, etc.)
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
---@type LazySpec
|
||||
--@type LazySpec
|
||||
return {
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"nvim-tree/nvim-web-devicons", -- ou mini.icons si tu utilises mini
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"nvim-tree/nvim-web-devicons", -- ou mini.icons si tu utilises mini
|
||||
},
|
||||
opts = {
|
||||
-- preset = "lazy", -- tu peux tester ce preset plus tard
|
||||
enabled = true,
|
||||
file_types = { "markdown" },
|
||||
latex = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
-- preset = "lazy", -- tu peux tester ce preset plus tard
|
||||
enabled = true,
|
||||
file_types = { "markdown" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
7
nvim/.config/nvim/lua/plugins/toggleterm.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"akinsho/toggleterm.nvim",
|
||||
version = "*",
|
||||
config = function()
|
||||
require("toggleterm").setup()
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,27 +1,29 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"lua",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"query",
|
||||
"python",
|
||||
"html",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"lua",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"query",
|
||||
"python",
|
||||
"html",
|
||||
"yaml",
|
||||
"latex",
|
||||
"rust",
|
||||
},
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = {},
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = {},
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
105
opencode/.config/opencode/opencode.json.pre-reset-
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
|
||||
"autoupdate": false,
|
||||
|
||||
"enabled_providers": [
|
||||
"ollama"
|
||||
],
|
||||
|
||||
"model": "ollama/labfy-coder:latest",
|
||||
|
||||
"provider": {
|
||||
"ollama": {
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"name": "Ollama local",
|
||||
"options": {
|
||||
"baseURL": "http://127.0.0.1:11434/v1",
|
||||
"timeout": 600000,
|
||||
"chunkTimeout": 120000
|
||||
},
|
||||
"models": {
|
||||
"labfy-coder:latest": {
|
||||
"name": "Labfy Coder",
|
||||
"limit": {
|
||||
"context": 6144,
|
||||
"output": 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"permission": {
|
||||
"*": "ask",
|
||||
|
||||
"read": {
|
||||
"*": "allow",
|
||||
"*.env": "deny",
|
||||
"*.env.*": "deny",
|
||||
"Enquete.sqlite": "deny",
|
||||
"**/Enquete.sqlite": "deny"
|
||||
},
|
||||
|
||||
"glob": "allow",
|
||||
"grep": "allow",
|
||||
"lsp": "allow",
|
||||
"question": "allow",
|
||||
|
||||
"edit": {
|
||||
"*": "ask",
|
||||
"Enquete.sqlite": "deny",
|
||||
"**/Enquete.sqlite": "deny"
|
||||
},
|
||||
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
|
||||
"git status*": "allow",
|
||||
"git diff*": "allow",
|
||||
"git log*": "allow",
|
||||
"git branch --show-current": "allow",
|
||||
"git grep*": "allow",
|
||||
"rg *": "allow",
|
||||
"grep *": "allow",
|
||||
|
||||
"git commit*": "deny",
|
||||
"git push*": "deny",
|
||||
"git reset*": "deny",
|
||||
"git clean*": "deny",
|
||||
|
||||
"rm *": "deny",
|
||||
"sudo *": "deny",
|
||||
"doas *": "deny",
|
||||
|
||||
"curl *": "deny",
|
||||
"wget *": "deny",
|
||||
"ssh *": "deny",
|
||||
"scp *": "deny",
|
||||
"rsync *": "deny"
|
||||
},
|
||||
|
||||
"external_directory": "deny",
|
||||
"websearch": "allow",
|
||||
"webfetch": "ask",
|
||||
"websearch": "deny",
|
||||
"task": "deny",
|
||||
"skill": "deny",
|
||||
"doom_loop": "deny"
|
||||
},
|
||||
|
||||
"compaction": {
|
||||
"auto": true,
|
||||
"prune": true,
|
||||
"reserved": 2048
|
||||
},
|
||||
|
||||
"watcher": {
|
||||
"ignore": [
|
||||
".git/**",
|
||||
"build/**",
|
||||
"*.o",
|
||||
"tests/tmp/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
3
opencode/.config/opencode/opencode.jsonc
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"$schema": "https://opencode.ai/config.json"
|
||||
}
|
||||
39
sway/.config/sway/autostart
Executable file → Normal file
|
|
@ -2,16 +2,6 @@
|
|||
# Autostart #
|
||||
# =========== #
|
||||
|
||||
# =================================================
|
||||
# Filtre lumière bleue (wlsunset)
|
||||
# Notifications (swaync)
|
||||
# gnome-keyring-daemon
|
||||
# protonmail-bridge
|
||||
#
|
||||
# Les outils précédent ont été ajouter à systemd --user
|
||||
#
|
||||
# =================================================
|
||||
|
||||
# =================================================
|
||||
# Transparence
|
||||
# =================================================
|
||||
|
|
@ -22,38 +12,11 @@ exec python3 ~/.config/sway/scripts/inactive-windows-transparency.py
|
|||
# Règles d'assignation automatique
|
||||
# =================================================
|
||||
|
||||
assign [app_id="kitty-1"] workspace 1
|
||||
assign [app_id="kitty-2"] workspace 1
|
||||
assign [app_id="electron" title="Perplexity"] workspace 1
|
||||
assign [app_id="chromium"] workspace 2
|
||||
assign [app_id="firefox"] workspace 3
|
||||
assign [app_id="proton-bridge"] workspace 9
|
||||
assign [app_id="org.mozilla.Thunderbird"] workspace 9
|
||||
assign [class="Spotify"] workspace 10
|
||||
|
||||
# =================================================
|
||||
# Lancement des applications
|
||||
# =================================================
|
||||
|
||||
exec kitty --class kitty-1 --directory $HOME
|
||||
exec kitty --class kitty-2 --directory $HOME
|
||||
exec perplexity
|
||||
exec chromium
|
||||
exec thunderbird
|
||||
exec spotify-launcher
|
||||
|
||||
exec ~/.config/sway/scripts/layout-workspace1.sh
|
||||
|
||||
# =================================================
|
||||
# Presse-papier
|
||||
# =================================================
|
||||
|
||||
exec wl-paste --watch clipvault store
|
||||
exec wl-paste --type image/png --watch clipvault store
|
||||
|
||||
# =================================================
|
||||
# Verrouillage auto (swayidle)
|
||||
# =================================================
|
||||
|
||||
exec-once=swayidle -w timeout 300 'swaylock -f -c 000000' timeout 301 'systemctl suspend' before-sleep 'swaylock -f -c 000000'
|
||||
|
||||
exec autotiling
|
||||
|
|
|
|||
60
sway/.config/sway/autostart.bak
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
# =========== #
|
||||
# Autostart #
|
||||
# =========== #
|
||||
|
||||
# =================================================
|
||||
# Filtre lumière bleue (wlsunset)
|
||||
# Notifications (swaync)
|
||||
# gnome-keyring-daemon
|
||||
# protonmail-bridge
|
||||
#
|
||||
# Les outils précédent ont été ajouter à systemd --user
|
||||
#
|
||||
# =================================================
|
||||
|
||||
# =================================================
|
||||
# Transparence
|
||||
# =================================================
|
||||
|
||||
exec python3 ~/.config/sway/scripts/inactive-windows-transparency.py
|
||||
|
||||
# =================================================
|
||||
# Règles d'assignation automatique
|
||||
# =================================================
|
||||
|
||||
assign [app_id="kitty-1"] workspace 1
|
||||
assign [app_id="chromium"] workspace 2
|
||||
assign [app_id="firefox"] workspace 3
|
||||
assign [app_id="AppFlowy"] workspace 5
|
||||
assign [app_id="org.mozilla.Thunderbird"] workspace 9
|
||||
assign [class="Spotify"] workspace 10
|
||||
assign [app_id="proton-bridge"] workspace 11
|
||||
|
||||
# =================================================
|
||||
# Lancement des applications
|
||||
# =================================================
|
||||
|
||||
exec kitty --class kitty-1 --directory $HOME
|
||||
exec chromium
|
||||
exec thunderbird
|
||||
exec spotify-launcher
|
||||
exec AppFlowy
|
||||
# move to systemctl --user
|
||||
# exec gnome-keyring-daemon --components=pkcs11,secrets,ssh --start
|
||||
# exec proton-pass
|
||||
# exec protonmail-bridge
|
||||
|
||||
# =================================================
|
||||
# Presse-papier
|
||||
# =================================================
|
||||
|
||||
# move to systemctl --user
|
||||
# exec wl-paste --watch cliphist store
|
||||
# exec wl-paste --type image/png --watch cliphist store
|
||||
|
||||
# =================================================
|
||||
# Verrouillage auto (swayidle)
|
||||
# =================================================
|
||||
|
||||
# move to systemctl --user
|
||||
# exec swayidle -w timeout 300 'swaylock -f -c 000000' timeout 360 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' before-sleep 'playerctl pause; swaylock -f -c 000000'
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
include ~/.config/sway/catppuccin-mocha
|
||||
|
||||
bar {
|
||||
font pango:JetBrainsMono Nerd Font 12
|
||||
font pango:Fira Code 12
|
||||
position top
|
||||
status_command i3status-rs ~/.config/i3status-rust/config.toml
|
||||
colors {
|
||||
|
|
@ -18,6 +18,6 @@ bar {
|
|||
focused_workspace $base $mauve $crust
|
||||
active_workspace $base $surface2 $text
|
||||
inactive_workspace $base $base $text
|
||||
urgent_workspace $base $red $crust
|
||||
urgent_workspace $base $peach $crust
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,20 +14,20 @@ set $right l
|
|||
set $term kitty
|
||||
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+q kill
|
||||
bindsym $mod+q kill
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
|
||||
|
||||
###############################################
|
||||
|
|
@ -37,28 +37,28 @@ set $term kitty
|
|||
###############################################
|
||||
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
|
||||
# Or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
bindsym $mod+Ctrl+$left move left
|
||||
bindsym $mod+Ctrl+$down move down
|
||||
bindsym $mod+Ctrl+$up move up
|
||||
bindsym $mod+Ctrl+$right move right
|
||||
|
||||
# Ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
bindsym $mod+Ctrl+Left move left
|
||||
bindsym $mod+Ctrl+Down move down
|
||||
bindsym $mod+Ctrl+Up move up
|
||||
bindsym $mod+Ctrl+Right move right
|
||||
|
||||
###############################################
|
||||
#
|
||||
|
|
@ -67,28 +67,28 @@ set $term kitty
|
|||
###############################################
|
||||
|
||||
# Switch to workspace
|
||||
bindsym $mod+ampersand workspace number 1
|
||||
bindsym $mod+eacute workspace number 2
|
||||
bindsym $mod+quotedbl workspace number 3
|
||||
bindsym $mod+apostrophe workspace number 4
|
||||
bindsym $mod+parenleft workspace number 5
|
||||
bindsym $mod+minus workspace number 6
|
||||
bindsym $mod+egrave workspace number 7
|
||||
bindsym $mod+underscore workspace number 8
|
||||
bindsym $mod+ccedilla workspace number 9
|
||||
bindsym $mod+agrave workspace number 10
|
||||
bindsym $mod+ampersand workspace number 1
|
||||
bindsym $mod+eacute workspace number 2
|
||||
bindsym $mod+quotedbl workspace number 3
|
||||
bindsym $mod+apostrophe workspace number 4
|
||||
bindsym $mod+parenleft workspace number 5
|
||||
bindsym $mod+minus workspace number 6
|
||||
bindsym $mod+egrave workspace number 7
|
||||
bindsym $mod+underscore workspace number 8
|
||||
bindsym $mod+ccedilla workspace number 9
|
||||
bindsym $mod+agrave workspace number 10
|
||||
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Shift+ampersand move container to workspace number 1
|
||||
bindsym $mod+Shift+eacute move container to workspace number 2
|
||||
bindsym $mod+Shift+quotedbl move container to workspace number 3
|
||||
bindsym $mod+Shift+apostrophe move container to workspace number 4
|
||||
bindsym $mod+Shift+parenleft move container to workspace number 5
|
||||
bindsym $mod+Shift+minus move container to workspace number 6
|
||||
bindsym $mod+Shift+egrave move container to workspace number 7
|
||||
bindsym $mod+Shift+underscore move container to workspace number 8
|
||||
bindsym $mod+Shift+ccedilla move container to workspace number 9
|
||||
bindsym $mod+Shift+agrave move container to workspace number 10
|
||||
bindsym $mod+Ctrl+ampersand move container to workspace number 1
|
||||
bindsym $mod+Ctrl+eacute move container to workspace number 2
|
||||
bindsym $mod+Ctrl+quotedbl move container to workspace number 3
|
||||
bindsym $mod+Ctrl+apostrophe move container to workspace number 4
|
||||
bindsym $mod+Ctrl+parenleft move container to workspace number 5
|
||||
bindsym $mod+Ctrl+minus move container to workspace number 6
|
||||
bindsym $mod+Ctrl+egrave move container to workspace number 7
|
||||
bindsym $mod+Ctrl+underscore move container to workspace number 8
|
||||
bindsym $mod+Ctrl+ccedilla move container to workspace number 9
|
||||
bindsym $mod+Ctrl+agrave move container to workspace number 10
|
||||
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
|
|
@ -99,36 +99,28 @@ set $term kitty
|
|||
#
|
||||
###############################################
|
||||
|
||||
bindsym $mod+N exec swaync-client -t
|
||||
|
||||
###############################################
|
||||
#
|
||||
# Layout stuff
|
||||
#
|
||||
###############################################
|
||||
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
# bindsym $mod+b splith
|
||||
# bindsym $mod+v splitv
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
bindsym $mod+Ctrl+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
###############################################
|
||||
#
|
||||
|
|
@ -140,11 +132,10 @@ bindsym $mod+N exec swaync-client -t
|
|||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+i move scratchpad
|
||||
|
||||
bindsym $mod+Ctrl+i move scratchpad
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+i scratchpad show
|
||||
bindsym $mod+i scratchpad show
|
||||
|
||||
|
||||
###############################################
|
||||
|
|
@ -184,14 +175,14 @@ bindsym $mod+r mode "resize"
|
|||
###############################################
|
||||
|
||||
# Special keys to adjust volume via PulseAudio
|
||||
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
|
||||
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
|
||||
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
|
||||
bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
|
||||
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
|
||||
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
|
||||
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
|
||||
bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
|
||||
|
||||
# Special keys to adjust brightness via brightnessctl
|
||||
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||
|
||||
|
||||
###############################################
|
||||
|
|
@ -201,7 +192,7 @@ bindsym $mod+r mode "resize"
|
|||
###############################################
|
||||
|
||||
# Reload Sway config
|
||||
bindsym $mod+Shift+c Reload
|
||||
bindsym $mod+Ctrl+r Reload
|
||||
|
||||
###############################################
|
||||
#
|
||||
|
|
@ -209,19 +200,23 @@ bindsym $mod+Shift+c Reload
|
|||
#
|
||||
###############################################
|
||||
|
||||
bindsym $mod+b exec chromium
|
||||
bindsym $mod+g exec google-chrome-stable
|
||||
bindsym $mod+Shift+f exec firefox
|
||||
bindsym $mod+p exec perplexity
|
||||
bindsym $mod+m exec spotify-launcher
|
||||
bindsym $mod+Shift+b exec blueman-manager
|
||||
bindsym $mod+Ctrl+l exec swaylock
|
||||
bindsym $mod+Ctrl+e exec wofi --cache-file=/dev/null -Dimage_size=26 -Dynamic_lines=true --location top --yoffset=10 --width=600 --height=300 --gtk-dark --show drun
|
||||
bindsym $mod+t exec thunderbird
|
||||
bindsym $mod+Shift+p exec proton-pass
|
||||
bindsym $mod+Shift+m exec protonmail-bridge
|
||||
bindsym $mod+Shift+v exec virt-manager
|
||||
bindsym $mod+Shift+t exec thunar
|
||||
bindsym $mod+Alt+i exec ~/.local/bin/vmware-on-demand
|
||||
bindsym $mod+Alt+f exec firefox
|
||||
bindsym $mod+Alt+a exec AppFlowy
|
||||
bindsym $mod+Alt+g exec gimp
|
||||
bindsym $mod+Alt+m exec spotify-launcher
|
||||
bindsym $mod+Alt+b exec blueman-manager
|
||||
bindsym $mod+Alt+o exec swaylock
|
||||
bindsym $mod+Alt+l exec wofi --cache-file=/dev/null -Dimage_size=26 -Dynamic_lines=true --location top --yoffset=10 --width=600 --height=300 --gtk-dark --show drun
|
||||
bindsym $mod+Alt+p exec proton-pass
|
||||
bindsym $mod+Alt+t exec ~/.local/bin/thunderbird-proton
|
||||
bindsym $mod+Alt+y exec kitty -- sh -c "yazi"
|
||||
bindsym $mod+Alt+w exec gtk-launch chrome-hnpfjngllnobngcgfapefoaidbinmjnm-Default
|
||||
bindsym $mod+Alt+v exec ~/.config/sway/scripts/copypast
|
||||
bindsym $mod+Alt+c exec freecad
|
||||
bindsym $mod+Alt+s exec sqlitebrowser
|
||||
bindsym $mod+Alt+e exec sh -c 'cd /home/fy59/Documents/Enquetes/Template/labfy-investigation && exec ./labfy-investigation'
|
||||
bindsym $mod+Alt+n exec ~/.local/bin/nextcloud-sync
|
||||
|
||||
###############################################
|
||||
#
|
||||
|
|
@ -232,12 +227,10 @@ bindsym $mod+Shift+t exec thunar
|
|||
# Special key to take a screenshot with grim
|
||||
|
||||
# Shift Print = plein écran -> presse-papier
|
||||
bindsym Shift+Print exec grim - | wl-copy -t image/png
|
||||
bindsym Shift+Print exec grim - | wl-copy -t image/png
|
||||
|
||||
# Print = zone -> presse-papier
|
||||
bindsym Print exec grim -g "$(slurp)" - | wl-copy -t image/png
|
||||
|
||||
bindsym $mod+v exec ~/.config/sway/scripts/cliphist-wofi-img
|
||||
# Print = zone -> presse-papier
|
||||
bindsym Print exec grim -g "$(slurp)" - | wl-copy -t image/png
|
||||
|
||||
|
||||
###############################################
|
||||
|
|
@ -245,7 +238,7 @@ bindsym $mod+Shift+t exec thunar
|
|||
# Power Daemon
|
||||
#
|
||||
###############################################
|
||||
bindsym $mod+F9 exec powerprofilesctl set power-saver
|
||||
bindsym $mod+F10 exec powerprofilesctl set balanced
|
||||
bindsym $mod+F11 exec powerprofilesctl set performance
|
||||
bindsym $mod+F9 exec powerprofilesctl set power-saver
|
||||
bindsym $mod+F10 exec powerprofilesctl set balanced
|
||||
bindsym $mod+F11 exec powerprofilesctl set performance
|
||||
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ include ~/.config/sway/bar
|
|||
include ~/.config/sway/input
|
||||
include ~/.config/sway/rules
|
||||
include ~/.config/sway/style
|
||||
include ~/.config/sway/swayfx
|
||||
# include ~/.config/sway/swayfx
|
||||
include ~/.config/sway/autostart
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
|
||||
60
sway/.config/sway/scripts/copypast
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
thumb_dir="${XDG_CACHE_HOME:-$HOME/.cache}/cliphist/thumbs"
|
||||
mkdir -p "$thumb_dir"
|
||||
|
||||
clip_list="$(cliphist list)"
|
||||
|
||||
# Nettoyer les vignettes orphelines
|
||||
for thumb in "$thumb_dir"/*; do
|
||||
[ -e "$thumb" ] || continue
|
||||
clip_id="${thumb##*/}"
|
||||
clip_id="${clip_id%.*}"
|
||||
|
||||
if ! printf '%s\n' "$clip_list" | rg -q "^${clip_id}[[:space:]]"; then
|
||||
rm -f "$thumb"
|
||||
fi
|
||||
done
|
||||
|
||||
read -r -d '' prog <<EOF
|
||||
match(\$0, /^([0-9]+)[[:space:]]+\\[\\[ binary data .* (png|jpeg|jpg|bmp|webp) [0-9]+x[0-9]+ \\]\\]/, grp) {
|
||||
id = grp[1]
|
||||
ext = grp[2]
|
||||
if (ext == "jpeg") ext = "jpg"
|
||||
|
||||
image = id "." ext
|
||||
thumb = "$thumb_dir/" image
|
||||
|
||||
cmd = "[ -f '" thumb "' ] || printf '%s\\n' '" \$0 "' | cliphist decode | magick - -resize '256x256>' '" thumb "'"
|
||||
system(cmd)
|
||||
|
||||
print "img:" thumb
|
||||
next
|
||||
}
|
||||
1
|
||||
EOF
|
||||
|
||||
choice=$(
|
||||
gawk "$prog" <<< "$clip_list" |
|
||||
wofi -I --dmenu --cache-file=/dev/null \
|
||||
-Dimage_size=100 -Dynamic_lines=true \
|
||||
--xoffset=600 --yoffset=20 --width=45% --height=45% --gtk-dark
|
||||
)
|
||||
|
||||
[ -z "$choice" ] && exit 1
|
||||
|
||||
if [ "${choice:0:4}" = "img:" ]; then
|
||||
thumb_file="${choice:4}"
|
||||
clip_id="${thumb_file##*/}"
|
||||
clip_id="${clip_id%.*}"
|
||||
|
||||
printf '%s\n' "$clip_list" |
|
||||
rg "^${clip_id}[[:space:]]" |
|
||||
head -n 1 |
|
||||
cliphist decode |
|
||||
wl-copy
|
||||
else
|
||||
printf '%s\n' "$choice" |
|
||||
cliphist decode |
|
||||
wl-copy
|
||||
fi
|
||||
|
|
@ -58,7 +58,7 @@ if __name__ == "__main__":
|
|||
"--opacity",
|
||||
"-o",
|
||||
type=str,
|
||||
default="0.70",
|
||||
default="0.85",
|
||||
help="set inactive opacity value in range 0...1",
|
||||
)
|
||||
parser.add_argument(
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
#
|
||||
|
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
|
||||
output * bg ~/.wallpapers/sway.png fill
|
||||
output eDP-1 mode 3200x2000 pos 3200 0 scale 1.7
|
||||
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
|
||||
output eDP-1 mode 3200x2000@60Hz pos 3200 0 scale 1.4
|
||||
|
||||
#
|
||||
# Style
|
||||
|
|
@ -22,24 +22,23 @@
|
|||
# set gtk+ theme
|
||||
set $gnome-schema org.gnome.desktop.interface
|
||||
exec_always {
|
||||
gsettings set $gnome-schema gtk-theme 'catppuccin-mocha-lavender-standard+default'
|
||||
gsettings set $gnome-schema font-name 'jetbrains mono nerd font 12'
|
||||
gsettings set $gnome-schema color-scheme 'prefer-dark'
|
||||
gsettings get $gnome-schema icon-theme 'Tela-circle-blue'
|
||||
}
|
||||
|
||||
set $cursor_theme catppuccin-mocha-lavender-cursors
|
||||
set $cursor_theme Bibata-Modern-Classic
|
||||
set $cursor_size 24
|
||||
|
||||
seat seat0 xcursor_theme $cursor_theme $cursor_size
|
||||
|
||||
# Pas de titre, bordures fines ou nulles
|
||||
default_border pixel 2
|
||||
default_floating_border normal
|
||||
default_floating_border pixel 2
|
||||
titlebar_border_thickness 0
|
||||
titlebar_padding 0 0
|
||||
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 5
|
||||
gaps outer -3
|
||||
gaps inner 8
|
||||
gaps outer 0
|
||||
|
|
|
|||
|
|
@ -1,17 +1,21 @@
|
|||
image=~/.wallpapers/662412-vanilla-arch-wallpaper-linuxart.png
|
||||
image=~/.wallpapers/swaylock.png
|
||||
|
||||
ignore-empty-password
|
||||
show-failed-attempts
|
||||
show-keyboard-layout
|
||||
indicator-idle-visible
|
||||
|
||||
font=JetBrainsMono Nerd Font
|
||||
font-size=40
|
||||
|
||||
clock
|
||||
indicator
|
||||
indicator-radius=100
|
||||
indicator-thickness=7
|
||||
effect-blur=7x5
|
||||
effect-vignette=0.5:0.5
|
||||
effect-pixelate=6
|
||||
indicator-thickness=12
|
||||
|
||||
color=1e1e2e
|
||||
bs-hl-color=f5e0dc
|
||||
caps-lock-bs-hl-color=f5e0dc
|
||||
caps-lock-key-hl-color=a6e3a1
|
||||
inside-color=1e1e2e
|
||||
inside-color=1e1e2e70
|
||||
inside-clear-color=1e1e2e
|
||||
inside-caps-lock-color=1e1e2e
|
||||
inside-ver-color=1e1e2e
|
||||
|
|
@ -37,5 +41,4 @@ text-caps-lock-color=fab387
|
|||
text-ver-color=89b4fa
|
||||
text-wrong-color=eba0ac
|
||||
|
||||
grace=2
|
||||
fade-in=0.2
|
||||
line-uses-ring
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
[Unit]
|
||||
Description=Set ASUS BAT1 charge threshold to 80%%
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/bash -c 'echo 80 > /sys/class/power_supply/BAT1/charge_control_end_threshold'
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
[Unit]
|
||||
Description=Cliphist image watcher
|
||||
PartOf=wayland-session.target
|
||||
After=wayland-session.target
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/bin/sh -c 'for i in $(seq 1 50); do [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ] && exit 0; sleep 0.1; done; echo "No Wayland socket" >&2; exit 1'
|
||||
ExecStart=/usr/bin/wl-paste --type image --watch cliphist store
|
||||
ExecStart=/usr/bin/wl-paste --type image/png --watch cliphist store
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=wayland-session.target
|
||||
WantedBy=graphical-session.target
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
[Unit]
|
||||
Description=Cliphist text watcher
|
||||
PartOf=wayland-session.target
|
||||
After=wayland-session.target
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
|
@ -10,4 +10,4 @@ ExecStart=/usr/bin/wl-paste --watch cliphist store
|
|||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=wayland-session.target
|
||||
WantedBy=graphical-session.target
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
/home/fy59/.config/systemd/user/proton-bridge.service
|
||||
|
|
@ -0,0 +1 @@
|
|||
/usr/lib/systemd/user/ydotool.service
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
[Unit]
|
||||
Description=GNOME keyring daemon
|
||||
PartOf=wayland-session.target
|
||||
After=wayland-session.target
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/gnome-keyring-daemon --components=pkcs11,secrets,ssh --start
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=wayland-session.target
|
||||
WantedBy=graphical-session.target
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.config/systemd/user/cliphist-image.service
|
||||
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.config/systemd/user/cliphist-text.service
|
||||
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.config/systemd/user/keyring.service
|
||||
|
|
@ -0,0 +1 @@
|
|||
/home/fy59/.config/systemd/user/swayidle.service
|
||||
27
systemd/.config/systemd/user/hyprwhspr.service
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
[Unit]
|
||||
Description=hyprwhspr stt
|
||||
Documentation=https://github.com/goodroot/hyprwhspr
|
||||
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
After=pipewire.service
|
||||
Wants=pipewire.service
|
||||
|
||||
Wants=wireplumber.service
|
||||
After=wireplumber.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/bin/bash -lc 'for i in $(seq 1 60); do ls "$XDG_RUNTIME_DIR"/wayland-* >/dev/null 2>&1 && exit 0; sleep 0.25; done; echo "Wayland socket not found"; exit 1'
|
||||
ExecStart=/usr/lib/hyprwhspr/bin/hyprwhspr
|
||||
ExecStopPost=/bin/bash -c '( pkill -9 -f "hyprwhspr-virtual-keyboard" 2>/dev/null; pkill -9 -f "hyprwhspr-ydotool.sock" 2>/dev/null ) || true'
|
||||
Environment=HYPRWHSPR_ROOT=/usr/lib/hyprwhspr
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
Restart=on-failure
|
||||
RestartSec=2
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
11
systemd/.config/systemd/user/keyring.service
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Wayland color temperature (wlsunset)
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/gnome-keyring-daemon --components=pkcs11,secrets,ssh --start
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
[Unit]
|
||||
Description=Proton Mail Bridge (CLI headless)
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
# Petit délai pour laisser le réseau et l'environnement user se stabiliser
|
||||
ExecStartPre=/bin/sleep 5
|
||||
ExecStart=/usr/bin/protonmail-bridge
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
13
systemd/.config/systemd/user/protonmail-bridge.service
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[Unit]
|
||||
Description=Proton Mail Bridge
|
||||
After=gnome-keyring-daemon.service
|
||||
Wants=gnome-keyring-daemon.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/protonmail-bridge
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
11
systemd/.config/systemd/user/swayidle.service
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Wayland swayidle
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/swayidle -w timeout 300 'swaylock -f -c 000000' timeout 360 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' before-sleep 'playerctl pause; swaylock -f -c 000000'
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
[Unit]
|
||||
Description=Wayland notification daemon
|
||||
PartOf=wayland-session.target
|
||||
After=wayland-session.target
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/swaync
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=wayland-session.target
|
||||
WantedBy=graphical-session.target
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
[Unit]
|
||||
Description=Wayland user session
|
||||
Requires=basic.target
|
||||
After=basic.target
|
||||
|
|
@ -1 +0,0 @@
|
|||
../swaync.service
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
[Unit]
|
||||
Description=Wayland color temperature (wlsunset)
|
||||
PartOf=wayland-session.target
|
||||
After=wayland-session.target
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/wlsunset -l 48.85 -L 2.35 -t 3000 -T 6500
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=wayland-session.target
|
||||
WantedBy=graphical-session.target
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
##################################
|
||||
##################################
|
||||
# #
|
||||
# Generals settings #
|
||||
# #
|
||||
|
|
@ -23,8 +23,17 @@ set -s escape-time 10
|
|||
# #
|
||||
##################################
|
||||
|
||||
# Catppuccin-mocha
|
||||
set-option -g status-position top
|
||||
# Barre simple sans plugin
|
||||
set -g status-bg colour238
|
||||
set -g status-fg colour255
|
||||
set -g status-left-length 40
|
||||
set -g status-right-length 80
|
||||
|
||||
# Gauche : [session] fenetre:pane
|
||||
set -g status-left '#[bold] #S #[default]#I:#P '
|
||||
|
||||
# Droite : user@host | path | heure
|
||||
set -g status-right '#(whoami)@#H | #{pane_current_path} | %H:%M '
|
||||
|
||||
##################################
|
||||
# #
|
||||
|
|
@ -57,6 +66,8 @@ set -g @catppuccin_flavor 'mocha'
|
|||
|
||||
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux
|
||||
|
||||
set -g status-position top
|
||||
set -g status-right '#[fg=#{@thm_crust},bg=#{@thm_lavender}] #(whoami)@#H | #{pane_current_path} | %H:%M | session: #S '
|
||||
set -g status-right-length 120
|
||||
set -g status-left '#[fg=#{@thm_teal},bg=#{@thm_lavender},bold] #S #[fg=#{@thm_crust},bg=#{@thm_lavender}] #I:#P #[default]'
|
||||
set -g status-left '#[fg=#{@thm_teal},bg=#{@thm_lavender},bold] #S #[fg=#{@thm_crust},bg=#{@thm_lavender}] #I:#W #[default]'
|
||||
set -g status-left-length 120
|
||||
|
|
|
|||