[opensuse-es] Fallo con Kdialog en KDE4
Hola a la lista. Soy consciente de que mi consulta debería ir en primer lugar al grupo de KDE-opensuse, pero no estoy con ganas ahora mismo de escribir este jaleo en inglés. Pido disculpas por adelantado y confío en que alguien tenga la respuesta. Uso KDE 4.4.4 sobre openSUSE 11.2 y hace tiempo que tenía por aquí un script propio muy chulo con el que hacía ciertas cositas. Ahora he tenido que volver a usarlo y no me va. El script funcionaba perfectamente en KDE3.5. El núcleo del problema es el siguiente: mi script lanza un par de kdialogs con los que pregunta y ejecuta un par de órdenes con privilegios de root, así que lo lanzo mediante "kdesu -c /ruta/a/mi/script.sh". Antes funcionaba de maravilla pero ahora al lanzar la orden kdialog --loquesea como root, da error e interrumpe la ejecución. Si extraigo la orden y la ejecuto en consola... dice lo siguiente: kdialog(12133): Session bus not found KCrash: Application 'kdialog' crashing... sock_file=/root/.kde4/socket-pc/kdeinit4__0 Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(12134): Session bus not found ejecutando la misma orden con mi usuario, se muestra el diálogo correctamente (el paquete kdialog está también instalado). ¿Alguna idea? -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Wed, 30 Jun 2010 23:11:00 +0100, Alfredo Amaya escribió: (...)
El núcleo del problema es el siguiente: mi script lanza un par de kdialogs con los que pregunta y ejecuta un par de órdenes con privilegios de root, así que lo lanzo mediante "kdesu -c /ruta/a/mi/script.sh". Antes funcionaba de maravilla pero ahora al lanzar la orden kdialog --loquesea como root, da error e interrumpe la ejecución.
Si extraigo la orden y la ejecuto en consola... dice lo siguiente:
kdialog(12133): Session bus not found
KCrash: Application 'kdialog' crashing... sock_file=/root/.kde4/socket-pc/kdeinit4__0 Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(12134): Session bus not found
(...) Por "la Internete" se dice-se comenta que tienes que ejecutar "dbus- launch kdialog --loquesea". Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Por "la Internete" se dice-se comenta que tienes que ejecutar "dbus- launch kdialog --loquesea".
Ajá, funciona. Gracias!! Pero.......... No tiene nada que ver ejecutar: kdialog --passivepopup "Ejemplo" 3 que... dbus-launch kdialog --passivepopup "Ejemplo" 3 En el primer caso la notificación se integra en plasma mientras que en el segundo no. Hablo de ejecutarlo sin impersonar, directamente desde mi sesión de usuario activa -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Thu, 01 Jul 2010 19:06:17 +0100, Alfredo Amaya escribió:
Por "la Internete" se dice-se comenta que tienes que ejecutar "dbus- launch kdialog --loquesea".
Ajá, funciona. Gracias!!
Eso quiere decir que te faltaba iniciar sesión con "login" desde root, por lo que seguramente esto tenga el mismo efecto: *** su - -c "kdialog --passivepopup Test 3" ***
Pero..........
No tiene nada que ver ejecutar:
kdialog --passivepopup "Ejemplo" 3
que...
dbus-launch kdialog --passivepopup "Ejemplo" 3
En el primer caso la notificación se integra en plasma mientras que en el segundo no. Hablo de ejecutarlo sin impersonar, directamente desde mi sesión de usuario activa
¿Mande? :-? Supongo que quieres decir que no aparece el mensaje anclado en la bandeja del sistema o algo así ¿no? Pues eso ya no sé cómo configurarlo. Quizá esté relacionado con su ejecución como usuario "root" y no sé si será configurable :-? Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
On Viernes 02 Julio 2010 10:45:52 Camaleón escribió:
En el primer caso la notificación se integra en plasma mientras que en el segundo no. Hablo de ejecutarlo sin impersonar, directamente desde mi sesión de usuario activa
¿Mande? :-?
Supongo que quieres decir que no aparece el mensaje anclado en la bandeja del sistema o algo así ¿no? Pues eso ya no sé cómo configurarlo. Quizá esté relacionado con su ejecución como usuario "root" y no sé si será configurable :-?
Y lanzar ese kdialog como usuario normal, tipo. su $USER -c "kdialog --passivepopup hola" Si el script original que lanzas se ejecuta como root, claro... O usar wall o write, si es que lo que quieres es notificar a los usuarios algo importante. saludos -- deabru, bai deabrunaiz... -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Y lanzar ese kdialog como usuario normal, tipo.
su $USER -c "kdialog --passivepopup hola"
Si el script original que lanzas se ejecuta como root, claro...
Perfecto, eso sí ha funcionado. Pero estoy viendo en la techbase de KDE la poca documentación que hay acerca de DBUS en general. El tema es que en otro lado del script mostraba otro kdialog (un --progressbar) que iba cambiando paso a paso, y parece que hacer tal cosa no es posible ahora mediante DBUS. Simplemente si ejecuto el script como root, carezco de una sesión X activa como tal y no puedo controlar dicho kdialog (es la explicación que he encontrado). Con mi usuario sí lo muestra. En algún sitio aluden a una forma de saltarme esto atrapando el valor de la variable de sesión de DBUS (http://usrlocalbin.blogspot.com/2008/04/simple-qdbus-tutorial-part-two.html) pero tal cosa no funciona en openSUSE por lo que veo. Lo siguiente es un ejemplo de lo que digo. Si se ejecuta como el usuario activo, funciona; como root falla: #Las comillas simples son tildes. Si no, no funciona dbusRef=`kdialog --title "Prueba" --progressbar "Paso 1" 3` sleep 3 qdbus $dbusRef org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value 1 qdbus $dbusRef org.kde.kdialog.ProgressDialog.setLabelText "Paso 2" sleep 3 qdbus $dbusRef org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value 2 qdbus $dbusRef org.kde.kdialog.ProgressDialog.setLabelText "Paso 3" sleep 3 qdbus $dbusRef org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value 3 qdbus $dbusRef org.kde.kdialog.ProgressDialog.setLabelText "Hecho" sleep 2 qdbus $dbusRef close
O usar wall o write, si es que lo que quieres es notificar a los usuarios algo importante.
No conozco estos comandos, son comandos bash? -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Sun, 04 Jul 2010 17:22:12 +0100, Alfredo Amaya escribió:
Y lanzar ese kdialog como usuario normal, tipo.
su $USER -c "kdialog --passivepopup hola"
Si el script original que lanzas se ejecuta como root, claro...
Perfecto, eso sí ha funcionado. Pero estoy viendo en la techbase de KDE la poca documentación que hay acerca de DBUS en general. El tema es que en otro lado del script mostraba otro kdialog (un --progressbar) que iba cambiando paso a paso, y parece que hacer tal cosa no es posible ahora mediante DBUS.
Pues a mí me dice dice que la opción no está disponible.
Simplemente si ejecuto el script como root, carezco de una sesión X activa como tal y no puedo controlar dicho kdialog (es la explicación que he encontrado).
Eso es lo que te había comentado.
Con mi usuario sí lo muestra.
He cargado la KDE4Live y con el usuario normal tampoco lo muestra (si lanzas el script desde Konsole verás el error).
En algún sitio aluden a una forma de saltarme esto atrapando el valor de la variable de sesión de DBUS (http://usrlocalbin.blogspot.com/2008/04/simple-qdbus-tutorial-part- two.html) pero tal cosa no funciona en openSUSE por lo que veo. Lo siguiente es un ejemplo de lo que digo. Si se ejecuta como el usuario activo, funciona; como root falla:
Bueno, a ver, si ejecuto lo que pones más abajo como usuario funciona (sin la barra de progreso). Y como root, haciéndolo como te he comentado antes, también lanza la ventanita (sin la barra, igualmente): su - -c "/ruta/al/script/script.sh" Dice algo así como "No such method Set in interface ... at object path / ProgressDialog signature... line 5: command org.kde.kdialog.ProgressDialog not found" Manual, aquí: Development/Tutorials/Shell Scripting with KDE Dialogs http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialo... Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Perfecto, eso sí ha funcionado. Pero estoy viendo en la techbase de KDE la poca documentación que hay acerca de DBUS en general. El tema es que en otro lado del script mostraba otro kdialog (un --progressbar) que iba cambiando paso a paso, y parece que hacer tal cosa no es posible ahora mediante DBUS.
Pues a mí me dice dice que la opción no está disponible.
¿Qué opción? No entiendo. En el link que pasas de la techbase (al que yo me refería) usan ese mismo kdialog. Es muy raro que no lo tengas.
Simplemente si ejecuto el script como root, carezco de una sesión X activa como tal y no puedo controlar dicho kdialog (es la explicación que he encontrado).
Eso es lo que te había comentado.
OK
Con mi usuario sí lo muestra.
He cargado la KDE4Live y con el usuario normal tampoco lo muestra (si lanzas el script desde Konsole verás el error).
Te refieres a la live de Factory? A mí me funca en KDE 4.4.4 sobre la 11.2
En algún sitio aluden a una forma de saltarme esto atrapando el valor de la variable de sesión de DBUS (http://usrlocalbin.blogspot.com/2008/04/simple-qdbus-tutorial-part- two.html) pero tal cosa no funciona en openSUSE por lo que veo. Lo siguiente es un ejemplo de lo que digo. Si se ejecuta como el usuario activo, funciona; como root falla:
Bueno, a ver, si ejecuto lo que pones más abajo como usuario funciona (sin la barra de progreso).
¿¿¿¿???? Raro, raro, raro, la barra de progreso debe tirar, es un control muy común. ¿No te funciona en Kmail, por ejemplo?
Y como root, haciéndolo como te he comentado antes, también lanza la ventanita (sin la barra, igualmente):
su - -c "/ruta/al/script/script.sh"
Dice algo así como "No such method Set in interface ... at object path / ProgressDialog signature... line 5: command org.kde.kdialog.ProgressDialog not found"
A mí me sale exactamente lo siguiente como root, ¿es este tu caso?: kdialog(6705): Session bus not found KCrash: Application 'kdialog' crashing... Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(6707): Session bus not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Sun, 04 Jul 2010 21:30:58 +0100, Alfredo Amaya escribió:
Perfecto, eso sí ha funcionado. Pero estoy viendo en la techbase de KDE la poca documentación que hay acerca de DBUS en general. El tema es que en otro lado del script mostraba otro kdialog (un --progressbar) que iba cambiando paso a paso, y parece que hacer tal cosa no es posible ahora mediante DBUS.
Pues a mí me dice dice que la opción no está disponible.
¿Qué opción? No entiendo. En el link que pasas de la techbase (al que yo me refería) usan ese mismo kdialog. Es muy raro que no lo tengas.
No es una opción, es la propiedad o método. Ahora te paso el error concreto que saca.
He cargado la KDE4Live y con el usuario normal tampoco lo muestra (si lanzas el script desde Konsole verás el error).
Te refieres a la live de Factory? A mí me funca en KDE 4.4.4 sobre la 11.2
No, es la KDE4Live, esta: http://home.kde.org/~kdelive/
Bueno, a ver, si ejecuto lo que pones más abajo como usuario funciona (sin la barra de progreso).
¿¿¿¿???? Raro, raro, raro, la barra de progreso debe tirar, es un control muy común. ¿No te funciona en Kmail, por ejemplo?
No funciona tal y como está definida en ese script. La ventana aparece pintada en mitad de la pantalla y la barra de progreso también, pero la barra no se mueve, no avanza.
Y como root, haciéndolo como te he comentado antes, también lanza la ventanita (sin la barra, igualmente):
su - -c "/ruta/al/script/script.sh"
Dice algo así como "No such method Set in interface ... at object path / ProgressDialog signature... line 5: command org.kde.kdialog.ProgressDialog not found"
A mí me sale exactamente lo siguiente como root, ¿es este tu caso?:
kdialog(6705): Session bus not found
KCrash: Application 'kdialog' crashing... Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(6707): Session bus not found
A ver, si ejecuto el script que has pasado como usuario root -y como te he dicho :-)-, aparece la ventana en la pantalla, al igual que sucede cuando el script lo lanza el usuario común, y veo lo siguiente en konsole: *** linux@linux:~/Escritorio> su - -c "/home/linux/Escritorio/test.sh" Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') /home/linux/Escritorio/test.sh: line 5: org.kde.kdialog.ProgressDialog: command not found Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') /home/linux/Escritorio/test.sh: line 10: org.kde.kdialog.ProgressDialog: command not found Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') /home/linux/Escritorio/test.sh: line 15: org.kde.kdialog.ProgressDialog: command not found *** En cambio, si lo ejecuto como root pero *sin iniciar una shell de login* (es decir, sin "su -"), veo exactamente lo mismo que tú y efectivamente, no aparece ninguna ventanita en la pantalla: *** linux@linux:~/Escritorio> su -c "/home/linux/Escritorio/test.sh" kdialog(8058): Session bus not found KCrash: Application 'kdialog' crashing... Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(8060): Session bus not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. /home/linux/Escritorio/test.sh: line 5: org.kde.kdialog.ProgressDialog: command not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. /home/linux/Escritorio/test.sh: line 10: org.kde.kdialog.ProgressDialog: command not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. /home/linux/Escritorio/test.sh: line 15: org.kde.kdialog.ProgressDialog: command not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. *** Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
A ver, si ejecuto el script que has pasado como usuario root -y como te he dicho :-)-, aparece la ventana en la pantalla, al igual que sucede cuando el script lo lanza el usuario común, y veo lo siguiente en konsole:
Exacto, la barra no progresa porque en ningún caso lo has ejecutado con tu propio usuario, no? En ese caso al menos debería funcionar, validándolo. No es un problema de sintaxis, sino con DBUS entre usuarios. Si lo ejecutas con tu propio usuario desde una 11.2 (no la live), ¿te funciona? -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Sun, 04 Jul 2010 22:45:29 +0100, Alfredo Amaya escribió:
A ver, si ejecuto el script que has pasado como usuario root -y como te he dicho :-)-, aparece la ventana en la pantalla, al igual que sucede cuando el script lo lanza el usuario común, y veo lo siguiente en konsole:
Exacto, la barra no progresa porque en ningún caso lo has ejecutado con tu propio usuario, no? En ese caso al menos debería funcionar, validándolo. No es un problema de sintaxis, sino con DBUS entre usuarios. Si lo ejecutas con tu propio usuario desde una 11.2 (no la live), ¿te funciona?
No, desde la KDE4live con el usuario habitual tampoco funciona (es decir, saca en konsole el mismo mensaje que aparece cuando lo ejecuto como "su - -c..." y muestra la ventana con la barra pero sin progreso). No lo puedo probar ahora con la live de la 11.2 porque sólo tengo acceso a una 11.2 con GNOME instalada en la VM y a la kde4live. Mañana en cuanto tenga un momento, lo pruebo. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Sun, 04 Jul 2010 21:55:36 +0000, Camaleón escribió:
El Sun, 04 Jul 2010 22:45:29 +0100, Alfredo Amaya escribió:
Exacto, la barra no progresa porque en ningún caso lo has ejecutado con tu propio usuario, no? En ese caso al menos debería funcionar, validándolo. No es un problema de sintaxis, sino con DBUS entre usuarios. Si lo ejecutas con tu propio usuario desde una 11.2 (no la live), ¿te funciona?
No, desde la KDE4live con el usuario habitual tampoco funciona (es decir, saca en konsole el mismo mensaje que aparece cuando lo ejecuto como "su - -c..." y muestra la ventana con la barra pero sin progreso).
No lo puedo probar ahora con la live de la 11.2 porque sólo tengo acceso a una 11.2 con GNOME instalada en la VM y a la kde4live. Mañana en cuanto tenga un momento, lo pruebo.
Probado con la LiveCD de la 11.3, KDE 4.4.4. linux@linux:~/Desktop> cat /etc/SuSE-release openSUSE 11.3 (i586) VERSION = 11.3 Ejecutado como usuario *no funciona*: *** linux@linux:~/Desktop> ./test.sh Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 5: org.kde.kdialog.ProgressDialog: command not found Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 10: org.kde.kdialog.ProgressDialog: command not found Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 15: org.kde.kdialog.ProgressDialog: command not found *** Obtengo el mismo comportamiento que ayer, pinta la ventana pero la barra de progreso NO se mueve. Pantallazo: http://picpaste.com/snapshot1.png Como root (su - -c "/home/linux/Escritorio/test.sh") pasa exactamente lo mismo. Ahora bien... si copio y pego el script de ejemplo que ponen en la página web que te pasé: *** dbusRef=`kdialog --progressbar "Press Cancel at Any time" 10` qdbus $dbusRef showCancelButton true until test "true" = `qdbus $dbusRef wasCancelled`; do sleep 1 inc=$((`qdbus $dbusRef Get "" "value"` + 1)) qdbus $dbusRef Set "" "value" $inc; done qdbus $dbusRef close *** Y lo ejecuto, funciona perfectamente, como root y como usuario. Pantallazo: http://picpaste.com/snapshot2.png Fíjate en la segunda imagen. Konsole no muestra ningún error. Luego... algo estás poniendo mal :-P Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hmmm, curioso, curioso, porque ese mismo ejemplo que a ti te funciona me daba cierto error a mí, aunque hablo de memoria. De hecho ahí se alude a los métodos sin especificar el path completo, cosa que yo sí hago porque me parece que alguno había cambiado de nombre. En cuanto llegue a casa y me dé la consabida ducha lo pruebo
Rrrarrrooo, rrrrrraaaaarrrroooooo....
(Sorry for top-posting)
El 05/07/2010, a las 16:14, Camaleón
El Sun, 04 Jul 2010 21:55:36 +0000, Camaleón escribió:
El Sun, 04 Jul 2010 22:45:29 +0100, Alfredo Amaya escribió:
Exacto, la barra no progresa porque en ningún caso lo has ejecutado con tu propio usuario, no? En ese caso al menos debería funcionar, validándolo. No es un problema de sintaxis, sino con DBUS entre usuarios. Si lo ejecutas con tu propio usuario desde una 11.2 (no la live), ¿te funciona?
No, desde la KDE4live con el usuario habitual tampoco funciona (es decir, saca en konsole el mismo mensaje que aparece cuando lo ejecuto como "su - -c..." y muestra la ventana con la barra pero sin progreso).
No lo puedo probar ahora con la live de la 11.2 porque sólo tengo acceso a una 11.2 con GNOME instalada en la VM y a la kde4live. Mañana en cuanto tenga un momento, lo pruebo.
Probado con la LiveCD de la 11.3, KDE 4.4.4.
linux@linux:~/Desktop> cat /etc/SuSE-release openSUSE 11.3 (i586) VERSION = 11.3
Ejecutado como usuario *no funciona*:
*** linux@linux:~/Desktop> ./test.sh Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 5: org.kde.kdialog.ProgressDialog: command not found
Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 10: org.kde.kdialog.ProgressDialog: command not found
Error: org.freedesktop.DBus.Error.UnknownMethod No such method 'Set' in interface 'org.freedesktop.DBus.Properties' at object path '/ProgressDialog' (signature '') ./test.sh: line 15: org.kde.kdialog.ProgressDialog: command not found ***
Obtengo el mismo comportamiento que ayer, pinta la ventana pero la barra de progreso NO se mueve. Pantallazo:
http://picpaste.com/snapshot1.png
Como root (su - -c "/home/linux/Escritorio/test.sh") pasa exactamente lo mismo.
Ahora bien... si copio y pego el script de ejemplo que ponen en la página web que te pasé:
*** dbusRef=`kdialog --progressbar "Press Cancel at Any time" 10` qdbus $dbusRef showCancelButton true
until test "true" = `qdbus $dbusRef wasCancelled`; do sleep 1 inc=$((`qdbus $dbusRef Get "" "value"` + 1)) qdbus $dbusRef Set "" "value" $inc; done
qdbus $dbusRef close ***
Y lo ejecuto, funciona perfectamente, como root y como usuario. Pantallazo:
http://picpaste.com/snapshot2.png
Fíjate en la segunda imagen. Konsole no muestra ningún error. Luego... algo estás poniendo mal :-P
Saludos,
-- Camaleón
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Ahora bien... si copio y pego el script de ejemplo que ponen en la página web que te pasé:
*** dbusRef=`kdialog --progressbar "Press Cancel at Any time" 10` qdbus $dbusRef showCancelButton true
until test "true" = `qdbus $dbusRef wasCancelled`; do sleep 1 inc=$((`qdbus $dbusRef Get "" "value"` + 1)) qdbus $dbusRef Set "" "value" $inc; done
qdbus $dbusRef close ***
Y lo ejecuto, funciona perfectamente, como root y como usuario.
Sasto, a mí me falla ese. Como usuario se ejecuta normalmente, pero al terminar el bucle no se cierra. Cuando cierro el kdialog, la consola escupe lo siguiente, una y otra vez: Cannot find '.Set' in object /ProgressDialog at org.kde.kdialog-7860 Service 'org.kde.kdialog-7860' does not exist. ./prueba.sh: line 60: test: true: se esperaba un operador unario Como root, ni siquiera sale el kdialog, y la consola ladra esto otro: kdialog(8702): Session bus not found KCrash: Application 'kdialog' crashing... Warning: connect() failed: : No existe el fichero o el directorio KCrash cannot reach kdeinit, launching directly. drkonqi(8704): Session bus not found Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. Could not connect to D-Bus server: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. ./prueba.sh: line 61: test: true: se esperaba un operador unario La diferencia entre mi ejemplo y este otro en el caso de root, es que este último no sale nunca del bucle y se queda siempre diciendo esto. O_O Hay que ver!!! -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Mon, 05 Jul 2010 18:28:26 +0100, Alfredo Amaya escribió:
Ahora bien... si copio y pego el script de ejemplo que ponen en la página web que te pasé:
(...)
Y lo ejecuto, funciona perfectamente, como root y como usuario.
Sasto, a mí me falla ese. Como usuario se ejecuta normalmente, pero al terminar el bucle no se cierra.
(...) A ver, a ver... dos cosas: 1/ Tienes que ejecutarlo "asín": "su - -c "/ruta/al/script.sh" 2/ Tienes que pulsar el botón "Cancel" para salir del script sin errores. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
A ver, a ver... dos cosas:
1/ Tienes que ejecutarlo "asín": "su - -c "/ruta/al/script.sh"
Grrrrrrrrr, es lo que hago; y no muestra ningún diálogo, tan solo ese error
2/ Tienes que pulsar el botón "Cancel" para salir del script sin errores.
Grrrrrrrrr, vale.
Saludos,
-- Camaleón
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Mon, 05 Jul 2010 18:58:53 +0100, Alfredo Amaya escribió:
A ver, a ver... dos cosas:
1/ Tienes que ejecutarlo "asín": "su - -c "/ruta/al/script.sh"
Grrrrrrrrr, es lo que hago; y no muestra ningún diálogo, tan solo ese error
2/ Tienes que pulsar el botón "Cancel" para salir del script sin errores.
Grrrrrrrrr, vale.
Igualmente, me funcionan los 3 scripts de ejemplo que hay en "/usr/share/ doc/packages/kdialog" :-P Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Mon, 05 Jul 2010 18:14:23 +0000, Camaleón escribió:
Igualmente, me funcionan los 3 scripts de ejemplo que hay en "/usr/share/ doc/packages/kdialog" :-P
Hum... vale, creo que ya sé lo que pasa. Prueba con esto: *** su -c "dbus-launch /usr/share/doc/packages/kdialogprogressdemo" *** Explico. En la LiveCD no hay password para root por eso funcionaba tan ricamente O:-), pero al hacer las pruebas con un nuevo usuario creado con contraseña, efectivamente, casca como dices. Hay que añadir a la orden el comando "dbus-launch" antes de ejecutarlo. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Prueba con esto:
*** su -c "dbus-launch /usr/share/doc/packages/kdialogprogressdemo" ***
Explico. En la LiveCD no hay password para root por eso funcionaba tan ricamente O:-), pero al hacer las pruebas con un nuevo usuario creado con contraseña, efectivamente, casca como dices. Hay que añadir a la orden el comando "dbus-launch" antes de ejecutarlo.
Genial, la parte de mi script que rula como root ya lo hace como debe. Lo que me peta ahora es otra cosa. Pero explícame cómo llegaste a esa conclusión, ¿disparando al aire? ¿Instinto? No he visto ningún ejemplo de todo lo que he leído que opten por esta solución ;-) Lo que no va ahora es el kdialog --passivepopup que usaba como anuncio, que se ejecutaba como usuario y se integraba en el panel del escritorio. Lo hacía de esta manera dentro del script: su USUARIO -c `kdialog --title "Prueba" --passivepopup "Listo" 3` Esta orden provoca un crash y sale el crash-handler en pantalla. Si le quito el su y la lanzo también como root, no se integra. NOTA: al hacer todas estas pruebas, lanzando la ejecución del script desde consola con uno y otro usuario, la consola se desborda mostrando unos insidiosos mensajes de log de kbuilsyscoca, kded, kdeinit, y toda esa familia, que se quedan ahí, cobrando vida propia, después de interrumpir el script. Hay alguna forma de evitar tanta literatura? Gracias d'antemano! -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Mon, 05 Jul 2010 21:02:00 +0100, Alfredo Amaya escribió:
Prueba con esto:
*** su -c "dbus-launch /usr/share/doc/packages/kdialogprogressdemo" ***
Explico. En la LiveCD no hay password para root por eso funcionaba tan ricamente O:-), pero al hacer las pruebas con un nuevo usuario creado con contraseña, efectivamente, casca como dices. Hay que añadir a la orden el comando "dbus-launch" antes de ejecutarlo.
Genial, la parte de mi script que rula como root ya lo hace como debe. Lo que me peta ahora es otra cosa. Pero explícame cómo llegaste a esa conclusión, ¿disparando al aire? ¿Instinto? No he visto ningún ejemplo de todo lo que he leído que opten por esta solución ;-)
Prueba y error. Teníamos todos los ingredientes para hacer el puchero, sólo nos faltaban los pasos para hacer la receta :-)
Lo que no va ahora es el kdialog --passivepopup que usaba como anuncio, que se ejecutaba como usuario y se integraba en el panel del escritorio. Lo hacía de esta manera dentro del script:
su USUARIO -c `kdialog --title "Prueba" --passivepopup "Listo" 3`
Hemos quedado en que había que lanzarlo así, al menos cuando/si usas "su": *** su USUARIO -c `dbus-launch kdialog --title "Prueba" --passivepopup "Listo" 3` ***
Esta orden provoca un crash y sale el crash-handler en pantalla. Si le quito el su y la lanzo también como root, no se integra.
Sí, eso ya te comenté que no sé si será configurable. Pareciera como si sólo el usuario que ha iniciado la sesión gráfica pudiera renderizar el mensaje en la bandeja del sistema, creo que ya lo comentaste en un mensaje anterior :-? Si te animas, en la lista de "opensuse-kde" seguro que te dan alguna pista. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (3)
-
Alfredo Amaya
-
Camaleón
-
deabru