* Imagenes de instalación de las versiones estables para Mageia y OpenMandriva.

OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.

Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.

Deshabilitar el Salvapantallas

Hola Blogdrakers :)

Aquí dejo un script para deshabilitar el salvapantallas. Después de lanzar la ejecución manda un mensaje al salvapantallas simulando intervención de usuario cada $segsToSlepp segs., al utilizar ctrl-c, el script finaliza, si se manda a segundo plano habría que mandar una señal de ctrl-c al proceso. Muy útil cuando se ven videos en youtube :P. Tengo uno mas bonito en QT que subiré luego si alguien lo solicita ;).


#!/bin/bash

# Objetivo: Deshabilitar el ScreenSaver
# Sintaxis: disableSS [-v {0|1|2}]
# Parametros:
# -v    habilita los mensajes
#       0 es el valor predefinido, no muestra ningun mensaje
#       1 muestra el mensaje de tiempo transcurrido al final
#       2 muestra mensajes cada $segsToSleep segundos
#

shortName=$(basename $0)
segsToSleep=60
mensajesDetallado=2
mensajeFinal=1

# Objetivo: Informar de la utilización del script y errores
# Parametros:
# $1    Mensaje de error
# $2    Código de salida
function help ()
{
        if [ "[$1]" != "[help]" ]; then
                echo -e "Error: $1" > /dev/stderr
                echo ""  > /dev/stderr
        fi
        echo "Objetivo: Deshabilitar el ScreenSaver" > /dev/stderr
        echo "Sintaxis: $shortName [-v {0|1|2}]" > /dev/stderr
        echo "Parametros:" > /dev/stderr
        echo "-v        habilita los mensajes" > /dev/stderr
        echo " 0 es el valor predefinido, no muestra ningun mensaje" > /dev/stderr
        echo " 1 muestra el mensaje de tiempo transcurrido al final" > /dev/stderr
        echo " 2 muestra mensajes cada $segsToSleep segundos" > /dev/stderr
        exit $2
}

# Objetivo: impresion de Mensaje de aviso, el aviso se imprimira mientras sea
#           la solicitud de impresión del script sea = o menor que la solicitada
#           por el usuario
# Parametros:
# $1    Mensaje
# $2    cantidad de mensajes solicitado por el usuario
# $3    cantidad de mensajes solicitado por el script
function verbose ()
{
        if [ $3 -le $2 ]; then  # $3 <= $2
                echo -e "$1" > /dev/stderr
        fi
}

verbose=0

case "$1" in
        "")
        ;;
        -h|--help)
                help "help" 3
                ;;
        -v)
                case $2 in
                        [012]) 
                                verbose=$2
                                ;;
                        *)
                                help "Error de sintaxis, parametro -v incompleto o equivocado" 1
                                ;;
                esac
                ;;
        *)
                help "Error de sintaxis $1" 1
                ;;
esac

trap salir=true INT

segs=0
salir=false
while [ "$salir" != "true" ]
do
        qdbus org.freedesktop.ScreenSaver /ScreenSaver \
                org.freedesktop.ScreenSaver.SimulateUserActivity > /dev/null
        [ "[$?]" = "[127]" ] && help "qdbus no accesible" 2
        sleep ${segsToSleep}s
        segs=$(($segs + $segsToSleep))
        verbose "Tiempo: $(($segs / 60))m + $(($segs % 60))s" $verbose $mensajesDetallado
done

verbose "\nTiempo transcurrido: $(($segs / 60))m + $(($segs % 60))s" $verbose $mensajeFinal

trap - INT

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.


Gravatar de Vicx

# 120026 Script sin formato.

Vuelvo a poner el script, sin formato para lo que no se alcance a ver.

#!/bin/bash

# Objetivo: Deshabilitar el ScreenSaver
# Sintaxis: disableSS [-v {0|1|2}]
# Parametros:
# -v habilita los mensajes
# 0 es el valor predefinido, no muestra ningun mensaje
# 1 muestra el mensaje de tiempo transcurrido al final
# 2 muestra mensajes cada $segsToSleep segundos
#

