Dynamische koppelingen

V Dynamische koppelingen

1 Bestandsassociaties

Elk programma op de computer gebruikt een eigen bestandsformaat om zijn gegevens in op te slaan. Moderne grafische omgevingen zijn op de hoogte van welke programma's overweg kunnen met welke bestandsformaten. KDE gebruikt daarvoor de standaard MIME. Deze standaard wordt door browsers op het internet gebruikt om de aangeboden gegevens correct te behandelen. Daardoor kan KDE door het klikken op een bestand dit bestand op een correcte manier aanbieden. Praktisch gaat dit als volgt in zijn werk. Als een gebruiker op een bestand klikt, zal KDE proberen te achterhalen welk bestandsformaat het aangeklikte bestand gebruikt. Eerst bekijkt KDE de informatie in het begin van het bestand (header, ook wel Meta-info genoemd). Indien daaruit niet kan afgeleid worden over welk soort bestand het gaat, kijkt KDE naar de extensie (laatste gedeelte van de bestandsnaam na de laatste punt). Indien KDE dan het bestandsformaat nog niet kan achterhalen, roept KDE de hulp van de gebruiker in (Openen met dialoog). De informatie nodig om een bestandsformaat te herkennen wordt bijgehouden in een database. Hoewel KDE een massa bestandsformaten herkent, kun je bestandsassociaties toevoegen of wijzigen.

Bestandsassociaties beheren.

De eenvoudigste vorm om met bestandsassociaties om te gaan, is rechts klikken op het bestand en via het snelmenu Openen met > Overig... het dialoogvenster Openen met te gebruiken. Als je het bestand met een Bekende toepassing wilt openen, kun je deze kiezen in één van de categorieën in de tabel. Bekende toepassingen zijn programma's waarvan KDE weet dat je ze geïnstalleerd hebt (in de praktijk bijna alle programma's die een grafische interface hebben). Indien de toepassing geen KDE bekende is, kun je deze zelf bovenaan intypen (of opzoeken met de knop Dialoogvenster voor bestanden openen ).

Programma's (opdrachten) zonder grafische interface maar met een tekst interface moet je uitvoeren in een terminal, dit kan door In een terminal uitvoeren aan te vinken. Programma's met een tekst interface melden de problemen in het terminal-venster.
Indien deze meldingen verschijnen tijdens het afsluiten van het programma kun je ze niet lezen als je Terminal open laten als het programma afsluit niet hebt aangevinkt. Als je zeker bent van je stuk en je wilt de gekozen toepassingen veel met dit soort bestanden gebruiken, kun je Deze toepassing altijd gebruiken voor dit bestandstype aanvinken. Dan wordt jouw gekozen toepassing in het snelmenu van dit bestandstype opgenomen bij Openen met.

Wil je de bestandsassociaties echt beheren, werk dan met het onderdeel Bestandsassociaties op het tabblad Geavanceerd van K menu > Favorieten > Systeeminstellingen. Om sneller het juiste type bestand terug te vinden werden alle bestandstypen in categorieën ingedeeld. Elk bekend type heeft twee associaties (koppelingen).

Een eerste associatie vind je terug op het tabblad Algemeen:

Bij het Toevoegen van Toepassingen voor dit bestandstype worden er telkens koppelingen aangemaakt. Deze koppelingen kun je manueel aanpassen met de knop Bewerken. Het enige verschil met een klassieke koppeling vind je terug op het tabblad Toepassing.
Bestandsassociaties

Bij het aanmaken van de koppeling is nog niet bekend welk bestand geopend moet worden, vandaar dat in het tekstveld Commando plaatshouders worden gebruikt die later vervangen worden door bijvoorbeeld de bestandsnaam die geopend moet worden. Meer informatie over de gebruikte plaatshouders kun je opvragen met de Help knop in de titelbalk.

Op het tabblad Inbedding kun je het volgende instellen:

Je kunt een bestandstype toevoegen met behulp van de knop Toevoegen... links onderaan het dialoogvenster. Probeer een nieuw bestandstype steeds in een passende Groep te stoppen.

