November 19, 2008 11

Service-manager for KDE4 with COMAR and PyKDE4

These days we are working hard on Pardus KDE technologies for our next release “Pardus 2009”; within these tasks first job is porting (and redesigning) our *-manager family to KDE4.

We have a COnfiguration MAnageR called COMAR which uses D-Bus for communication. COMAR provides a powerful and extendible API for managing anything such as package, network, x.org, bootloader, disk or system service which are also described in model.xml.

From COMAR.Api.qt4 example:

import comar

# Create link
self.link = comar.Link()

def handler(package, exception, results):
    # do something with these info..
    print package, results

# Get all services from comar
link.System.Service.info(async=handler)

It will get you all services status and their info asynchronously to the handler method. Also if you want to start “openssh” service you can call it like;

link.System.Service["openssh"].start()

When you do this, COMAR will call the PolicyKit-KDE(3) and asks password if you have privileges for this action.(I will show it in action)

Yes, COM

Tags: ,

  • Bahadır Kandemir

    BTW, comar.Link() is a wrapper to communicate COMAR over DBus.

    link.System.Service[“apache”].info() is simply calling tr.org.pardus.comar.System.Service.info method of /package/apache

  • John Tapsell

    Is it possible for an external app to get the PIDs of the running services?

  • Yes, but I actually don’t understand your question :)

  • Ömer F. USTA

    Selam
    DBusQtMainLoop(set_as_default=True kısmında
    Açılmış parantezin kapatılması unutulmuş.

    John ise herhangi bir comar cağrısı ile daha önce
    çalıştırılmış bir servisin pid numarasını öğrenebilirmiyiz diye sormak istemiş yani diyelim biz …… .info () ile servis hakkında bilgi alabiliyoruz ya aynı şekilde o servisin pid numarasını öğrenebilir miyiz demiş yani .info().pid() gibi

  • @Ömer
    Düzelttim teşekkürler fakat hala senin düşündüğün gibi sorduğundan emin değilim, çünkü böyle bir şey mümkün mü derken external app demiş kendisi çomar’ı mı kastediyor pek anlayamadım :)
    Eğer çomarı kastediyorsa yok böyle bir yetenek tabi ;)

  • Ömer F. USTA

    Kendi düşüncem harici bir uygulamayla dbus üzerinden comarda ilgili methodu uzaktan çağırıp ( ki zaten dbus bunun için) istediği herhangi bir servisin pid numarasını almak istiyor gibi geldi bana.
    Bu ne işe yarayabilir ? pek emin değilim :D belki ilgili servisin pid numarası üzerinden kullandığı sistem kaynaklarını gösterecek bir uygulama filan yazmak istiyordur.

  • Bahadır Kandemir

    @John: COMAR gives name, description and status of the service only.

  • Paulo Fidalgo

    Well, I think this could be refactored (to be distro agnostic) to get an inclusion on KDE, maybe in KDE playground first…

    It will be a nice feature to have… at least I miss this in Kubuntu and Fedora.

  • @Paulo
    It is possible to start it from KDE/playground, but for now it needs COMAR base system which just using by Pardus.

    On the other hands it will go another way :)

  • @Paulo: Try Pardus :)

  • Fatih Aşıcı

    I think, It should be renamed to “System Services”. KDE already has a module named “Service Manager”.