shortName=$(basename $0)
segsToSleep=60
mensajesDetallado=2
mensajeFinal=1

# Objetivo: Informar de la utilización del script y errores
# Parametros:
# $1 Mensaje de error
# $2 Código de salida
function help ()
{
if [ "[$1]" != "[help]" ]; then
echo -e "Error: $1" > /dev/stderr
echo "" > /dev/stderr
fi
echo "Objetivo: Deshabilitar el ScreenSaver" > /dev/stderr
echo "Sintaxis: $shortName [-v {0|1|2}]" > /dev/stderr
echo "Parametros:" > /dev/stderr
echo "-v habilita los mensajes" > /dev/stderr
echo " 0 es el valor predefinido, no muestra ningun mensaje" > /dev/stderr
echo " 1 muestra el mensaje de tiempo transcurrido al final" > /dev/stderr
echo " 2 muestra mensajes cada $segsToSleep segundos" > /dev/stderr
exit $2
}

# Objetivo: impresion de Mensaje de aviso, el aviso se imprimira mientras sea
# la solicitud de impresión del script sea = o menor que la solicitada
# por el usuario
# Parametros:
# $1 Mensaje
# $2 cantidad de mensajes solicitado por el usuario
# $3 cantidad de mensajes solicitado por el script
function verbose ()
{
if [ $3 -le $2 ]; then # $3 <= $2
echo -e "$1" > /dev/stderr
fi
}

verbose=0

case "$1" in
"")
;;
-h|--help)
help "help" 3
;;
-v)
case $2 in
[012])
verbose=$2
;;
*)
help "Error de sintaxis, parametro -v incompleto o equivocado" 1
;;
esac
;;
*)
help "Error de sintaxis $1" 1
;;
esac

trap salir=true INT

segs=0
salir=false
while [ "$salir" != "true" ]
do
qdbus org.freedesktop.ScreenSaver /ScreenSaver \
org.freedesktop.ScreenSaver.SimulateUserActivity > /dev/null
[ "[$?]" = "[127]" ] && help "qdbus no accesible" 2
sleep ${segsToSleep}s
segs=$(($segs + $segsToSleep))
verbose "Tiempo: $(($segs / 60))m + $(($segs % 60))s" $verbose $mensajesDetallado
done

verbose "\nTiempo transcurrido: $(($segs / 60))m + $(($segs % 60))s" $verbose $mensajeFinal

trap - INT



Gravatar de Siupermen

# 120030 Muchas gracias.

Voy a probarlo, aunque hasta esta noche que pueda probarlo no sabré realmente si me va o no.

Sube si quieres la versión Qt, yo encantado de descargármela. :D



Gravatar de Siupermen

# 120041 ¡De lujo!

Se acabo que el salvapantallas se active o la pantalla se apague cuando le de la gana.

Lo voy a dejar permanente en el inicio de sesión, y así me olvido del tema.

Muchas gracias.



Gravatar de Vicx

# 120128 De nada :)

De nada :)



Gravatar de kapyderi

# 120205 ¿Como lo has aplicado en QT?

Te comento...

Hace unos meses quise hacer algo parecido para poder conectarme por VNC y que no me saliera el dichoso screensaver, pero al mismo tiempo no quiero quitarlo excepto que le mande yo la orden.

este es el codigo que hice y que se lo salta a la torera...