Alle aanpassingen worden opgeslagen in de map $HOME/.local/share/mime/ en deze zijn enkel van toepassing voor een bepaalde gebruiker.

De bestandsassociaties worden ook aangepast bij het installeren van nieuwe pakketten.

2 Dynamische koppelingen tussen gegevens.

Naast de statische manier om gegevens tussen programma's uit te wisselen (klassiek kopiëren en plakken) kun je dynamisch werken. Bij het statisch uitwisselen van gegevens, wordt een kopie gemaakt van het origineel, waarbij de kopie verder behandeld wordt door het programma waarin het terecht komt.

Dynamische koppelingen tussen gegevens maken ook een kopie, maar kunnen alleen verder bewerkt worden door te communiceren met het oorspronkelijk programma waar het vandaan komt.
M.a.w. de koppeling tussen het gegeven (de kopie) en het programma waarmee het gegeven werd aangemaakt, blijft bestaan. Dit noemt men een Object.

Een voorbeeld: Object Linking and Embedding (OLE): Een systeem waarmee je gegevens door knippen en plakken van het ene programma naar een ander kunt overbrengen met behoud van de opmaak en bedieningsfuncties. Zo is het mogelijk om een rekenblad op te nemen in een stuk tekst. Worden er in het rekenblad gegevens veranderd, dan worden deze wijzigingen in de tekst ook automatisch ingevoerd.

Dit kan natuurlijk alleen als de programma's (processen) elkaar begrijpen, wat meestal betekend dat de programma's tot dezelfde groep of fabrikant moeten behoren.
Zo zullen de verschillende programma's van OpenOffice.Org daar geen problemen mee hebben. Ook KDE-programma's kunnen communiceren met elkaar. Dankzij het gebruik van een standaard kunnen Gnome- en KDE-programma's perfect samenwerken.

Opdrachten

  1. Surf met Firefox naar http://linux.pindanet.be.

    1. Surf via het menu (bol onderaan links op de pagina) Cursus Ontdekken, gebruiken en beheersen > Bestandsbeheer > Dolphin Bestandsbeheer naar de betreffende webpagina.

    2. Schuif (scroll) naar de tweede reeks opdrachten.

    3. Klik op de koppeling opdrachten voor bestandsbeheer en open deze met Ark.

    4. Klik op de werkbalkknop Uitpakken.

    5. Maak het dialoogvenster indien nodig wat breder.

    6. Navigeer naar de Persoonlijke map.

    7. Bevestig het uitpakken.

    8. Sluit na het uitpakken de vensters Ark, Downloads en Firefox.

  2. Open in Dolphin de map ~/Oefenmap/School.

  3. Zorg indien nodig dat het Informatie-paneel weergegeven wordt.

  4. Wijs het bestand Haver.brf aan met de muis.
    Welk type herkende KDE in dit bestand?

  5. Klik rechts op het bestand Haver.brf.
    Met welke programma's kun je dit type bestand openen?

  6. Installeer het java-programma JEdit met de opdracht:
    java -jar Documenten/Installaties/jedit4.3.2install.jar

    1. Bevestig daarbij alle voorgestelde instellingen.

  7. Klik rechts op het bestand Haver.brf.

    1. Daar je een fervente aanhanger bent van het werken met JEdit ga je dit programma openen met de editor jedit. Kies de optie Overig... in Openen met.

      1. Daar jedit een java applicatie is, is het geen Bekende toepassing en moet je de opdracht
        java -jar ~/jedit/4.3.2/jedit.jar
        in het tekstvak onder Openen met: intypen.

      2. Sluit de editor.

    2. Nu je weet dat dit werkt, zorg je ervoor dat jedit opgenomen wordt in het snelmenu Openen met van Haver.brf.
      Op welke plaats werd de optie jedit in het snelmenu Openen met geplaatst?

    3. Bekijk het snelmenu Openen met van het bestand Bericht gebruikers.txt.

      1. Wat merk je?

      2. Hoe verklaar je dit?

  8. Werk nu verder met het onderdeel Bestandsassociaties uit de Systeeminstellingen.

    1. Selecteer het Bekende type: text/plain.

    2. Verwijder de toepassing jedit uit de tabel met Toepassingen voor dit bestandstype.

    3. Wat merk je links in het pictogram voor dit type bestanden?

    4. Welke bestandsnaampatronen heeft dit type bestanden?

    5. Bekijk de inhoud van de map ~/Oefenmap/School in Dolphin.

    6. Wat stelt de afbeelding in het Informatie-paneel van Haver.brf voor?

    7. Sluit de Systeeminstellingen en pas de wijzigingen toe.

  9. Installeer de tekstverwerker van KOffice door het pakket koffice2-kword te installeren.

    1. Welk programma kwam er bij in de optie Openen met van het snelmenu van Haver.brf?

    2. Open het bestand Haver.brf met KWord.
      Gebruik bij het openen Aanbevolen (UTF-8) voor de importfilter.

    3. Sluit KWord en Dolphin.

  10. Je gaat nu het document Haver.brf inbedden in Konqueror.

      1. Start Konqueror.

      2. Open de Persoonlijke map.

      3. Open de map ~/Oefenmap/School/.

      4. Gebruik in het snelmenu van Haver.brf de opdracht Voorbeeld in > Ingebed geavanceerd tekstinvoercomponent.

      5. Welk(e) verschil(len) merk je met Openen met > KWrite?

      6. Sluit Konqueror.

  11. Open in Dolphin de map ~/Documenten/Bestandsbeheer.

  12. Onderzoek als volgt de bestandsassociatie text/html:

    1. Start Bestandsassociaties.

    2. Selecteer het bekende type text/html.

    3. Selecteer de Firefox bestandsassociatie.

    4. Klik op de knop Bewerken.

    5. Bekijk het tabblad Toepassing bij de Ondersteunde mime-bestandstypen. Deze duiden aan met welke bestandstypen Firefox om kan gaan.
      Welk mime-bestandstype ondersteunt Firefox naast text/html?

  13. Installeer het pakket Epiphany, de webbrowser van Gnome.

    1. Open het bestand ~/Documenten/Bestandsbeheer/patent.html via Openen met Epiphany.

    2. Epiphany werkt. Sluit de Epiphany webbrowser.

  14. Nu ga je ervoor zorgen dat de Epiphany webbrowser de standaard browser wordt.

    1. Start Bestandsassociaties.

    2. Selecteer het juiste Bekende type.

    3. Zorg ervoor dat de Epiphany webbrowser de standaard browser wordt.

    4. Bevestig de instelling.

    5. Vanaf nu kun je elk HTML-document met een klik openen in Epiphany. Test dit.

    6. Werk eraan tot de Epiphany webbrowser de standaard internet browser is.

    7. Sluit alle vensters.

  15. OpenOffice.org is een Office suite met OLE-mogelijkheden. Een paar voorbeelden in de volgende opdrachten:

    1. Start de tekstverwerker.

    2. Typ de volgende tekst in:
      Teksten met ingebedde objecten
      Formules voor rekenknobbels:
      Het schoolrapport in een spreadsheet:
      Een grafiek zegt meer dan massa's cijfers:

    3. Maak van de eerste regel een Kop 1 (knop met Standaard in de werkbalk).

    4. Plaats de cursor op het einde van de tweede regel.

      1. Gebruik het menu Invoegen > Object > Formule.
        De werkbalken en menu's van OpenOffice.org Writer veranderen in de werkbalken en menu's waarmee je formules kunt bewerken.

      2. Zorg met het menu Beeld > Formule-elementen dat je het dialoogvenster Formule-elementen kunt gebruiken.

      3. Klik op de knop f(x) in het Formule-elementen venster.

      4. Klik in het onderste paneel van het Formule-elementen venster op het symbool Vierkantswortel.

      5. Typ het getal 27.

      6. Klik op de eerste knop Unaire/Binaire operatoren in het bovenste paneel van het venster Formule-elementen.

      7. Klik op het symbool Deling (breukstreep) in het onderste paneel van het venster Formule-elementen.

      8. Typ de letter x (komt boven de breukstreep te staan).

      9. Selecteer <?> in het onderste paneel van OpenOffice.org Writer om hetgeen onder de breukstreep staat aan te passen.

      10. Typ (y-35).

      11. De formule is klaar. Klik buiten het kader met de grafische formule om de formulebewerker te verlaten.

    5. Om het geheel wat presentabel te maken, voer je volgende bewerkingen uit:

      1. Selecteer het kader met de formule.

      2. Positioneer het kader door het te verslepen met het bolletje met vier pijlen als muiswijzer.

      3. Sla het document op als “Ingebedde objecten”.

    6. Plaats de cursor op het einde van de derde regel.

      1. Gebruik het menu Invoegen > Object > OLE-object....

      2. Zorg voor een Nieuw OpenOffice.org 3.2-werkblad.

      3. Neem het rekenblad van de afbeelding over in het kader.

      4. Versleep de middelste greep (zwart vierkantje) aan de onderste rand en aan de rechter rand van het kader tot alle gebruikte cellen zichtbaar zijn.

      5. Klik na het maken van het werkblad naast het werkblad kader.

      6. Deselecteer het kader (jawel deze stap is nodig).

      7. Selecteer het kader opnieuw om de opmaak te verzorgen.

        1. Kies in het snelmenu van het kader voor de opdracht Omloop > Geen omloop.

        2. Positioneer het kader met het werkblad juist onder de begeleidende tekst.

    7. Sla het document nogmaals op.

    8. Als laatste voorbeeld ga je nog een grafiek onderaan de tekst toevoegen:

      1. Gebruik het menu Invoegen > Object > Diagram.

      2. Klik op de werkbalkknop Gegevenstabel voor diagram.

        1. Vul deze tabel in zoals op de afbeelding.

        2. Met de knoppen bovenaan kun je rijen en kolommen toevoegen en verwijderen.

        3. Sluit nadien het venster Gegevenstabel.

      3. Positioneer de grafiek.

      4. Klik naast het grafiek kader om te tekstverwerker terug te activeren.

      5. Vergelijk het resultaat met de afbeelding en pas aan indien nodig.

    9. Sla het document op.

    10. Als je de cijfers van het werkblad vergelijkt met deze in de gegevenstabel, merk je dat de punten voor Opvoeding niet overeenkomen.

      1. Klik dubbel op het kader met het werkblad.

      2. Halveer de punten en het totaal voor Opvoeding.

      3. Klik naast het werkblad kader om de aanpassing af te sluiten.

    11. Sla het document op en sluit OpenOffice.org Writer.

  16. Het gebruik van dynamische koppelingen in programma's zoals OpenOfice.org kan enkel indien de verschillende deelprogramma's van OpenOffice.org met elkaar kunnen communiceren.
    In bovenstaande voorbeeld verliep de communicatie van OpenOffice.org naar respectievelijk de Math, Calc en de Diagram-module van het OpenOffice.org pakket. Indien je de communicatie-taal beheerst, kun je via scripts opdrachten laten uitvoeren door andere programma's. De volgende opdrachten begeleiden je door de wondere wereld van de communicerende processen.

3 Scripting onder KDE met DBUS

DBUS is een communicatie-protocol tussen verschillende processen binnen KDE wat via sockets opereert. DBUS is een zeer krachtige, maar ook eenvoudige manier om KDE-applicaties te manipuleren. We laten je zien hoe je DBUS kunt aanspreken via de opdrachtregel en via een grafische omgeving. DBUS is uitgegroeid tot een standaard en wordt o.a. gebruikt in Windows-, Gnome-, KDE- en maemo programma's.

  1. DBUS via qdbusviewer
    qdbusviewer levert een comfortabele boomstructuur met alle opties die de DBUS-applicaties die op dat moment draaien bieden.
    Je kunt een url openen met Konqueror.

      1. Je start eerst Konqueror en daarna met Alt+F2 de qdbusviewer op. Zoek Konqueror op in de lijst van Services die qdbusviewer je nu laat zien. Selecteer de gevonden org.kde.konqueror Service en je zult alle Methods zien waarover konqueror via DBUS beschikt. Een van deze methods heet konqueror/. Klik op het plusteken van dit item om de beschikbare methoden te zien te krijgen.

      2. Open daarna de tak MainWindow_1.

      3. En daarna de tak org.kde.konqueror.KonqMainWindow.

      4. Klik op de Property: currentTitle en in het onderste deelvenster verschijnt de titel van het Konqueror venster.

      5. Nog leuker wordt het om onzichtbare zaken op te vragen. Klik op de Property: currentURL. Welke URL wordt in het venster van Konqueror gebruikt?

      6. Keer terug naar de tak MainWindow_1 en open de tak org.kde.Konqueror.MainWindow.

      7. Klik op de Method: openURL.

      8. Je krijgt een dialoogvenster waarmee je parameters aan Konqueror kunt doorgeven. Geef de parameter url de waarde (Value) /home/sntcursist. Bevestig met OK en Konqueror toont in het venster de inhoud van de persoonlijke map.

    1. Je gaat nog een voorbeeld zien waarbij we Juk, KAlarm en uiteraard DBUS gebruiken. Stel je voor dat je 's ochtends gewekt wil worden met muziek.

      1. Installeer de pakketten juk en kalarm.

      2. Start nu de Muziekspeler JuK op. In het dialoogvenster Mappenlijst van JuK voeg je de map ~/Muziek/Diablo Swing Orchestra - The Butcher's Ballroom toe. Speel een muziekstuk af (denk aan KMix, volumeregeling, de volumeregelaar va JuK is de laatste werkbalkknop – maak het venster breder om de volumeregelaar beter te kunnen bedienen). Sluit het venster van de JuK, JuK blijft doordraaien in het systeemvak.

      3. Selecteer in de qdbusviewer de Service van juk. Klik vervolgens op de method Player > org.kde.juk.player >Method: stop. JuK stopt het afspelen van de muziek. Om de muziek te starten heb je de Method: playPause.

      4. Start KAlarm op. Maak een Nieuwe commandoherinnering. Je kunt de opdracht die je nodig hebt afleiden door te kijken naar qdbusviewer. De opdracht in Kalarm wordt `qdbus org.kde.juk /Player org.kde.juk.player.playPause`. Probeer de herinnering. Nu zal JuK beginnen te spelen op het tijdstip dat je KAlarm meegegeven hebt. Sluit KAlarm.

      5. Stop het afspelen van de muziek.

    2. Je kunt deze DBUS-aanroepen ook in een terminal typen om het als opdracht uit te voeren. Doe hetzelfde nog maar eens in de terminal. De terminal voert de DBUS-aanroep uit.

    3. Zo'n DBUS-aanroep is ook handig om te gebruiken binnen een koppeling op je bureaublad. Dit doe je als volgt: Rechtermuisklik in de Bureaubladmap > Nieuw aanmaken > Koppeling naar programma > Vul op het tabblad Toepassing de betreffende DBUS-aanroep in. Geef de koppeling de naam Muziekspeler Afspelen/Pauze. Na het bevestigen van het dialoogvenster pas je via de Eigenschappen van de koppeling het pictogram aan naar het pictogram van JuK.

  2. DBUS via de opdrachtregel
    qdbus is voor de opdrachtregel wat qdbusviewer voor de grafische omgeving is. Een eenvoudige manier om met draaiende DBUS-processen te 'praten' en ze instructies te sturen.

    1. Start KMail en Annuleer de assistent.

    2. Om een lijst met geschikte draaiende processen te openen typ je het volgende commando in:
      qdbus
      Dit is dan bijv. de uitvoer:
      :1.1
      org.kde.klauncher
      :1.10
      org.freedesktop.Notifications
      org.kde.JobViewServer
      org.kde.StatusNotifierHost-1914
      org.kde.plasma-desktop
      :1.100
      org.freedesktop.Akonadi
      :1.101
      :1.102
      :1.103
      :1.104
      :1.105
      :1.106
      :1.107
      :1.108
      :1.109
      :1.110
      :1.111
      org.freedesktop.Akonadi.Agent.akonadi_nepomuk_contact_feeder
      org.kde.akonadi_nepomuk_contact_feeder-6904
      :1.112
      org.freedesktop.Akonadi.Agent.akonadi_maildispatcher_agent
      org.kde.akonadi_maildispatcher_agent-6905
      :1.113
      org.freedesktop.Akonadi.Agent.akonadi_contacts_resource_0
      org.freedesktop.Akonadi.Resource.akonadi_contacts_resource_0
      org.kde.akonadi_contacts_resource_0-6906
      :1.114
      org.kde.NepomukServer
      :1.116
      org.freedesktop.Akonadi.Agent.akonadi_maildir_resource_0
      org.freedesktop.Akonadi.Resource.akonadi_maildir_resource_0
      org.kde.akonadi_maildir_resource_0-6914
      :1.117
      org.freedesktop.Akonadi.Agent.akonadi_ical_resource_0
      org.freedesktop.Akonadi.Resource.akonadi_ical_resource_0
      org.kde.akonadi_ical_resource_0-6918
      :1.118
      org.kde.konsole
      :1.12
      org.kde.knotify
      :1.122
      :1.15
      org.kde.kaccess
      :1.19
      org.freedesktop.ScreenSaver
      org.kde.krunner
      org.kde.screensaver
      :1.2
      org.freedesktop.PowerManagement
      org.freedesktop.PowerManagement.Inhibit
      org.kde.Kephal
      org.kde.StatusNotifierWatcher
      org.kde.kded
      org.kde.network
      org.kde.powerdevil
      org.kde.synaptiks
      :1.21
      org.kde.kmix
      :1.23
      org.kde.policykit1-kde
      :1.25
      org.kde.kupdateapplet
      :1.28
      org.kde.klipper
      :1.31
      org.kde.StatusNotifierItem-1942-1
      :1.32
      org.kde.StatusNotifierItem-1932-1
      :1.42
      org.openoffice.OpenOffice.org-5915
      :1.6
      org.kde.ksmserver
      org.kde.ksmserver-1903
      :1.65
      :1.7
      org.kde.kwin
      org.kde.kwin-1905
      :1.71
      org.gtk.vfs.Daemon
      :1.72
      :1.73
      :1.8
      org.kde.kglobalaccel
      :1.84
      :1.85
      :1.92
      :1.93
      :1.97
      org.kde.kmail
      org.kde.kmail.groupware
      org.kde.pim.TransportManager
      :1.99
      org.freedesktop.Akonadi.Control
      org.freedesktop.DBus

      Merk op dat sommige applicaties een procesnummer achter hun naam hebben staan. Van deze applicaties draaien dus meerdere instanties en wordt er een PID opgegeven om ze uit elkaar te houden.
      Uit deze lijst pak je nu een applicatie om mee te praten. Je gaat kmail sturen.

    3. Typ het volgende in het terminalvenster: qdbus org.kde.kmail
      Dit is dan de uitvoer:
      /
      /Groupware
      /Kdebug
      /KHTML
      /KHTML/1
      /KHTML/1/widget
      /KIO
      /KIO/Scheduler
      /Kmail
      /KPIMIDENTITIES_IdentityManager
      /MailTransportService
      /MainApplication
      /TransportManager
      /kmail
      /kmail/kmail_mainwindow_1
      /kmail/kmail_mainwindow_1/actions
      /kmail/kmail_mainwindow_1/actions/kmail_copy
      /kmail/kmail_mainwindow_1/actions/file_open
      /kmail/kmail_mainwindow_1/actions/new_from_template
      /kmail/kmail_mainwindow_1/actions/file_print
      /kmail/kmail_mainwindow_1/actions/kmail_undo
      /kmail/kmail_mainwindow_1/actions/help_show_tip
      /kmail/kmail_mainwindow_1/actions/options_configure_toolbars
      /kmail/kmail_mainwindow_1/actions/options_configure_keybinding
      /kmail/kmail_mainwindow_1/actions/file_quit
      /kmail/kmail_mainwindow_1/actions/help_contents
      /kmail/kmail_mainwindow_1/actions/help_whats_this
      /kmail/kmail_mainwindow_1/actions/help_report_bug
      /kmail/kmail_mainwindow_1/actions/switch_application_language
      /kmail/kmail_mainwindow_1/actions/help_about_app
      /kmail/kmail_mainwindow_1/actions/help_about_kde
      /kmail_PimApplication
      /org
      /org/freedesktop
      /org/freedesktop/email
      /org/freedesktop/email/metadata
      /org/freedesktop/email/metadata/Manager

      Dit zijn de afzonderlijke onderdelen van kmail waarmee je kunt communiceren. Je pikt hier de standaard-interface uit om verder mee te praten.

    4. Typ het volgende in een terminal: qdbus org.kde.kmail /KMail
      Nu krijg je deze uitvoer:
      method QStringList org.kde.kmail.kmail.accounts()
      method bool org.kde.kmail.kmail.canQueryClose()
      method void org.kde.kmail.kmail.checkAccount(QString account)
      method void org.kde.kmail.kmail.checkMail()
      method void org.kde.kmail.kmail.compactAllFolders()
      method int org.kde.kmail.kmail.dbusAddMessage(QString foldername, QString messageFile)
      method int org.kde.kmail.kmail.dbusAddMessage(QString foldername, QString messageFile, QString MsgStatusFlags)
      method int org.kde.kmail.kmail.dbusAddMessage_fastImport(QString foldername, QString messageFile)
      method int org.kde.kmail.kmail.dbusAddMessage_fastImport(QString foldername, QString messageFile, QString MsgStatusFlags)
      method void org.kde.kmail.kmail.dbusResetAddMessage()
      method QString org.kde.kmail.kmail.debugScheduler()
      method QString org.kde.kmail.kmail.debugSernum(uint serialNumber)
      method QStringList org.kde.kmail.kmail.folderList()
      method QString org.kde.kmail.kmail.getFolder(QString vpath)
      method QString org.kde.kmail.kmail.getFrom(uint serialNumber)
      method bool org.kde.kmail.kmail.handleCommandLine(bool noArgsOpensReader)
      method QDBusObjectPath org.kde.kmail.kmail.newMessage(QString to,
      QString cc, QString bcc, bool hidden, bool useFolderId, QString messageFile, QString attachURL)
      method QDBusObjectPath org.kde.kmail.kmail.openComposer(QString to, QString cc, QString bcc, QString subject, QString body, bool hidden)
      method int org.kde.kmail.kmail.openComposer(QString to, QString cc, QString bcc, QString subject, QString body, bool hidden, QString attachName, QByteArray attachCte, QByteArray attachData, QByteArray attachType, QByteArray attachSubType, QByteArray attachParamAttr, QString attachParamValue, QByteArray attachContDisp, QByteArray attachCharset, uint identity)
      method int org.kde.kmail.kmail.openComposer(QString to, QString cc, QString bcc, QString subject, QString body, bool hidden, QString messageFile, QStringList attachmentPaths, QStringList customHeaders)
      method void org.kde.kmail.kmail.openReader()
      method void org.kde.kmail.kmail.pauseBackgroundJobs()
      method void org.kde.kmail.kmail.resumeBackgroundJobs()
      method void org.kde.kmail.kmail.resumeNetworkJobs()
      method void org.kde.kmail.kmail.selectFolder(QString folder)
      method int org.kde.kmail.kmail.sendCertificate(QString to, QByteArray certData)
      method void org.kde.kmail.kmail.setDefaultTransport(QString transport)
      method void org.kde.kmail.kmail.showImportArchiveDialog()
      method bool org.kde.kmail.kmail.showMail(uint serialNumber, QString messageId)
      method void org.kde.kmail.kmail.stopNetworkJobs()
      method int org.kde.kmail.kmail.timeOfLastMessageCountChange()
      signal void org.kde.kmail.kmail.unreadCountChanged()
      method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface_name, QString property_name)
      method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface_name)
      method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value)
      method QString org.freedesktop.DBus.Introspectable.Introspect()

      Dit is een lijst met method's die je kunt gebruiken om KMail een bepaalde opdracht te laten uitvoeren. Je gaat er hier eentje uitlichten waarmee je op e-mail kunt controleren.

    5. Door het volgende in de terminal in te tikken zal KMail controleren op nieuwe e-mail:
      qdbus org.kde.kmail /KMail org.kde.kmail.kmail.checkMail
      Welke opmerking krijg je van KMail?

    6. Nog een voorbeeld. In bovenstaande uitvoer zie je het volgende staan:
      method QDBusObjectPath org.kde.kmail.kmail.openComposer(QString to, QString cc, QString bcc, QString subject, QString body, bool hidden)
      Deze optie opent dus een venster van kmail voor een nieuw e-mailbericht met daarin alvast de opgegeven informatietekst.

      Je gaat de gevonden methode nu vertalen naar een bruikbare opdracht:
      dbus-send --type=method_call --dest=org.kde.kmail /KMail org.kde.kmail.kmail.openComposer string:'adm@snt.be' string:'' string:'' string:'DBUS binnen KDE is geweldig' string:'Met zoveel mogelijkheden binnen KDE valt er nog maar weinig te wensen' boolean:false

      Merk op dat je alle opties van de methode moet gebruiken, anders werkt de opdracht niet. Lege velden (bijv. die voor CC en BCC) maak je aan door gebruik te maken van lege aanhalingstekens. Druk nu op <Enter> en kmail opent een venster voor een nieuw e-mailbericht, waarbij de geadresseerde en het e-mailbericht reeds zijn ingevuld. Let ook op het gebruik van de opdracht dbus-send, deze opdracht was tijdens het opmaken van deze cursus reeds voorzien van een handleiding (qdbus niet) en bij wat complexere communicatie is een handleiding met het juiste gebruik onontbeerlijk.

  3. DBUS gebruiken in scripts
    Misschien hebben een aantal van jullie al de magie gevoeld van DBUS. We zullen nu twee hele simpele voorbeelden laten zien hoe je DBUS kunt gebruiken binnen scripts.

    1. Desktop viewer
      #!/bin/bash
      while true;
      do
      qdbus org.kde.kwin /KWin org.kde.KWin.nextDesktop
      sleep 4
      done

    2. Googlesearch
      #!/bin/bash
      selected=`qdbus org.kde.klipper /klipper org.kde.klipper.klipper.getClipboardContents`
      firefox "http://www.google.be/search?q=$selected" &
      exit
      Wat gebruikt Google hier als zoektekenreeks?

  4. Enkele opties om nog wat verder mee te oefenen

    1. qdbus org.kde.kwin /KWin org.kde.KWin.setCurrentDesktop 2
      Ga naar bureaublad 2

    2. qdbus org.kde.kmail /KMail org.kde.kmail.kmail.compactAllFolders
      Laat KMail alle mappen comprimeren

    3. qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 0 3
      Het Afsluiten dialoogvenster op het scherm plaatsen.

      1. De eerste parameter zorgt voor bevestiging (-1 gebruik de gebruikersinstelling, 0 zonder bevestiging doorgaan, 1 bevestiging door gebruiker)

      2. De tweede parameter is het type (-1 vorige actie, 0 afmelden, 1 herstarten, 2 uitschakelen)

      3. De derde parameter is de mode (-1 vorige mode, 0 herstarten of afsluiten na het afmelden van alle sessies, 1 afsluiten indien alle sessies afgemeld zijn, 2 geforceerd afsluiten, 3 een dialoogvenster tonen om de gebruiker te laten beslissen)

    4. dbus-send --type=method_call --dest=org.kde.krunner /ScreenSaver org.freedesktop.ScreenSaver.SetActive boolean:true
      Om de schermbeveiliging te starten.

    5. qdbus org.kde.kmix /Mixer0 org.kde.KMix.setMasterVolume 100
      Zet het geluidsvolume op maximum (100%).

    6. qdbus org.kde.juk /Player org.kde.juk.player.playPause
      Speel het lied verder af of pauzeer het afspelende lied.

    De laatste acties zijn via DBUS eenvoudig te koppelen aan een multimediatoets op je toetsenbord of een afstandsbediening via bijvoorbeeld xbindkeys en LIRC.

Kijk voor meer informatie over DBUS op http://dbus.freedesktop.org.