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
Enviado por Vicx el 13 Septiembre, 2012 - 14:50
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
» Enlace permanente»
- Entra a tu cuenta o crea una para poder comentar.



Usuario
# 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
Usuario
# 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
Usuario
# 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.
Usuario
# 120128 De nada :)
De nada :)
# 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!!!
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)
# 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!!!
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)
Usuario
# 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.
# 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!!!
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)