void recoverdrake::on_actionBloquear_salvapantallas_triggered(bool m)
{
    this->Refrescar();
    QMessageBox x;
    bool opcion13;
    opcion13=ui->actionBloquear_salvapantallas->isChecked();
    QSettings seting("myorg","Aplica");
    seting.setValue("opcion13",opcion13);
    if (m==true)
    {
        ui->actionBloquear_salvapantallas->setIcon(QIcon(":/Imagenes/good.png"));
        QString hora = QTime::currentTime().toString("hh:mm:ss");
        ui->textEdit_4->append(""+hora+"-- Bloqueo de salvapantallas activado.");
        ControlScreen = new QTimer(this);
        connect(ControlScreen, SIGNAL(timeout()), this, SLOT(CtrlScreen()));
        ControlScreen->start(30000);
        x.setText(tr("Se ha activado el bloqueo del salvapantallas."));
        x.exec();
    }
    else
    {
        ui->actionBloquear_salvapantallas->setIcon(QIcon(""));
        QString hora = QTime::currentTime().toString("hh:mm:ss");
        ui->textEdit_4->append(""+hora+"-- Bloqueo de salvapantallas desactivado.");
        ControlScreen->stop();
        x.setText(tr("Se ha desactivado el bloqueo del salvapantallas.

""Utiliza esta opcion para volver a activarla.")); x.exec(); } ui->progressBar->hide(); ui->pushButton_2->hide(); ui->label_13->hide(); }

Con esto lo que hago es activar o desactivar el bloqueo.

Luego le mando la orden cada cierto tiempo...

void recoverdrake::CtrlScreen()
{
    system("qdbus org.freedesktop.ScreenSaver /ScreenSaver SimulateUserActivity");
}

Pues no he conseguido que funcione ni una sola vez.

¿La pregunta es sencilla, has utilizado un system para llamar a la orden o por lo contrario has utilizado un QProcess?

Gracias por la respuesta.

Saludos!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)



Gravatar de kapyderi

# 120206 Ya he visto donde estaba el error...

Exactamente en la segunda parte hay que poner...

void recoverdrake::CtrlScreen()
{
    system("su - "+user+" -c \"qdbus org.freedesktop.ScreenSaver /ScreenSaver SimulateUserActivity\"");
}

(*user = usuario activo)

Ya que estaba actuando como root y claro no funciona asi, jajajajaja (que fallo más tonto a estas alturas).

Saludos!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)



Gravatar de Vicx

# 120345 Te puedo mandar mi código empaquetado

Lo que hago no es muy complicado, solo creo un timer que se activa cada cierto tiempo.

CSystemTrayControl::CSystemTrayControl(QObject *parent):
    QObject(parent),
    ssEnable(true),
    timeToRepeatUserActivity(60)
{
    setupTimer();

    createActions();
    createTrayIcon();

    trayIcon->show();
}

void CSystemTrayControl::setupTimer()
{
    const int segundo = 1000;

    timer = new QTimer(this);
    timer->setInterval(timeToRepeatUserActivity * segundo);
    connect(timer, SIGNAL(timeout()), this, SLOT(timedOut()));
}

void CSystemTrayControl::simulateUserActivity()
{
    QDBusInterface remoteApp("org.freedesktop.ScreenSaver",
                             "/ScreenSaver",
                             "org.freedesktop.ScreenSaver",
                             QDBusConnection::sessionBus(),
                             this);

    if(remoteApp.isValid()){
        remoteApp.call("SimulateUserActivity");
    }else{
        QMessageBox::critical(0, qAppName(), trUtf8("Interface de QDbus no presente"));
        // qApp->quit();
        QCoreApplication::exit(1);
    }
}

void CSystemTrayControl::timedOut()
{
    if(!ssEnable){
        setTrayIconUserActivity();
        QTimer::singleShot(100, this, SLOT(updateTrayIcon()));
        simulateUserActivity();
        timer->start();
        //updateTrayIcon();
    }
}

Te puedo mandar mi código empaquetado en un tar a algún lugar donde me digas, para que compares y tomes lo que te sirva :). Utilizo QT Creator.

Vic.



Gravatar de kapyderi

# 120346 Okis, me lo puedes mandar al correo...

Como te comente ya me funciona pero me gustaria ver tu codigo para ver las dos formas de hacerlo.

k a p y d e r i @ e r e s m a s . c o m

Saludos y gracias!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.