84 lines
4.6 KiB
Markdown
84 lines
4.6 KiB
Markdown
# Yazi comme FileChooser du portail
|
||
|
||
Package GNU Stow : `stow -d ~/.dotfiles -t ~ portal`. Les fichiers actifs dans
|
||
`~/.config/xdg-desktop-portal/` et
|
||
`~/.config/xdg-desktop-portal-termfilechooser/` sont des liens Stow. La règle
|
||
SwayFX est dans le package `sway`.
|
||
|
||
## Dépendances
|
||
|
||
Arch Linux : `xdg-desktop-portal`, `xdg-desktop-portal-gtk`,
|
||
`xdg-desktop-portal-wlr`, `kitty`, `yazi`, `jq`, `swayfx`, `libinih`,
|
||
`libsystemd`, `meson`, `ninja` et `scdoc` pour une compilation complète. Le
|
||
backend retenu est
|
||
[`hunkyburrito/xdg-desktop-portal-termfilechooser`](https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser),
|
||
version 1.4.3, commit `bcb2387949e4eb38a35390ebf1693f92869e619d` dans
|
||
l'installation testée. Le paquet AUR
|
||
`xdg-desktop-portal-termfilechooser-hunkyburrito-git` existe aussi.
|
||
|
||
Cette machine utilise une installation Meson utilisateur sous `~/.local`, sans
|
||
changer les backends système. Les fichiers nécessaires sont
|
||
`~/.local/libexec/xdg-desktop-portal-termfilechooser`,
|
||
`~/.local/share/dbus-1/services/org.freedesktop.impl.portal.desktop.termfilechooser.service`
|
||
et `~/.local/share/xdg-desktop-portal/portals/termfilechooser.portal`.
|
||
La procédure de reproduction, conservée dans ce dépôt indépendamment du cache
|
||
de construction, est la suivante (sans l'exécuter pendant une simple publication) :
|
||
|
||
```sh
|
||
git clone https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser.git
|
||
cd xdg-desktop-portal-termfilechooser
|
||
git checkout --detach bcb2387949e4eb38a35390ebf1693f92869e619d
|
||
meson setup build --prefix="$HOME/.local"
|
||
meson compile -C build
|
||
meson install -C build
|
||
```
|
||
|
||
Contrôler ensuite les trois chemins ci-dessus et la configuration Stow de ce
|
||
dossier. Le dépôt source et le répertoire `build` sont temporaires et ne font
|
||
pas partie des dotfiles. Cette procédure installe uniquement dans le préfixe
|
||
utilisateur ; elle ne remplace aucun paquet système.
|
||
Après installation ou mise à jour du backend, recharger seulement
|
||
`xdg-desktop-portal.service` après avoir vérifié qu'aucune session de partage
|
||
d'écran ou requête portal n'est en cours.
|
||
|
||
## Routage et fenêtre
|
||
|
||
`FileChooser` utilise `termfilechooser`, `ScreenCast` et `Screenshot` utilisent
|
||
`wlr`, `Secret` utilise `gnome-keyring`, et les autres interfaces disponibles
|
||
gardent `gtk`. `XDG_CURRENT_DESKTOP=sway:wlroots:swayfx` sélectionne la
|
||
configuration utilisateur `portals.conf` avant les fichiers système propres à
|
||
Sway. Le wrapper lance Kitty avec `--class labfy-yazi-filechooser` ; SwayFX
|
||
flotte et centre uniquement cet `app_id`. Kitty calcule au lancement une taille
|
||
de 1000 × 650, bornée à la sortie SwayFX active avec une marge de 40 pixels.
|
||
La fenêtre reste redimensionnable et sur le workspace courant. Le thème Kitty
|
||
et le thème Yazi Catppuccin Mocha sont ceux de la configuration habituelle.
|
||
|
||
Firefox 157 utilise le portail FileChooser en mode automatique quand il est
|
||
disponible. Aucun `GTK_USE_PORTAL` global ni préférence de profil n'est
|
||
nécessaire dans cette installation. Pour diagnostiquer un profil différent,
|
||
vérifier `widget.use-xdg-desktop-portal.file-picker` dans `about:config` : `1`
|
||
force le portail, `0` le désactive, `2` suit le mode automatique.
|
||
|
||
## Utilisation
|
||
|
||
Dans le sélecteur, `o` ou `Entrée` valide le ou les fichiers survolés ou
|
||
sélectionnés. `Espace` sélectionne chaque fichier en mode multiple. `q` annule
|
||
un choix de fichier ; `Q` annule aussi et ne transmet pas le dossier courant.
|
||
Pour un dossier, entrer dedans puis appuyer sur `q` ; `Q` annule. `M` ouvre le
|
||
menu des supports, `g` puis `Espace` permet de saisir un chemin. Ouvrir un
|
||
fichier via Yazi sans mode chooser n'est pas la même opération : ici, le
|
||
wrapper utilise `--chooser-file` pour remettre les chemins à l'application.
|
||
|
||
Pour « Enregistrer sous », le backend crée un fichier provisoire annoté. Le
|
||
déplacer avec `x`, naviguer vers la destination, le déposer avec `p`, puis le
|
||
renommer avec `r` si nécessaire. Valider le fichier avec `o` ou `Entrée`, puis
|
||
répondre `o` au prompt de confirmation du wrapper. Le prompt avertit que
|
||
l'application peut écraser une destination existante ; répondre autrement
|
||
annule. `Q` dans Yazi annule également et le backend supprime le provisoire
|
||
resté à son emplacement d'origine. Si le provisoire a été déplacé avant une
|
||
annulation, supprimer manuellement ce fichier déplacé. Les essais doivent
|
||
utiliser un dossier temporaire et éviter tout écrasement de données réelles.
|
||
|
||
Les applications GTK/Qt qui utilisent leurs dialogues natifs plutôt que le
|
||
portail conservent leur comportement. Ce réglage ne change aucune association
|
||
MIME et ne remplace pas les portails d'autres interfaces.
|