Visualizzazione risultati 1 fino 5 di 5

Discussione: Lo scripting su KDE

  1. #1
    Guest

    Predefinito Lo scripting su KDE

    Windows include un sistema piuttosto semplice per la personalizzazione del menù contestuale (quello che appare cliccando col tasto destro sul file).



    KDE offre un'identica feature (ovviamente in stili diversi): la personalizzazione del menù azioni.
    E' suffifciente creare un file .desktop particolare, metterlo in una directory particolare ed il gioco é fatto.



    Tanto per farvi un'idea aprite la directory /usr/share/apps/konqueror/servicemenus: se cliccate sui file .desktop otterrete un errore, ma se ne aprite alcuni con un editor di testo noterete alcune cose interessanti.




    Sostanzialmente tutti i files hanno una struttura particolare:
    incominciano con una sezione Desktop Entry e di volta in volta hanno una o più Desktop Action x.



    In particolare possiamo vedere che la desktop entry contiene il tipo di codifica del file di testo, i nomi delle azioni che si andranno a definire ed il tipo di file a cui queste informazioni dovranno essere applicate.

    La desktop action, invece, contiene il nome che apparirà nel menù e l'azione da seguire.

    Visto che il programma di gestione degli rpm di fedora é particolarmente penoso, perché non confezioniamo un'apposito file .desktop per consentire l'installazione e la disinstallazione dei files rpm senza andare ad aprire manualmente ogni volta la console e digitare la solita papocchia?

    Apriamo il nostro fido kwrite e cominciamo a scrivere:
    [size=medium][Desktop Entry]
    Actions=
    Encoding=
    ServiceTypes=[/size]


    Il nostro programmino dovrà contenere due azioni: una per installare l'rpm, l'altro per disinstallarlo, quindi dopo l'= di actions dovremmo scrivere Installa;Disinstalla.

    Se non avete cambiato le impostazioni di default, il file .desktop sarà scritto in UTF-8, pertanto dopo Encoding dobbiamo scrivere UTF-8.

    Adesso: il menù azioni dovrà essere modificato solo quando clicchiamo su un file rpm: come facciamo a dirglielo?

    Ogni tipo di file (.txt, .rpm, .mp3 ecc...) é contrassegnato da una propria struttura: il file .txt conterrà solo caratteri ascii, il file rpm contiene una breve descrizione del programma, le dipendenze ed i files da installare, l'mp3 contiene la musica ed eventuali informazioni come l'artista, il genere, l'anno ecc...

    In parole povere: KDE (così come gnome, e come mac) é in grado di riconoscere il file per via del suo contenuto. Ogni struttura viene contrassegnata da una stringa di riconoscimento: é sufficiente capire quella usata da kde e siamo a cavallo :-D

    Per farlo clicchiamo sull'icona Punto di partenza sul desktop, poi andiamo in Componenti di KDE e clicchiamo su Associazione File.

    Adesso nel campo sotto Trova schema di nome file scriviamo rpm, adesso clicchiamo sul + di application ed uscirà la scritta x-rpm.




    La stringa d'identificazione sarà, pertanto, application/x-rpm e dovrà essere scritta dopo ServiceTypes.

    Le informazioni globali sono state scritte tutte: adesso dobbiamo definire le informazioni per ogni azione da intraprendere.

    Cominciamo a definire lo schema per le azioni: cominciate a scrivere nel file:
    [size=medium][Desktop Action]
    Name=
    Exec=[/size]


    Dopo [Desktop Action e prima di ] mettete uno spazio e scrivete Installa esattamente come l'avete scritto nel campo Actions.
    Il campo name sarà la voce che comparirà nel menù: possiamo semplicemente metterci Installa.

    In Exec che deve andarci? Uhm vediamo...

    Quando faremo click sulla voce Installa il sistema dovrà aprire la console, installare il pacchetto e farci leggere un'eventuale messaggio d'errore.

    La stringa da dare in exec, pertanto, é: konsole --noclose -e "rpm -ivh '%u'"

    Il sistema aprirà konsole evitando che si chiuda in automatico (--noclose) e facendogli eseguire il comando (-e) rpm -ivh (%u sarà automaticamente sostituito con l'indirizzo completo del file).
    Prestate attenzione a mettere sia le virgolette doppie che le singole: se non metterete le doppie -ivh sarà passato come parametro a konsole e quindi andrà in errore; se non metterete le singole il sistema non sarà in grado di far andare files rpm che hanno lo spazio o contenuti in directory con lo spazio.

    Per la disinstallazione é sufficiente copiare lo schema di prima, però prendendo in considerazione l'Action Disinstalla, cambiando, ovviamente la voce che comparirà nel menù per evitare confusione e facendo eseguire konsole --noclose -e "rpm -u '%u'".

    Adesso salvate il file in /usr/share/apps/konqueror/servicemenus dandogli come nome azioni_rpm.desktop (va bene anche qualsiasi altro nome, basta che finisca con .desktop).

    Adesso se cliccate col destro su un qualsiasi file .rpm ed andate in azioni compariranno due nuove voci;
    per avere una cosa più ordinata é possibile inserirle in un sottomenù aggiungendo in Desktop Entry la voce "X-KDE-Submenu=nome_del_sottomenu", in questo modo:
    [size=medium][Desktop Entry]
    Actions=Installa;Disinstalla
    Encoding=UTF-8
    ServiceTypes=application/x-rpm
    X-KDE-Submenu=Azioni RPM[/size]


    Eventualmente potete anche aggiungere una voce icon nelle varie desktop action identificando la path (o il nome) di un'icona; in questo modo a sinistra della voce comparirà l'icona specificata.



    Se provate a farli andare, tuttavia la dinstallazione non funzionerà (provate ad indovinare il perché) :-D
    Trovate un mago della shell che risolvi il problema e passatemi la soluzione :-P

    Altro difetto di questa piccola applicazione é che cercerà d'installare gli rpm anche se non siete root.
    Per risolvere basta richiamare kdesu passandogli le stringhe da eseguire (attenzione agli apici singoli e doppi perché in questo caso - a meno di magie da shell - si dovrà rinunciare all'installazione di rpm che contengono spazi).

    Un'altra soluzione al problema potrebbe essere far comparire le azioni solo quando si accede come root: per farlo spostate il file in /root/.kde/share/apps/konqueror/servicemenus (se non c'é la directory createla).

    Ultimo appunto: per chiudere konsole aperta con noclose bisogna necessariamente cliccare sulla x in alto a destra. Personalmente trovo molto più fine far scrivere Premere invio per uscire e fargli aspettare la pressione del tasto invio.



    Se lo volete fare kdevelop (o meglio la stringa che compare nella tabella applicazione di kdevelop quando mandate in esecuzione un programma) può esservi d'aiuto (che riporto qui sotto per semplificarvi le cose) :-D



    Come esempi ho creato tre script per lavorare sulle immagini.
    Questi aggiungono le funzionalità di ricodifica, modifica delle dimensioni, delle risoluzioni e rotazioni a kde in doppia linguao: italiano ed inglese

    Come motore viene sfruttato imagemagic.

    http://numerone.altervista.org/forum...agic-1.0.1.tar

    Ci sono domande?
    Ultima modifica di numerone : 28-09-2004 alle ore 00.38.44

  2. #2
    Guest

    Predefinito

    certo: a che serve?

  3. #3
    Guest

    Predefinito

    Ad automatizzare alcune procedure...
    Se vuoi, ad esempio, vedere quali codecs é stato compresso un avi avvii gspot e carichi l'avi.
    Se vuoi velocizzare il tutto basta che vai in opzioni cartella>tipi di file e crei una nuova voce che carica in automatico gspot e gli fa aprire il file: ci metti meno tempo e fai meno operazioni.

    Su KDE é anche possibile farlo: questa guida spiega come.
    In oltre tale sistema può essere utilizzato per creare una sorta di gui per alcuni programmi text-only, come mogrify.

    La potenza di un tale sistema dipende solo dalla tua fantasia.

  4. #4
    Guest

    Predefinito

    più o meno ho capito.
    credo che in futoro l'howto potrà essermi utile.
    complimenti

  5. #5
    Guest

    Predefinito

    Negli scriptini d'esempio é stato rilevato un bug che ne blocca l'esecuzione se il nome dell'immagine contiene spazi.

    Il link per gli scriptini corretti é http://numerone.altervista.org/forum...agic-1.0.1.tar (é stato aggiornato anche quello al primo post).

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •