[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyKDE] DCOP From Cron
From:       Richard Heck <rgheck () comcast ! net>
Date:       2006-06-20 18:28:27
Message-ID: 44983E4B.9070906 () comcast ! net
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Jim Bublitz wrote:
> On Tuesday 20 June 2006 08:49, Richard Heck wrote:
>   
>> İsmail Dönmez wrote:
>>     
>>> Salı 20 Haziran 2006 17:19 tarihinde, Richard Heck şunları yazmıştı:
>>>       
>>>> I'm writing a simple application to rotate wallpaper every so often, and
>>>> I want to run it as a cron job. The basic structure is pretty simple,
>>>> and it works fine if I run it in a shell under KDE. But when I run it as
>>>> a cron job, it does not connect to the DCOP server. Is there some way to
>>>> tell the script which DCOP server to connect to?
>>>>         
>>> Maybe try dcop --user $username .
>>>       
>> Sorry, that wasn't clear. The program I'm writing is in Python.
>>     
> Yes, but it should be running under cron as the same user you're testing it as 
> (the user who owns the display and is running KDE).
>
> Your application should be based on KApplication, and can use 
> KApplication.dcopClient() to connect to the DCOP server.
>   
Here is the relevant part of the application as it presently exists:

#Create DCOP clients
import kdecore
import dcopext
dcopclient = kdecore.KApplication.dcopClient()
dcopclient.registerAs("changewp")
dcopapp = dcopext.DCOPApp("kdesktop", dcopclient)

and then later we have things like:

dcopapp.KBackgroundIface.setWallpaper(...)

As said, if I run this from a konsole under KDE, it works fine. But if I
CTRL-ALT-F1 and open a terminal outside KDE, then it doesn't work,
despite the fact that I'm running as the same user.

Here's a simple test program:

#/usr/bin/python
#Create DCOP clients
import kdecore
import dcopext
dcopclient = kdecore.KApplication.dcopClient()
dcopclient.registerAs("changewp")
dcopapp = dcopext.DCOPApp("kdesktop", dcopclient)
print dcopapp.KBackgroundIface.currentWallpaper(1)[1]

If I run that from a konsole, I get e.g.
/usr/share/wallpapers/default_gears.jpg. But if I run it from a virtual
terminal, I get: None. And again: I'm the same user both times.

Richard

Richard


[Attachment #5 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Jim Bublitz wrote:
<blockquote cite="mid200606201014.23450.jbublitz@nwinternet.com"
 type="cite">
  <pre wrap="">On Tuesday 20 June 2006 08:49, Richard Heck wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">İsmail Dönmez wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Salı 20 Haziran 2006 17:19 tarihinde, Richard Heck şunları yazmıştı:
      </pre>
      <blockquote type="cite">
        <pre wrap="">I'm writing a simple application to rotate wallpaper every so often, and
I want to run it as a cron job. The basic structure is pretty simple,
and it works fine if I run it in a shell under KDE. But when I run it as
a cron job, it does not connect to the DCOP server. Is there some way to
tell the script which DCOP server to connect to?
        </pre>
      </blockquote>
      <pre wrap="">Maybe try dcop --user $username .
      </pre>
    </blockquote>
    <pre wrap="">Sorry, that wasn't clear. The program I'm writing is in Python.
    </pre>
  </blockquote>
  <pre wrap=""><!---->Yes, but it should be running under cron as the same user you're testing it as 
(the user who owns the display and is running KDE).

Your application should be based on KApplication, and can use 
KApplication.dcopClient() to connect to the DCOP server.
  </pre>
</blockquote>
Here is the relevant part of the application as it presently exists:<br>
<pre>#Create DCOP clients
import kdecore
import dcopext
dcopclient = kdecore.KApplication.dcopClient()
dcopclient.registerAs("changewp")
dcopapp = dcopext.DCOPApp("kdesktop", dcopclient)
</pre>
and then later we have things like:<br>
<pre>dcopapp.KBackgroundIface.setWallpaper(...)
</pre>
As said, if I run this from a konsole under KDE, it works fine. But if
I CTRL-ALT-F1 and open a terminal outside KDE, then it doesn't work,
despite the fact that I'm running as the same user.<br>
<br>
Here's a simple test program:<br>
<pre>#/usr/bin/python
#Create DCOP clients
import kdecore
import dcopext
dcopclient = kdecore.KApplication.dcopClient()
dcopclient.registerAs("changewp")
dcopapp = dcopext.DCOPApp("kdesktop", dcopclient)
print dcopapp.KBackgroundIface.currentWallpaper(1)[1]
</pre>
If I run that from a konsole, I get e.g. <tt>/usr/share/wallpapers/default_gears.jpg</tt>.
But if I run it from a virtual terminal, I get: <tt>None</tt>. And
again: I'm the same user both times.<br>
<br>
Richard<br>
<br>
Richard<br>
<br>
</body>
</html>


_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic