Gitfed
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.

![Démo de clip](demo.gif)

## 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.