我编写了一个脚本,它可以响应键盘快捷键,如果它尚未打开,则执行 Spotify 应用程序。
如果 Spotify 已经打开,脚本将使用 xdotool 激活窗口(将其“置于最前面”)。这些工具本身运行良好,但有一个问题。如果您“关闭”Spotify 窗口(例如,点击角落的 X),窗口将完全消失,只能通过系统托盘访问。Spotify 仍在运行,但 xdotool 无法激活窗口——它什么也不做。
在这种情况下,我怎样才能将“关闭”的窗口移到最前面? Spotify 的编写方式是否使这变得不可能? 即使窗口已关闭,xdotool 实际上也会正确返回窗口的 ID。
我已经尝试过“windowmap”函数和“windowmove 0 0”,但实际上都没有带来任何变化。
编辑:用户 muru 建议重新执行 Spotify,就我而言,这实际上最终基本可以正常工作,尽管之前没有。这取决于 Spotify 如何处理重新打开。如果有通用解决方案,我很想听听。
答案1
例如,在远程控制脚本中,我设法通过 D-Bus 从托盘中“升起” Clementine:
qdbus org.mpris.clementine /org/mpris/MediaPlayer2 Raise
这与 Spotify 类似,因为它支持 D-Bus 协议。相应的命令是:
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Raise