first commit

This commit is contained in:
julien committed 2026-10-14 10:35:57 +02:00
commit 1018867e92
7 files changed
+1374

No files matched your search

+73
View File
@@ -0,0 +1,73 @@
# Docker depuis SlackBuilds.org
> Nécessite `sbopkg`.
Commencez par générer la queue des dépendances :
```sh
# sqg -p docker-cli
```
`docker-cli` dépend de `docker`. La queue ajoutera aussi ses dépendances, notamment `tini`, `containerd` et `runc`.
Lancez ensuite :
```sh
# sbopkg -i docker-cli
```
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
Pour utiliser Docker sans passer directement par le compte `root`, créez le groupe recommandé par le SlackBuild et ajoutez-y votre utilisateur :
```sh
# groupadd -r -g 281 docker
# usermod -a -G docker <utilisateur>
```
> **Important :** l'appartenance au groupe `docker` donne en pratique des privilèges équivalents à ceux de `root` sur la machine.
Rendez ensuite le service exécutable et démarrez-le :
```sh
# chmod +x /etc/rc.d/rc.docker
# /etc/rc.d/rc.docker start
```
Déconnectez-vous puis reconnectez-vous avant de tester :
```sh
$ docker run hello-world
```
Pour démarrer Docker automatiquement avec le système, ajoutez dans `/etc/rc.d/rc.local` :
```sh
# Docker
if [ -x /etc/rc.d/rc.docker ]; then
/etc/rc.d/rc.docker start
fi
```
Éditez ensuite `/etc/rc.d/rc.local_shutdown` ; le fichier sera créé s'il n'existe pas :
```sh
# nvi /etc/rc.d/rc.local_shutdown
```
Puis ajoutez :
```sh
# Docker
if [ -x /etc/rc.d/rc.docker ]; then
/etc/rc.d/rc.docker stop
fi
```
Enfin, rendez le script exécutable :
```sh
# chmod +x /etc/rc.d/rc.local_shutdown
```
[Retour au guide principal](../README.md)
+435
View File
@@ -0,0 +1,435 @@
# Neovim pour Ruby depuis SlackBuilds.org
> Nécessite `sbopkg`.
Neovim est un éditeur de texte modal dérivé de Vim. La configuration ci-dessous reste volontairement simple : Telescope est utilisé pour naviguer entre les fichiers et les buffers, `ripgrep` pour rechercher dans le projet, Grug Far pour rechercher et remplacer dans plusieurs fichiers, `nvim-autopairs` pour fermer automatiquement les paires, et le client LSP intégré de Neovim pour Ruby, la complétion et les signatures de méthodes.
## Installation
Neovim est disponible sur SlackBuilds.org. Générez la queue des dépendances :
```sh
# sqg -p neovim
```
Puis lancez l'installation :
```sh
# sbopkg -i neovim
```
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
Installez également `ripgrep`, utilisé par Telescope pour rechercher dans le projet :
```sh
# sqg -p ripgrep
# sbopkg -i ripgrep
```
Sous Wayland, installez `wl-clipboard` pour permettre à Neovim d'utiliser le presse-papiers système :
```sh
# sbopkg -i wl-clipboard
```
Pour un affichage homogène des symboles, vous pouvez également installer JetBrains Mono Nerd Font :
```sh
# sbopkg -i ttf-nerd-fonts-jetbrains-mono
```
La variante **JetBrainsMono Nerd Font Mono** est adaptée à l'affichage dans un terminal.
Vérifiez ensuite les installations :
```sh
$ nvim --version
$ rg --version
```
## Configuration
Créez le dossier de configuration :
```sh
$ mkdir -p ~/.config/nvim
```
Créez ou éditez `~/.config/nvim/init.lua` :
```sh
$ nvi ~/.config/nvim/init.lua
```
Utilisez cette configuration :
```lua
-- Telescope remplace Netrw.
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
-- Leader
vim.g.mapleader = " "
vim.g.maplocalleader = ","
-- Affichage
vim.opt.number = true
vim.opt.signcolumn = "yes"
vim.opt.cursorline = true
vim.opt.splitkeep = "screen"
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.shortmess:append("I")
vim.opt.winborder = "rounded"
vim.cmd.colorscheme("retrobox")
-- Apparence homogène des menus et fenêtres flottantes.
vim.api.nvim_set_hl(0, "NormalFloat", { link = "Pmenu" })
vim.api.nvim_set_hl(0, "FloatBorder", { link = "PmenuBorder" })
vim.api.nvim_set_hl(0, "TelescopeNormal", { link = "Pmenu" })
vim.api.nvim_set_hl(0, "TelescopeBorder", { link = "PmenuBorder" })
vim.api.nvim_set_hl(0, "TelescopeSelection", { link = "PmenuSel" })
-- Indentation
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
-- Presse-papiers système
vim.opt.clipboard = "unnamedplus"
-- Autocomplétion de la ligne de commande
vim.opt.wildmode = "noselect:lastused,full"
vim.api.nvim_create_autocmd("CmdlineChanged", {
pattern = { ":", "/", "?" },
callback = function()
vim.fn.wildtrigger()
end,
})
-- Plugins
vim.pack.add({
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/MagicDuck/grug-far.nvim",
"https://github.com/windwp/nvim-autopairs",
{
src = "https://github.com/nvim-telescope/telescope.nvim",
version = "v0.2.1",
},
})
-- Auto-fermeture des paires
local npairs = require("nvim-autopairs")
npairs.setup({
map_cr = false,
})
-- Telescope
local builtin = require("telescope.builtin")
require("telescope").setup({
defaults = {
preview = false,
},
})
vim.keymap.set("n", "<Leader>f", builtin.find_files, {
desc = "Files",
})
vim.keymap.set("n", "<Leader>b", builtin.buffers, {
desc = "Buffers",
})
vim.keymap.set("n", "<Leader>g", builtin.live_grep, {
desc = "Grep",
})
vim.keymap.set("n", "<Leader>w", builtin.grep_string, {
desc = "Word",
})
vim.keymap.set("n", "<Leader>l", builtin.resume, {
desc = "Last search",
})
vim.keymap.set("n", "<Leader>d", builtin.diagnostics, {
desc = "Diagnostics",
})
-- Grug Far
vim.keymap.set({ "n", "x" }, "<Leader>r", function()
require("grug-far").open()
end, {
desc = "Replace",
})
-- Ouvre Telescope au démarrage sauf si un fichier est explicitement ouvert.
vim.api.nvim_create_autocmd("VimEnter", {
once = true,
callback = function()
local argc = vim.fn.argc()
if argc == 1 and vim.fn.isdirectory(vim.fn.argv(0)) == 1 then
vim.api.nvim_set_current_dir(vim.fn.fnamemodify(vim.fn.argv(0), ":p"))
vim.cmd.enew()
elseif argc > 0 then
return
end
builtin.find_files()
end,
})
-- Ruby LSP
local capabilities = vim.lsp.protocol.make_client_capabilities()
-- Active la surveillance des fichiers par Ruby LSP sous Linux.
capabilities.workspace.didChangeWatchedFiles.dynamicRegistration = true
vim.lsp.config("ruby_lsp", {
cmd = { "ruby-lsp" },
filetypes = { "ruby" },
root_markers = { "Gemfile", ".git" },
capabilities = capabilities,
-- Contournement temporaire pour Ruby LSP 0.26.11 : dans un projet Ruby
-- plat, Ruby Indexer peut construire le motif {}/**/*.rb et indexer un
-- même fichier sous deux chemins différents. Cette exclusion neutralise
-- uniquement ce motif ; les fichiers Ruby restent indexés normalement.
init_options = {
indexing = {
excludedPatterns = { "{}/**/*.rb" },
},
},
})
vim.lsp.enable("ruby_lsp")
-- Complétion Ruby LSP
vim.opt.completeopt = { "menuone", "noselect" }
vim.opt.pumheight = 8
vim.opt.pumwidth = 36
vim.opt.pummaxwidth = 72
vim.opt.pumborder = "rounded"
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(event)
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client:supports_method("textDocument/completion") then
vim.lsp.completion.enable(true, client.id, event.buf)
end
end,
})
vim.api.nvim_create_autocmd("InsertCharPre", {
callback = function()
vim.lsp.completion.get()
end,
})
vim.keymap.set("i", "<Tab>", function()
if vim.fn.pumvisible() == 1 then
local selected = vim.fn.complete_info({ "selected" }).selected
if selected == -1 then
return "<C-n><C-y>"
end
return "<C-y>"
end
return "<Tab>"
end, { expr = true })
vim.keymap.set("i", "<CR>", function()
if vim.fn.pumvisible() == 1 then
local selected = vim.fn.complete_info({ "selected" }).selected
if selected ~= -1 then
return npairs.esc("<C-y>")
end
end
return npairs.autopairs_cr()
end, {
expr = true,
replace_keycodes = false,
})
```
Le bloc `init_options` contient un contournement temporaire pour Ruby LSP 0.26.11 : dans certains petits projets Ruby plats, Ruby Indexer peut construire le motif `{}/**/*.rb` et indexer un même fichier sous deux chemins différents. Cette exclusion neutralise uniquement ce motif ; les fichiers Ruby restent indexés normalement. Lorsque le problème sera corrigé dans Ruby LSP/Ruby Indexer, le bloc `init_options` pourra être retiré.
Neovim gère les plugins avec `vim.pack`. `plenary.nvim` est une dépendance de Telescope, `nvim-autopairs` ferme automatiquement les parenthèses, crochets, accolades et guillemets, et Grug Far utilise `ripgrep` pour la recherche et le remplacement. La complétion Ruby, les signatures de méthodes et la navigation LSP utilisent directement les fonctions intégrées à Neovim, sans plugin de complétion supplémentaire.
Le réglage `vim.opt.clipboard = "unnamedplus"` relie le registre par défaut de Neovim au presse-papiers système. Sous Wayland, Neovim utilise `wl-copy` et `wl-paste` fournis par `wl-clipboard`. Vous pouvez vérifier le fournisseur détecté avec :
```text
:checkhealth vim.provider
```
La section `Clipboard` doit indiquer qu'un outil de presse-papiers a été trouvé.
### Mise à jour des plugins
Pour rechercher les nouvelles versions des plugins gérés par `vim.pack` :
```text
:packupdate
```
Vérifiez les changements proposés, puis utilisez `:write` pour les accepter. Pour contrôler l'état du gestionnaire de plugins :
```text
:checkhealth vim.pack
```
## Ruby
### Ruby LSP
Installez `ruby-lsp` avec le Ruby utilisé par votre environnement :
```sh
$ gem install ruby-lsp
```
Vérifiez ensuite le client LSP dans Neovim :
```text
:checkhealth vim.lsp
```
### RuboCop
Installez RuboCop avec le Ruby utilisé par votre environnement :
```sh
$ gem install rubocop
```
Vérifiez son installation :
```sh
$ rubocop -V
```
Créez `~/.rubocop.yml` pour activer automatiquement les nouvelles règles ajoutées comme `pending` par RuboCop :
```sh
$ nvi ~/.rubocop.yml
```
Ajoutez ensuite :
```yaml
AllCops:
NewCops: enable
```
RuboCop est utilisé manuellement pour mettre en forme le code et effectuer des vérifications ciblées.
Pour appliquer uniquement les règles de mise en forme à l'ensemble du projet :
```sh
$ rubocop --only Layout -A
```
Pour afficher uniquement les remarques de style :
```sh
$ rubocop --only Style --format simple
```
Pour rechercher les ambiguïtés et erreurs potentielles signalées par les règles `Lint` :
```sh
$ rubocop --lint --format simple
```
## Utilisation
Placez-vous dans le dossier du projet et lancez Neovim :
```sh
$ cd ~/src/projet
$ nvim .
```
Sans fichier explicitement indiqué, Telescope s'ouvre directement. Si un fichier est passé sur la ligne de commande, Neovim l'ouvre normalement :
```sh
$ nvim lib/game.rb
```
Les commandes suivantes suffisent pour commencer :
| Commande | Action |
| --- | --- |
| `i` | Passer en mode insertion |
| `Esc` | Revenir en mode normal |
| `v` | Commencer une sélection visuelle |
| `y` (mode visuel) | Copier la sélection dans le presse-papiers système |
| `yy` | Copier la ligne courante dans le presse-papiers système |
| `p` | Coller depuis le presse-papiers système |
| `:w` | Enregistrer |
| `:q` | Quitter |
| `Space f` | Rechercher et ouvrir un fichier du projet |
| `Space b` | Afficher les buffers ouverts |
| `Space g` | Rechercher du texte dans le projet avec `ripgrep` |
| `Space w` | Rechercher dans le projet le mot sous le curseur |
| `Space l` | Reprendre la dernière vue Telescope |
| `Space d` | Afficher les diagnostics connus par Neovim avec Telescope |
| `Space r` | Ouvrir Grug Far pour rechercher et remplacer |
| `Ctrl-]` | Aller à la définition |
| `Ctrl-t` | Revenir après un saut vers une définition |
| `Ctrl-s` | Afficher la signature de la méthode en mode insertion (raccourci LSP natif) |
| `Tab` | Accepter la proposition sélectionnée, ou la première proposition si aucune ne l'est |
| `Entrée` | Accepter la proposition sélectionnée, sinon insérer une nouvelle ligne |
| `u` | Annuler |
### Grug Far
`Space r` ouvre Grug Far dans un split vertical. En mode visuel, la sélection courante est utilisée pour préremplir le texte recherché.
Les raccourcis principaux dans Grug Far sont :
| Commande | Action |
| --- | --- |
| `,r` | Appliquer le remplacement |
| `,c` | Fermer Grug Far |
| `Entrée` | Ouvrir l'emplacement du résultat sous le curseur |
La virgule correspond ici à `<localleader>`, défini dans la configuration avec `vim.g.maplocalleader = ","`.
Pour vérifier l'installation ou diagnostiquer un problème :
```text
:checkhealth grug-far
```
Dans Telescope :
| Commande | Action |
| --- | --- |
| `Ctrl-n` ou `↓` | Résultat suivant |
| `Ctrl-p` ou `↑` | Résultat précédent |
| `Entrée` | Ouvrir le résultat |
| `Ctrl-v` | Ouvrir dans un split vertical |
| `Ctrl-x` | Ouvrir dans un split horizontal |
| `Ctrl-t` | Ouvrir dans un nouvel onglet |
| `Ctrl-c` | Fermer Telescope |
La ligne de commande de Neovim propose automatiquement les complétions lorsque vous saisissez une commande après `:`.
## Ignorer des fichiers du projet
Pour masquer certains fichiers ou dossiers dans les recherches de Telescope sans modifier `.gitignore`, créez un fichier `.rgignore` à la racine du projet. Cette règle reste propre aux recherches locales et ne change pas les fichiers suivis par Git.
Par exemple, pour ignorer le dossier `doc/` :
```sh
$ printf 'doc/\n' > .rgignore
```
`ripgrep` prendra ce fichier en compte pour les recherches effectuées par Telescope lorsqu'il est utilisé comme moteur de recherche.
[Retour au guide principal](../README.md)
+105
View File
@@ -0,0 +1,105 @@
# Après l'installation
Quelques rappels correspondant à ma configuration et à mes usages habituels après une nouvelle installation sur une station de travail KDE Plasma. Ces étapes ne sont pas nécessaires dans tous les cas.
## Configuration de Plasma
Dans SDDM, sélectionnez la session **Plasma (Wayland)** avant de vous connecter.
Quelques réglages correspondant à mes préférences habituelles dans **Configuration du système** :
* **Apparence** → **Thème global** : sélectionner **Breeze sombre** ;
* **Matériel** → **Affichage et écran** → **Couleur de nuit** : cocher **Activer la couleur de nuit** ;
* **Matériel** → **Périphériques d'entrée** → **Clavier** → **Dispositions** : activer **Configurer les dispositions**, puis ajouter **Français** ;
* **Espace de travail** → **Comportement de l'espace de travail** → **Bords de l'écran** : désactiver les actions configurées dans les coins ;
* **Espace de travail** → **Comportement de l'espace de travail** → **Comportement général** : pour **Cliquer sur des fichiers ou des dossiers**, choisir **Les sélectionne** afin d'utiliser un clic pour sélectionner et un double-clic pour ouvrir ;
* **Espace de travail** → **Comportement de l'espace de travail** → **Bureaux virtuels** : ajouter un deuxième bureau et le nommer **Bureau 2**.
Et également dans l'émulateur de terminal **Konsole** → **Configuration** : désactiver **Afficher la barre de menus**.
## Icône Slackware pour le menu Plasma
Depuis la racine du dépôt, installez le fichier `slackware.svg` dans les icônes système :
```sh
# mkdir -p /usr/local/share/icons
# cp slackware.svg /usr/local/share/icons/slackware.svg
```
Dans Plasma, éditez ensuite le lanceur d'applications et choisissez `/usr/local/share/icons/slackware.svg` comme icône.
## KMix
Faites un clic droit sur l'icône de volume de KMix, puis ouvrez **Configurer KMix** → **Démarrage** et décochez **Démarrer KMix au démarrage du bureau**.
Faites ensuite de nouveau un clic droit sur l'icône de KMix et choisissez **Quitter**.
## HPLIP Systray
Pour empêcher l'applet HPLIP de se lancer avec Plasma :
```sh
$ mkdir -p ~/.config/autostart
$ cp /etc/xdg/autostart/hplip-systray.desktop ~/.config/autostart/
$ echo 'Hidden=true' >> ~/.config/autostart/hplip-systray.desktop
```
Cette modification désactive uniquement l'icône de la zone de notification pour l'utilisateur courant. Elle prend effet après reconnexion.
## SSH
Copiez les clés SSH dans `~/.ssh` en respectant les droits suivants :
```text
[drwx------] ~/.ssh/
├── [-rw-------] id_ed25519
└── [-rw-r--r--] id_ed25519.pub
```
Si nécessaire :
```sh
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ed25519
$ chmod 644 ~/.ssh/id_ed25519.pub
```
> Les droits de la clé privée doivent être correctement définis pour qu'OpenSSH l'accepte.
## Git
Configurez votre nom et votre adresse e-mail :
```sh
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
```
Pour vérifier la configuration :
```sh
$ git config --global --list
```
## KeePassXC
> Nécessite `sbopkg`.
Installez KeePassXC et ses dépendances :
```sh
# sqg -p keepassxc
# sbopkg -i keepassxc
```
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
Pensez ensuite à copier la base de données KeePassXC.
Et pour finir, assurez-vous qu'elle n'est visible que par votre utilisateur :
```sh
$ chmod 600 ~/<bd-keepassxc>
```
[Retour au guide principal](../README.md)
+68
View File
@@ -0,0 +1,68 @@
# Ruby avec rbenv depuis SlackBuilds.org
> Nécessite `sbopkg`.
Slackware 15.0 fournit Ruby 3.0.7. Si vous souhaitez utiliser une version plus récente sans remplacer le paquet système, installez `rbenv` et `ruby-build` depuis SlackBuilds.org :
```sh
# sbopkg -i rbenv
# sbopkg -i ruby-build
```
Initialisez ensuite `rbenv` pour votre shell :
```sh
$ rbenv init
```
La commande ajoute automatiquement l'initialisation nécessaire au fichier de démarrage de Bash. Déconnectez-vous puis reconnectez-vous à votre session pour prendre en compte la modification.
Vérifiez que les outils sont bien disponibles :
```sh
$ rbenv --version
$ ruby-build --version
```
Vous pouvez maintenant afficher les versions de Ruby disponibles :
```sh
$ rbenv install -l
```
Installez ensuite celle que vous souhaitez utiliser, par exemple :
```sh
$ rbenv install 4.0.7
```
Pour en faire la version par défaut pour votre utilisateur :
```sh
$ rbenv global 4.0.7
```
## Vérification
Vérifiez enfin la version utilisée :
```sh
$ ruby -v
$ command -v ruby
```
Avec `rbenv` actif, `ruby` doit normalement pointer vers :
```text
/home/<utilisateur>/.rbenv/shims/ruby
```
Le Ruby fourni par Slackware reste installé dans `/usr/bin/ruby`. `rbenv` ne remplace pas le paquet système : il place simplement ses propres *shims* en tête du `PATH` pour le shell de l'utilisateur.
Pour vérifier séparément la version système :
```sh
$ /usr/bin/ruby -v
```
[Retour au guide principal](../README.md)
+74
View File
@@ -0,0 +1,74 @@
# virt-manager depuis SlackBuilds.org
> Nécessite `sbopkg`.
Pour utiliser virt-manager avec QEMU/KVM, installez **QEMU** en plus de virt-manager : `qemu` n'est pas une dépendance déclarée de `virt-manager`.
Commencez par générer les queues de dépendances :
```sh
# sqg -p qemu
# sqg -p virt-manager
```
Installez d'abord QEMU :
```sh
# sbopkg -i qemu
```
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre. Faites ensuite la même chose pour virt-manager :
```sh
# sbopkg -i virt-manager
```
Avec les options par défaut des SlackBuilds, `libvirt` et QEMU utilisent le groupe `users`. Pour permettre à un utilisateur normal d'utiliser virt-manager, décommentez ou réglez dans `/etc/libvirt/libvirtd.conf` :
```text
unix_sock_group = "users"
unix_sock_rw_perms = "0770"
```
L'utilisateur doit bien sûr appartenir au groupe choisi.
Rendez ensuite le service exécutable et démarrez-le :
```sh
# chmod +x /etc/rc.d/rc.libvirt
# /etc/rc.d/rc.libvirt start
```
Pour démarrer libvirt automatiquement avec le système, ajoutez dans `/etc/rc.d/rc.local` :
```sh
# Libvirt
if [ -x /etc/rc.d/rc.libvirt ]; then
/etc/rc.d/rc.libvirt start
fi
```
Éditez ensuite `/etc/rc.d/rc.local_shutdown` ; le fichier sera créé s'il n'existe pas :
```sh
# nvi /etc/rc.d/rc.local_shutdown
```
Puis ajoutez :
```sh
# Libvirt
if [ -x /etc/rc.d/rc.libvirt ]; then
/etc/rc.d/rc.libvirt stop
fi
```
Enfin, rendez le script exécutable :
```sh
# chmod +x /etc/rc.d/rc.local_shutdown
```
> `rc.libvirt stop` effectue par défaut un `managedsave` des machines virtuelles encore actives. Prévoyez donc suffisamment d'espace disque pour sauvegarder leur mémoire.
[Retour au guide principal](../README.md)