Development/Architecture/KDE4/Solid

    From KDE TechBase
    Revision as of 15:58, 5 February 2008 by Tampakrap (talk | contribs) (move category text to architecure page. better suited than categories)

    Seamless Hardware Interaction

    With Solid, KDE developers are able to easily write applications with hardware interaction features. The necessary abstraction to support cross-platform application development is provided by Solid's clear and comprehensive API.

    Its aim is not the control of the devices (Solid doesn't let you syncronize your mobile phone with your local addressbook): Solid *looks for* devices and let you access to the information it has about them. This way, you could easily look at the functions of the cpu, or at the driver that handles your camera, or the mount point of your usb pen. In sum: it gives you the possibility of "seeing without touching" your devices.

    Now you would ask (at least, I asked myself): "Why should I need this library? I want to control the available hardware, not just see it!"

    Well, Solid helps you a lot again: for any device interface, it gives you enough information to easily access it using other libraries or stacks. This way, if you want to manage your camera, you can use Solid to recognize it (you can use Solid::Notifier that will let you know when your camera has been plugged in), and then you can ask Solid to give you the information you need to handle it, for example with GPhoto or any other library you can think of. The same applies for any other plugged device: DVB cards (once recognized, Solid gives you the name of the associated device), audio cards (you can use ALSA, OSS or whatever you want: Solid knows the data to access it), portable media players, network cards, et cetera. Moreover, it lets you check if you're connected to any network or not, and you can use Solid to tell the system to connect (that is, you can ask Solid: "Give me access to the network, I don't want to care about details").

    Anyway, some other things needs to be said about network devices and Bluetooth. For this two classes of devices, Solid provides the "Control" namespace: that is, it lets you control them directly, without using external libraries. This means that with Solid you can even handle your wireless or wired network interfaces, associate them to an essid and choose ip configuration for them. You can even access your phone throught Bluetooth, et so on.

    The "listing" part of Solid resides in kdelibs, while the Control namespace is in kdebase.