Fare menu e sottomenu kde

Il trucco è i file “.desktop”!

Questi file basta immetterli in determinati posti e automaticamente un servizio li leggerà e incorpora le loro informazioni (di solito un database) e quindi crea il menu della barra di KDE e delle voci di Dolphin e altre.

Forse è meglio fare un esempio per semplificare il tutto.

Costruiamoci un sotto-menu per dolphin per fare gli attach su Thunderird, ovvero vedo un file su dolphin e metto il puntatore del mouse sopra e cliccando con il tasto destro mi si apre un menu per far si che quel file venga automaticamente attaccata ad un email creta da Thunderbird.

Per questo usiamo già un sistema presente in

http://kde-apps.org/content/show.php/Thunderbird+Service+Menu?content=19328

Come vedete KDE fornisce addirittura un sito per pubblicare i KDE Service Menu altro nome di apps-menu.

http://kde-apps.org/?xcontentmode=287

Scarichiamolo e dentro vediamo che ci sono 3 files di che spiegano l’arcano, di cui uno “readme” che dice che AttachToThunderbirdMail.desktop deve essere messo in “/usr/share/apps/konqueror/servicemenus” ed lo standard KDE4 e 5 mentre per lo standard precedente KDE3 e inferiori (o usate Konqueror) si usa il file attach_thunderbird.desktop che va messo in “/usr/share/apps/konqueror/servicemenus”.

Dunque adesso sappiamo quale sono le due directory dove inserire i file anche quelli che creeremo noi per i nostri fini.

Dato che usiamo KDE4 e successivi vedremo solo questo file quindi vediamo cosa c’è dentro il file AttachToThunderbirdMail.desktop:

[Desktop Entry]Encoding=UTF-8

ServiceTypes=all/all

Actions=attachToEmail

[Desktop Action attachToEmail]

Name=Attach to Thunderbird Mail

Icon=/usr/share/thunderbird/icons/mozicon16.png

Exec=thunderbird -compose `echo attachment=\’file://%F\’ | sed ‘s/ \//,file:\/\/\//g’`

Come vedete basta settare nel modo corretto i parametri e potete fare di tutto.

Ma quali sono le opzioni che abbiamo? Guardiamo una voce per volta:

[Desktop Entry] = dice che è un file per il desktop

Encoding= dice che codifica carattere usare e di solito si usa lo standard UTF-8 (di solito non è specificato, ma in questo programmino è importante)

ServiceTypes = dice che servizio di menu si deve definire, all/all è per tutti i filee directory che chiederemmo il menu (all/allfiles solo per i file), ovvero quando clicchiamo con il tasto sinistro sopra la loro icona in dolphin. Se per esempio vogliamo quel menu solo per i file “.cue” (un concorrente del formato ISO per immagini di disco) dobbiamo mettere “application/x-cue” che è voce presa dalla codifica application-file internazionale e in questo modo solo i file .cue (oppure quelli l’identificativo x-cue all’interno dello stesso file) si aprira quel menu mentre per tutti gli altri files No. Possiamo mettere più tipi di file, basta separare ogni voce di application-file da un “;”.

Actions= l’azione-menu che vogliamo che faccia, qui attachToEmail e quindi richiama “[Desktop Action attachToEmail]”

[Desktop Action attachToEmail]= questo è il vero corpo di cosa deve fare questo menu.

Name= il nome che vogliamo dagli scritto sul menu, volendo si può specificare le varie lingue usate, per l’italiano mettere anche la voce Name[it] mentre Name[en] è per le diciture del menu solo inglesi.

Icon= qui specifichiamo l’icona da usare, meglio scrivere sempre tutto il percorso dell’immagine (meglio formato png o jpg) da usare, abbiamo da usare anche le icone di sistema e queste hanno solo un nome da scrivere, esempio cdimage è il nome dell’icona di CD.

Exec= qui finalmente possiamo mettere il comando da fargli fare! Provateli prima da terminale se funzionano. Qui usa “thunderbird -compose `echo attachment=\’file://%F\’ | sed ‘s/ \//,file:\/\/\//g’`” che vuol dire che il nome del file che punta il menu (tasto sinistro) sostituisce il punto “%F” e i comandi echo e sed lo trasformano in un percorso fisso per Thunderbird che grazie al suo parametro -compose metterà quel file come attachament dell’email per ora vuota.

Come vedete qui, per “exec” si è preferito spremersi le meningi per far un unica riga di comando (che però è difficilmente interpretabile da un umano), ma non tutti sono tanto capaci oppure ci sono casi che è impossibile fare tutto tanto conciso. Però si può chiamare un altro file di tipo sh (shell o detto anche bash) dove potete mettere i comandi e in più avete un potentissimo interprete comando (bash) che va sempre inserito in “/usr/local/bin/”.

