bastien-mrq/clip / README.md
README.md
Code Preview
# clip
> Copie un fichier dans le presse-papier depuis le terminal — ⌘V le colle en **pièce jointe**.
`clip` met le **fichier lui-même** dans le presse-papier, exactement comme un ⌘C dans le
Finder ou un Ctrl+C dans Nautilus. Un ⌘V (Ctrl+V sur Linux) dans Google Chat, Gmail,
Slack ou un gestionnaire de fichiers le colle alors en pièce jointe.
Fini le glisser-déposer depuis une fenêtre Finder qu'il faut d'abord retrouver.

## Utilisation
```bash
clip rapport.pdf # copie le fichier → ⌘V = pièce jointe
clip a.zip photo.jpg doc.pdf # plusieurs fichiers d'un coup
clip -c notes.txt # copie le CONTENU texte du fichier
clip -p rapport.pdf # copie le chemin absolu
git diff | clip # copie la sortie d'une commande (texte)
clip --help # aide
```
Fonctionne avec **tout type de fichier** : PDF, images, archives, vidéos, dossiers…
et avec les noms contenant espaces et accents.
## Installation
```bash
git clone https://git.neuromancer.ovh/bastien-mrq/clip.git
cd clip
chmod +x clip
sudo cp clip /usr/local/bin/
```
**Linux uniquement** — installer un outil presse-papier si absent :
```bash
# Wayland
sudo apt install wl-clipboard # ou dnf / pacman
# X11
sudo apt install xclip
```
Sur macOS, rien à installer (`osascript` et `pbcopy` sont natifs).
## Comment ça marche
- **macOS** : le script écrit dans `NSPasteboard` via AppKit (JXA) une référence
`public.file-url` par fichier, plus le format legacy `NSFilenamesPboardType` que
Chrome utilise pour le collage multi-fichiers — la même chose qu'un ⌘C dans le Finder.
Un court délai avant de quitter garantit que le serveur de presse-papiers a bien
reçu tous les items (sans lui, seul le premier survit à la mort du processus).
- **Linux** : les chemins sont copiés au format MIME `text/uri-list` (`file:///…`,
encodage URI correct) via `wl-copy` (Wayland) ou `xclip` (X11). C'est le format que
Chrome lit pour joindre des fichiers.
- Le mode texte (`-c`, `-p`, stdin) utilise `pbcopy` / `wl-copy` / `xclip` / `xsel`.
## Développement
La démo `demo.gif` est générée avec [charmbracelet/vhs](https://github.com/charmbracelet/vhs) :
```bash
vhs demo.tape
```
## Licence
[GNU GPL v3](LICENSE) — © 2026 Bastien Marques.