<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>systemadmin.es &#187; Desktop</title>
	<atom:link href="http://systemadmin.es/category/desktop/feed" rel="self" type="application/rss+xml" />
	<link>http://systemadmin.es</link>
	<description>Tu referencia para la administración de sistemas</description>
	<lastBuildDate>Fri, 03 Feb 2012 06:51:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Controlando el escritorio desde linea de comandos mediante dbus</title>
		<link>http://systemadmin.es/2010/04/controlando-el-escritorio-desde-linea-de-comandos-mediante-dbus</link>
		<comments>http://systemadmin.es/2010/04/controlando-el-escritorio-desde-linea-de-comandos-mediante-dbus#comments</comments>
		<pubDate>Mon, 19 Apr 2010 06:37:35 +0000</pubDate>
		<dc:creator>Jordi Prats</dc:creator>
				<category><![CDATA[Desktop]]></category>

		<guid isPermaLink="false">http://systemadmin.es/?p=2490</guid>
		<description><![CDATA[dbus es un sistema de comunicación entre procesos del escritorio (precisamente la D es de desktop). Vamos a ver como controlar el escritorio mediante el comando qdbus Primero de todo si ejecutamos qdbus sin parámetros veremos todos los servicios registrados sobre los cuales podemos interactuar: $ qdbus :1.1 org.kde.klauncher :1.10 org.kde.knotify :1.100 :1.104 :1.105 :1.12 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>dbus</strong> es un sistema de comunicación entre procesos del escritorio (precisamente la D es de <strong>desktop</strong>). Vamos a ver como controlar el escritorio mediante el comando <strong>qdbus</strong></p>
<p><!-- more --></p>
<p>Primero de todo si ejecutamos <strong>qdbus</strong> sin parámetros veremos todos los servicios registrados sobre los cuales podemos interactuar:</p>
<pre>
$ qdbus
:1.1
 org.kde.klauncher
:1.10
 org.kde.knotify
:1.100
:1.104
:1.105
:1.12
 org.kde.plasma-desktop
:1.14
 org.kde.kaccess
:1.157
:1.17
 org.kde.NepomukServer
:1.171
:1.172
:1.177
 org.kde.konsole
:1.188
 org.freedesktop.PackageKit
 org.kde.KPackageKitSmartIcon
:1.192
:1.2
 org.freedesktop.PowerManagement
 org.freedesktop.PowerManagement.Inhibit
 org.kde.Kephal
 org.kde.StatusNotifierWatcher
 org.kde.kded
 org.kde.network
 org.kde.powerdevil
:1.21
 org.freedesktop.ScreenSaver
 org.kde.krunner
 org.kde.screensaver
:1.23
 org.kde.NepomukStorage
 org.kde.nepomuk.services.nepomukstorage
:1.25
 org.kde.kmix
:1.27
 org.gnome.Terminal.Display_0_0
:1.28
 org.gnome.GConf
:1.34
 org.kde.StatusNotifierItem-2190-1
:1.35
:1.36
 org.gtk.vfs.Daemon
:1.37
 org.kde.amarok
 org.mpris.amarok
:1.39
:1.40
:1.42
 org.kde.nepomuk.services.digikamnepomukservice
:1.43
 org.kde.nepomuk.services.nepomukremovablestorageservice
:1.44
 org.kde.nepomuk.services.nepomukfilewatch
:1.45
 org.kde.nepomuk.services.nepomukontologyloader
:1.46
 org.kde.nepomuk.services.nepomukqueryservice
:1.47
 org.freedesktop.ReserveDevice1.Audio0
 org.pulseaudio.Server
:1.5
 org.kde.kglobalaccel
:1.50
 com.redhat.imsettings
:1.51
:1.52
 com.redhat.abrt.applet
:1.56
:1.57
 org.kde.klipper
:1.61
 org.gnome.keyring
:1.62
 com.redhat.imsettings.GConf
:1.63
 org.freedesktop.NetworkManagerUserSettings
:1.64
 org.freedesktop.Notifications
:1.66
 org.kde.printer-applet-2335
:1.68
 org.kde.kwalletd
:1.77
:1.78
 com.redhat.virt.manager
:1.79
:1.8
 org.kde.ksmserver
 org.kde.ksmserver-2154
:1.80
:1.81
:1.82
 org.gtk.Private.GduVolumeMonitor
:1.85
:1.9
 org.kde.kwin
 org.kde.kwin-2160
org.freedesktop.DBus
</pre>
<p>Un ejemplo puede ser el protector de pantalla, que tiene el identificador <strong>org.freedesktop.ScreenSaver</strong>. Si ejecutamos <strong>qdbus</strong> con este id veremos los objetos registrados:</p>
<pre>
$ qdbus org.freedesktop.ScreenSaver
/
/App
/KBookmarkManager
/KBookmarkManager/kfilePlaces
/KBookmarkManager/konqueror
/KDebug
/KIO
/KIO/Scheduler
/MainApplication
/ScreenSaver
</pre>
<p>Dentro de cada objeto tiene un conjunto de funciones, los cuales podemos ver si agregamos a la línea de comandos el objeto que nos interesa, por ejemplo <strong>/ScreenSaver</strong>:</p>
<pre>
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver
signal void org.freedesktop.ScreenSaver.ActiveChanged(bool)
method bool org.freedesktop.ScreenSaver.GetActive()
method uint org.freedesktop.ScreenSaver.GetActiveTime()
method uint org.freedesktop.ScreenSaver.GetSessionIdleTime()
method uint org.freedesktop.ScreenSaver.Inhibit(QString application_name, QString reason_for_inhibit)
method void org.freedesktop.ScreenSaver.Lock()
method bool org.freedesktop.ScreenSaver.SetActive(bool e)
method void org.freedesktop.ScreenSaver.SimulateUserActivity()
method uint org.freedesktop.ScreenSaver.Throttle(QString application_name, QString reason_for_inhibit)
method void org.freedesktop.ScreenSaver.UnInhibit(uint cookie)
method void org.freedesktop.ScreenSaver.UnThrottle(uint cookie)
method void org.kde.screensaver.configure()
method void org.kde.screensaver.saverLockReady()
method void org.kde.screensaver.setupPlasma()
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()
</pre>
<p>Podemos ver como existe una función para <strong>bloquear la pantalla desde linea de comandos</strong>:</p>
<pre>
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
</pre>
<p>También nos da otros datos, como por ejemplo, el tiempo que lleva la sesión del usuario inactiva:</p>
<pre>
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver GetSessionIdleTime
20
</pre>
<p>Evidentemente si lanzamos el comando desde la misma sesión nos dará <strong>0</strong></p>
<p>Podemos incluso desde <strong>org.kde.kwin</strong> enviar la orden de <strong>avanzar y retroceder de escritorio virtual mediante comandos</strong>:</p>
<pre>
$ qdbus org.kde.kwin /KWin nextDesktop
$ qdbus org.kde.kwin /KWin previousDesktop
</pre>
<p><strong>dbus</strong> es todo un mundo a explorar a fondo.</p>
Post sin tags
	<h4 style="margin-top: 50px">Relacionados</h4>
	<ul class="st-related-posts">
	<li>No hay posts relacionados.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://systemadmin.es/2010/04/controlando-el-escritorio-desde-linea-de-comandos-mediante-dbus/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