.


Volendo poteva anche mettere altre voci esempio, Actions= dice che “azione” può fare, esempio se mettessi “convertSimple;convertPsx;convertRaw” io posso stabilire delle sottovoci (qui 3) di ogni azione.

Qui potete trovare “voci” per ogni esigenza:

http://archive.oreilly.com/pub/h/3156

altro:

https://techbase.kde.org/Development/Tutorials/it

Le variabili che passa il sistema sono:

%f = Un singolo nome di file, anche se si seleziona più file. In generale, si utilizza solo quando si intende selezionare un singolo file. In alcuni casi, è possibile utilizzare questo per selezionare più file per l’uso da parte di un programma che sa come avviare un’istanza separata per ogni nome di file.
%F = Più file selezionati. Utilizzare questo per programmi che possono agire su più file contemporaneamente.
%u = Un singolo URL.
%U = Multipli URLs.
%d = La singola cartella (directory) che contiene il file selezionato rappresentato da %f.
%D = La lista delle directory che contengono tutti i files selezionati da %F.
%n = Il nome del file, ovvero senza il path.
%N = Multipli nomi di files senza i paths.
%k = Nome e path in rappresentazione URI.

Però fatto un programmino in bash per un desktop nasce l’esigenza che questo programmino interagisca con l’utente, non come un terminale ma visivamente, e qui entra in gioco un potente comando (KDE ma funziona dappertutto) per fare delle GUI standard:

KDialog:

Con il parametro

	--msgbox: visualizza un avviso con l'intervento dell'operatore

Esempi:
      kdialog --msgbox 'Operazione completata con successo'
      kdialog --sorry 'Attenzione! \n Il servizio richiesto non è al momento disponibile'
      kdialog --error 'Impossibile accedere al server'

Con il parametro

      --passivepopup : visualizza un avviso senza intervento dell'operatore

Esempi:
      kdialog --title 'Questa è una popup passive' --passivepopup \
      'Questo messaggio si autodistruggerà tra 10 secondi' 10

Con il parametro

      --password: si usa per digitare una password di accesso ad un servizio


Esempi:
      #!/bin/bash
      answer=$(kdialog --title 'Security' --password 'Please enter the server access code:')
      # in answer va a finire la password
      if [ $? = 0 ]; then
           echo ' you selected: OK'
           echo La password digitata è:\$answer
      else
           echo ' you selected: Cancel'
      fi

Con il parametro

      --menu: crea un menu di scelta


Esempi:
      #!/bin/bash
      # # creiamo un menù di scelta
      opt=$(kdialog --menu 'Menù di scelta' 1 'Lista Files' 2 'Avvia ambiente grafico' 3 'Esci')
      case \$opt in
       1) ls -lisa;;
       2) startx;;
       3) exit;;
      esac
      # per ogni voce di menù viene eseguito il comando indicato

Un altro esempio però completo:

Questo fa dire tutte le proprietà possiede una finestra che avete appena selezionato grazie ad xprop e commentato (se volete o uno o l’altro) c’è xwininfo che fa la stessa cosa ma non proprio!

#!/bin/bashkdialog –title “Clicca su una finestra per sapere le sue informazioni!” –passivepopup \

“il messaggio finisce tra 5 secondi…” 5

#zenity –info \

# –text=”Clicca su una finestra per sapere le sue informazioni!”

xprop >>/home/maurizio/bin/info.txt

# xwininfo >>/home/maurizio/bin/info.txt

kdialog –title “Info Win” –textbox /home/maurizio/bin/info.txt 500 356

#zenity –text-info \

# –title=”Info sulla finestra.” \

# –filename=/home/maurizio/bin/info.txt

rm /home/maurizio/bin/info.txt

Remmato (commentato) vedete che c’è il comando “zenity” (va installato dal repo di gnome) che può fare le stesse cose se kdialog non vi piace.

Qui una bella spiegazione di zenity:

http://www.claudioromeo.it/Joomla/index.php/informatica/74-zenity-script-con-finestre-di-dialogo-grafiche-in-gnome-parte-3-di-3.html

Ok, ci sono diversi, ma oramai quelli che vanno per la maggiore sono loro e gli altri spesso non sono più mantenuti.

Spero che sia tutto… dunque….

Ciaooooooooooooooooooooooooooooooooooooooooooooooooooo

 

Precedente Installare più Linux Successivo Installare HP-Print