我正在编写一个应用程序,希望在其启动器项旁边打开一个小窗口。我可以让它在鼠标位置打开(该位置靠近启动器),但这不太精确或令人满意。如何使用 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