在python中获取启动器项的位置

在python中获取启动器项的位置

我正在编写一个应用程序,希望在其启动器项旁边打开一个小窗口。我可以让它在鼠标位置打开(该位置靠近启动器),但这不太精确或令人满意。如何使用 python 获取启动器图标的屏幕位置,以便设置我的 Gtk.Window 位置?谢谢!

答案1

这是我能弄清楚的,尽管它并不像仅获取 x,y 坐标那么令人满意。

您可以获取面板中当前启动器项目的有序列表,然后在列表中找到启动器索引并乘以图标大小+顶部面板的一些填充和图标间距以得出近似的 y 坐标。

请参阅下面的代码。我希望这可以帮助其他正在寻找方法的人。

    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

相关内容