Obtém a posição do item do iniciador em python

0

Estou escrevendo um aplicativo no qual quero que uma pequena janela seja aberta ao lado do item de inicialização. Eu posso tê-lo aberto na posição do mouse (que estará perto do lançador), mas isso não é muito preciso ou satisfatório. Como posso obter a posição da tela de um ícone de iniciador usando python para que eu possa definir minha posição Gtk.Window? Obrigado!

    
por Ian B. 08.07.2012 / 03:38

1 resposta

0

Isso é o que consegui descobrir, embora não seja tão satisfatório quanto obter coordenadas x, y.

Você pode obter uma lista ordenada dos itens do lançador atualmente no painel, depois encontrar seu índice de lançadores na lista e multiplicar pelo tamanho do ícone + algum preenchimento para o painel superior e espaçamento de ícones para fornecer uma coordenada y aproximada.

Veja o código abaixo. Espero que isso ajude qualquer outra pessoa que esteja procurando uma maneira de fazer isso.

    from gi.repository import Unity
    import gconf

    #Get Icon size
    LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')

    LF_ICONPADDING=10 # Guesstimate
    PANEL_HEIGHT=16  # Guesstimate, will depend on fontsize. Don't know where to get this
    #Use unity api to get a list of launcher panel items  
    lf=Unity.LauncherFavorites.get_default().enumerate_ids()

    #Find the position of my .desktop file 
    #(add 2 for the dash icon and because lists start at 0)
    pos=lf.index('nautilus.desktop') + 2

    #calculate approximate y coordinate
    y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
    
por Ian B. 29.07.2012 / 22:56