Designul jgmenu este foarte modular, oferind multa flexibilitate in modul de utilizare. Când jgmenu este pornit, doua procese sunt rulate pentru a produce meniul.
????????????????? ?????????????????? ? 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
- What is your reaction?
- powered by Verysign
-
Like -
Unmoved -
Amused -
Excited -
Angry -
Sad

1 Web The #bunsenlabs IRC channel has been moved to the Libera.chat network

2 Distro BunsenLabs Helium - OpenBox desktop environment based on stable Debian

3 Distro BunsenLabs Lithium 32 bit Release Candidate

4 Distro BunsenLabs Lithium is now available on 64-bit RC
- Comment
- powered by Verysign