Encontrar o tamanho do espaço de trabalho (tamanho de tela menor a barra de tarefas), utilizando GTK
Pergunta
Como você cria uma janela principal que preenche todo o desktop sem cobrir (ou ser coberto por) na barra de tarefas e sem ser maximizada ? Posso encontrar o tamanho de tela inteira com e definir a janela principal em conformidade com o seguinte:
window = gtk.Window()
screen = window.get_screen()
window.resize(screen.get_width(), screen.get_height())
mas a parte inferior da janela é coberto pela barra de tarefas.
Solução
Você está totalmente à mercê do seu gerenciador de janelas para isso, e a questão-chave aqui é:
sem ser maximizada
Assim, ficamos com uma série de hacks, porque, basicamente, maximização e redimensionamento são duas coisas separadas, de modo que você pode ser capaz de se lembrar onde estava quando é unmaximized.
Então, antes de mostrar-lhe este hack hediondo, exorto-vos a considerar o uso de maximização adequada e apenas ser feliz com ele.
Então aqui vai:
import gtk
# Even I am ashamed by this
# Set up a one-time signal handler to detect size changes
def _on_size_req(win, req):
x, y, w, h = win.get_allocation()
print x, y, w, h # just to prove to you its working
win.disconnect(win.connection_id)
win.unmaximize()
win.window.move_resize(x, y, w, h)
# Create the window, connect the signal, then maximise it
w = gtk.Window()
w.show_all()
w.connection_id = w.connect('size-request', _on_size_req)
# Maximizing will fire the signal handler just once,
# unmaximize, and then resize to the previously set size for maximization.
w.maximize()
# run this monstrosity
gtk.main()
Outras dicas
Você quer dizer fazer a janela fullscreen ?
Gtk tem funções para fazer janelas de tela cheia e volta, consulte gtk_window_fullscreen()
e gtk_window_unfullscreen()
.