????????????????? ?????????????????? ? csv-generator ? --> ? graphical menu ? ????????????????? ??????????????????
Primul proces produce continutul meniului, in timp ce al doilea genereaza meniul grafic. jgmenu_run este un script de infasurare polivalent care face urmatoarele in pseudo-cod:
if (jgmenu is already running) show menu else start a new instance of jgmenu
Acest lucru il face potrivit pentru utilizarea cu panouri si comenzi rapide de la tastatura.
generatoare de csv
USAGE: jgmenu_run pmenu|lx|apps|ob
lx genereaza jgmenuaromadate meniu CSV pentru freedesktop.org meniuriaplicatii definite, folosind libmenu-cache LXDE lui.
pmenu Scriptul Python originalpentru a genera jgmenuaromadate meniu CSV bazat pe .desktop si .directory fisiere gasite pe sistem, dar ignorând orice .menu fisiere.
aplicatiile genereaza date de meniu CSV aromate de jgmenu pentru aplicatiile de sistem care utilizeaza date de schema incorporate sau un fisier de schema specificat pentru a mapa categoriile catre directoare, mai degraba decâtfisierele desistem .director .
ob converteste datele existente din meniul openbox XML in CSV cu aroma jgmenu, dar nu genereaza date de meniu pentru aplicatiile de sistem.
Pentru a ilustra ce este un generator de cv, sa utilizam un caz foarte simplist al unui meniu de aplicatii de sistem:
#!/bin/bash for f in /usr/share/applications/*.desktop; do app=$(grep '^Exec=' $f) echo ${app#*=} done
Iesirea generata de acesta trebuie procesata pentru a face formatarea csv intr-un mod care poate fi folosit de jgmenu , care este ambalat cu un numar de generatoare de cv -uri (denumite si module). Modulele de aplicatii , pmenu si lx produc meniuri „aplicatie de sistem” si puteti adauga elemente de meniu in partea de sus si de jos a meniului radacina prin editarea prepend.csv si / sau append.csv .
Acestea produc meniu csv structurat astfel:
???????????????????????????????? ? prepend.csv content ? ????????????????????????????????<-- This is where "^tag(apps)" must appear ? (supplied by csv-generator..)| if you want to show System Applications ? Graphics,^checkout(Graphics) ? ? System,^checkout(System) ? ? etc. ? ? ? ???????????????????????????????? ? append.csv content ? ???????????????????????????????? ? (supplied by csv-generator..)| | ^tag(Graphics) | ? gimp ? ? etc. ? ? ? ? ^tag(System) ? ? xterm ? ? etc. ? ????????????????????????????????
Sa ignoram append.csv si sa ne concentram pe prepend.csv . Am putea popula prepend.csv cu câteva aplicatii, pentru a produce un meniu de acest fel:
???????????????????????????????? ? xterm ? ? firefox ? ???????????????????????????????? ? Graphics,^checkout(Graphics) ? ? System,^checkout(System) ? ? etc. ? ? ? ? ^tag(Graphics) ? ? gimp ? ? etc. ? ? ? ? ^tag(System) ? ? xterm ? ? etc. ? ????????????????????????????????
În noul meniu BunsenLabs, am pus o linie ^ tag (aplicatii) la sfârsitul fisierului prepend.csv. Pentru a intelege acest truc, trebuie sa va dati seama ca procesul care intocmeste meniul grafic nu face decât sa citeasca linii din csv-generator si este complet ignorat de modul in care csv-generator isi face efectiv treaba.
În exemplul de mai jos, jgmenu va interpreta linia ^ tag (aplicatii) drept definitia nodului pentru meniul „aplicatie de sistem” (incepând cu „Grafica”).
Rezultatul acestei linii ^ tag () este, prin urmare, ca „aplicatiile de sistem” sunt intrerupte din meniul radacina si devin submeniu folosind ^ checkout () sau ^ root () .
???????????????????????????????? ? xterm ? ? firefox ? ? applications,^checkout(apps) ? ? ? ? ^tag(apps) ? ???????????????????????????????? ? Graphics,^checkout(Graphics) ? ? System,^checkout(System) ? ? etc. ? ? ? ? ^tag(Graphics) ? ? gimp ? ? etc. ? ? ? ? ^tag(System) ? ? xterm ? ? etc. ? ????????????????????????????????
Are ^ tag (aplicatii) trebuie sa vina la sfârsitul anului ?
Da. Desi nu trebuie sa fie „aplicatii”, trebuie doar sa corespunda cu linia „ Aplicatii, ^ checkout (orice) ” mai departe in prepend.csv , unde doriti sa apara in meniu.
Este un hack pentru a evita afisarea „directorilor desktop” din meniul radacina.
Deasupra liniei ^ (aplicatii) , putem adauga orice dorim - asa cum avem in noul meniu BunsenLabs.
Sub acesta puteti adauga orice doriti sa apara in partea de sus a submeniului Aplicatii.
Sourcing-ul fisierelor functioneaza la fel ca in cazul unui script shell - adica continutul fisierului provenit inlocuieste liniile care efectueaza aprovizionarea (linia care incepe cu un punct). Deci, atâta timp cât rezultatul net al oricarei aprovizionari paraseste ultima linie a fisierului prepend.csv ca acealiniemagic ^ tag () , puteti fisiere fisiere in orice mod / ordine doriti.
Extragerea datelor csv pentru aplicatii
Este posibil sa se creeze un meniu care sa afiseze doar datele Aplicatiilor, prin utilizarea unei variabile de mediu pentru a ignora prepend.csv si append.csv . Fie afisati direct un meniu doar pentru aplicatii, fie salvati cv-ul intr-un fisier care ar putea fi apoi furnizat de jgmenu --simple .
JGMENU_NO_PEND poate fi setat pentru aplicatii sau lx :
JGMENU_NO_PEND=1 jgmenu_run apps|lx | jgmenu --simple . or . JGMENU_NO_PEND=1 jgmenu_run apps|lx > mymenu.csv