Auto ocultar panel (xfce) cuando hay una aplicacion a pantalla completa

Iniciado por Abakus, 14 Noviembre 2011, 21:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Abakus

Hola, creo que este es el sitio correcto para ello, estoy en busca de conseguir que el panel de xfce4 se oculte cuando hay una aplicación maximizada, en vista de que no tenia ni idea de como empezar lo que intente fue que al lanzar firefox se ocultara automaticamente, modifique el firefox.desktop pero no conseguí ejecutar dos ordenes en este solo desktop:
xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s true & firefox

Lo segundo que hice es relizar un shell script que busque si firefox esta andando lo conseguí pero tengo que ejecutar continuamente el script para que se oculte o no, le puse un while pero relentiza el SO.
¿Pueden ayudarme?
    bakus

Abakus

Bueno comentar que parcialmente he resuelto esto.
Lo que he hecho a sido que el firefox.desktop o cualquier otro lanzador de aplicación ejecute un script y en este caso el script es el siguiente:

#!/bin/bash
xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s true
firefox
xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s false

Cuando sea cerrado firefox volvera a aparecer el panel, prefiero que sea al estar maximizado pero no se como conseguirlo, igualmente espero que esto le sirva a más gente.
Quizá esto este mejor en el subforo GNU/Linux...
    bakus

RyogiShiki

Y porque simplemente no usas F11? O si es para algo más práctico pues avisas.

Saludos


RyogiShiki

#3
Hola! Bueno pues hoy estoy de buenas y me dieron ganas de hacer el Script, me costó un poco pero aqui está, está hecho en Ruby, y funciona de la siguiente manera: Cada 5 segundos el script comprueba que no existan ventanas maximizadas, si hay ventanas maximizadas entonces pone el panel en autohide, si no hay ventanas maximizadas lo pone otra vez normal.

Bueno sin mas ni mas aquí está:

daemonw.rb:
Código (ruby) [Seleccionar]

#!/usr/bin/env ruby

def have_windows_maximized?
   set_bar_hide = false
   
   get_windows_state = %x[wmctrl -l -G]
   get_windows_state.each_line do |s|
     status = s.gsub(/^[0x123456789abcdef]{10}\b /, "")
     if (status[" 0 0"] && !(status["Escritorio"] || status["Desktop"])) then
puts status
set_bar_hide = true
break
     else
set_bar_hide = false
     end
   end
   return set_bar_hide
end

def set_status_bar
   if (have_windows_maximized?) then
     %x[xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s true]
   else
     %x[xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s false]
   end
end

loop do
 set_status_bar
 sleep(5)
end


daemon.rb:
Código (ruby) [Seleccionar]

#!/usr/bin/env ruby

require 'daemons'

Daemons.run('daemonw.rb')


Lo que necesitas para que funcione:
1. tener instalado Ruby y rubygems
2. tener instalada la gema daemons:
Código (bash) [Seleccionar]
su -c 'gem install daemons'
3. tener instalado wmctrl ya dependiendo de la distro ue tengas ha de estar en los repos.

Como se usa:

Debes tener los dos scripts en el mismo directorio, para iniciar el servicio o daemon lo haces así:
Código (bash) [Seleccionar]
ruby daemon.rb start
o simplemente:
Código (bash) [Seleccionar]
./daemon.rb start
pero debes darle entonces permisos de ejecución
y para terminarlo:
Código (bash) [Seleccionar]
ruby daemon.rb stop
o
Código (bash) [Seleccionar]
./daemon.rb stop
Cualquier fallo porfavor comunicalo.

Lo probé y reconoce las ventanas maximizadas, a la primer ventana que encuentra manda el comando, y si ve que no hay maximizadas lanza el unset del comando, lo probe con una entrada de gnome a falta de xfce.

Descarga de archivos:
Mediafire: http://www.mediafire.com/file/azd5rys1hbu5brh/daemon.rb.tar.gz
Hotlink: http://zeroadmin.heliohost.org/daemon.rb.tar.gz

NdP: Si la ventana está maximizada, pero se encuentra minimizada también es detectada como maximizada.

NdP2: Para instalar la gem es necesario tener instalados los paquetes de desarrollo de ruby (ruby-dev) tener preferiblemente Ruby 1.9.2, y para evitar problemas GCC.
Saludos


Abakus

 ;-) ;-) ;-) Muchas gracias voy a probarlo, espero que me funcione bien en Arch.
    bakus

RyogiShiki

Bien, espero sea de ayuda. Si no te funciona por favor reportas el comportamiento presentado para corregirlo.

Saludos