Az xclip használata nem egy érdekfeszítő téma, hiszen van szebb és többet tudó vágólap kezelő is. Az xclip egy egyszerű, de stabil vágólap kezelő, aminek nagy előnye, hogy parancssoros. Így mini szkriptekbe beépíthető, és minden rendszer tartozéka. Ha véletlenül nem települt fel, akkor telepíteni kell, amit a saját csomagkezelőddel megtehetsz. Értelemszerűen csak xorg alatt müködik.
Az xclip alapjai
A lehető legegyszerűbb, de pár olyan pici trükkje van, amit érdemes ismerni. Tegyük fel, hogy egy fájl tartalmát a vágólapra akarjuk másolni. Az xclip segítségével kétféleképpen tehetjük meg.
xclip file_name
vagy
xclip -sel clip file_name
Mi a különbség a két parancs között? Eltekintve attól, hogy a második hosszabb? Az első parancs akkor működik, ha az egér középső gombját használnád a szöveg beillesztéséhez. Nem mindenki szereti ezt! Sok ember szöveg beillesztéséhez Ctrl + V billentyűkombinációt használná szívesebben. A -sel clip opcióval biztosíthatja, hogy beilleszthesd ezzel. Eddig nincs semmi extra, ezt a legtöbb vágólap kezelést is tudó program is tudja.
Itt jön egy kellemes kis tipp
Ha terminálos parancs kimenetét szeretnéd beilleszteni valahova (pld. egy ilyen cikkbe!), akkor nagyon kellemes megoldás a
parancs | xclip
A parancs legyen most a free | xclip, és lefutása után már egy szövegbe illeszthető a kimenet. Sokszor kényelmesebb, mint a terminálból kimásolni, majd beilleszteni. Hogy ne csak ilyen unalmas, és egyszerű legyen:
tail -n 30 logfile.log | xclip -sel clip
Az adott logfájl utolsó harminc sora kerül a vágólapra, amit egy jelentésbe illeszthetsz. De egy érdekes megoldást is találtam az egyik cikkben.
pandoc -t html file.md | xclip -sel clip
A cikkíró írásainak nagy része valamilyen tartalomkezelő rendszerbe (CMS) kerül, vagy az interneten való közzététel céljából készül. Ő azonban nem használ WYSIWYG szerkesztőt, hanem offline megírja sima szövegben, amit Markdown szerint formáz. Ez azt jelenti, hogy valami mód a Markdown formátumot át kell alakítani sima html-é, majd azt beilleszteni a weboldalra. Ennek a pandoc parancsnak a használatával konvertálhatunk egy Markdown formátumú fájlt HTML formátumba, és egy csapásra bemásolható lesz. Saját megjegyzésem: a pandoc ennél sokkal többet tud, érdemes – ha sok átalakítandó szöveged van – kissé utánaolvasni.
Azt természetesen csak megemlítem, mert alap: kezeli más programok által a vágólapra rakott dolgokat is, így a kivág, kimásol és a középső egérgombbal kijelölt szövegeket is kezeli.
Beillesztés az xclip segítségével
Hogyan lehet lekérni a másolt adatokat a vágólapról? Ez egyszerű! A következő parancs futtatásával a rendszer vágólapjának tartalmát a terminálba másolod:
xclip -o -sel clip
A másik megoldás a beilleszteni az X11 elsődleges kiválasztási területének tartalmát a terminálba:
xclip -o -sel c
Érthető, hogy ezek nem mindennap használt és nem túl hasznos megoldások, de ezek adják az alapját a továbbiaknak.
A vágólap tartalmát bemásolhatod egy fájlba. Ami elsőre nem tűnik hasznosnak, de pár pillanat múlva már az lesz!
xclip -o -sel clip > file.txt xclip -o > file.txt
A kettő közti különbséget már értjük. Felülírás helyett egyszerűen dupla >> szimbólummal fűzheted hozzá az adatokat a kimeneti fájlhoz. Ez is ismert.
Szövegeknél ez nagyon hasznos, de sok esetben a formátumot is szeretnénk megadni:
xclip -selection clipboard -t image/png -o > ./avatar.png
Ez egy nagyon egyszerű szkript, amit én napi szinten használok, és a fájlkezelőmben egy gyorsbillentyűhöz kötöttem. Általában egy-egy képfájl beillesztése egy könyvtárba az internetről a „kijelölöm, lementem a gépre, majd bemásolom a megfelelő könyvtárba” sorrendben történik. Ha az xclip használatát ismerjük, akkor az interneten (vagy bárhol) a „jobb klikk, másol” funkciót alkalmazzuk a képre, majd a megfelelő könyvtárban csak lefut a fenti parancs és máris ott a fájl.
Én a spacefm fájlkezelőt használom, és ez lesz a példa szerkezete is. De bármely ezeket a funkciókat használó fájlkezelővel működni fog ez a tipp:
$fm\_import fullfile="${fm\_filenames\[@\]}" f=$(basename "$fullfile" | cut -d. -f1) clipit -c > "$f".txt exit $?
A kívánt fájlt, jellemzően tömörítvényt, képet, vagy esetleg programot a fájlkezelőben kijelölöm, majd a letöltési helyen kijelölöm a leírást hozzá (hogy tudjam mit is tartalmaz a fájl) és lefuttatom gyorsbillentyűvel a fenti parancsot. A letöltött fájl nevével megegyező sima szövegfájlt létrehozza, majd beilleszti a vágólap tartalmát. Így minden esetben lesz egy kis magyarázat, leírás stb. a letöltött (vagy más) fájlokhoz.
Két, könnyen értelmezhető megoldás a Ranger-hez:
map bt shell a=$(basename %f | cut -d. -f1); xclip -selection clipboard -o > "$a".txt map bk shell a=$(basename %f | cut -d. -f1); xclip -selection clipboard -t image/png -o > "$a".png
Komolyabb, összetettebb megoldás
Ha böngészel, olvasol, akkor jó lenne egy kis jegyzetelő program, amibe kimented azokat a részeket amiket el szeretnél tenni. Én a joplin-t használom egy-egy weblap lementéséhez. Ez jó megoldás, de sokszor csak egy részlet kell, vagy ami bosszantóbb az adott oldal (fórum, discord stb.) nem feltétlen támogatott. Egy jó tippet tartalmazó discord vagy reddit bejegyzés mentésére nem alkalmas. Erre találtam egy kis szkriptet https://github.com/einalex/note oldalon.
A használata egyszerű, a leírása is jó, így csak gyors áttekintést adok.
A szkriptet letöltöd, vagy elkészítesz egy fájlt és belemásolod a programocskát, kap egy futtatási jogot, és berakod egy olyan könyvtárba, ami a PATH-ban van.
Hozzárendelsz egy billentyűkombinációt, illetve ha olyan környezet használsz, akkor megadod a megjelenítés pontos helyét.
A fájlban egy fontos beállítás van: mentés helye. Egy létező könyvtárat kell megadni, amibe kerülnek a fájlok.
Ezután már nincs más dolgod, csak böngészel, olvasol egy doksit, ebookot stb. Majd amit menteni akarsz, kijelölöd, és meghívod a szkriptet. Megadod a mentést tartalmazó fájl nevét és abba le is menti. Kilistázza a megadott könyvtárban lévő neveket, illetve a dátumot is felajánlja fájlnévnek. Így egy meglévő fájlhoz is hozzáfűzhetsz egy-egy plusz részt. Az első pillanatban, amikor a reddit fórumon olvastam róla elég feleslegesnek találtam. Majd én a zim-be simán bemásolom és akkor majd ott lesz… Azután ráébredtem, hogy az esetek nagy részében elmarad, mert a macerás és majd később… Ezzel kapcsolatos kis trükk: ha a zim egyik alkönyvtárát adod meg a note célkönyvtárának, akkor a zim is látja a jegyzeteidet, és akkor már abban is rendezheted az anyagot. Ez az egyik nagy előnye a zim-nek: sima könyvtár szerkezetet és sima szövegfájlokat használ.
Kiegészítés: hasonló funkciókat lát el egy böngésző kiegészítőm is a MarkDownload - Markdown Web Clipper, amit érdemes megnézni. Ez .md formátumot használ, amit a Zettlr vagy az obsidian (és sokféle egyéb) szerkesztő formázással együtt beolvas.