我现在的 i3 配置中有这些行:
# Play/pause, prev, next
bindcode 172 exec "/opt/playerctl/bin/playerctl play-pause"
bindcode 173 exec "/opt/playerctl/bin/playerctl previous"
bindcode 171 exec "/opt/playerctl/bin/playerctl next"
这使得我键盘上的媒体按钮播放/暂停playerctl支持的音频播放器,例如Spotify。
问题是播放/暂停媒体按钮现在在我的视频播放器 (SMPlayer) 中不再起作用。
是否可以使按键绑定仅在聚焦窗口时生效不是SMP播放器?
总结一下我想做的事情:我希望上面的键绑定始终有效,除了当 SMPlayer 窗口(类:“Smplayer”)获得焦点时。
这可能吗?
答案1
你可以试试这个。请记住username
在下面替换为您真实的 Linux 用户名。由于某种原因,使用~
而home/username
不是对我不起作用。
在 i3 配置中使用这些行:
# Play/pause, prev, next
bindcode 172 exec /home/username/.i3/play.sh play-pause
bindcode 173 exec /home/username/.i3/play.sh previous
bindcode 171 exec /home/username/.i3/play.sh next
将以下内容粘贴到名为的文件中/home/username/.i3/play.sh
cmd="$1"
id=$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')
curr_title=$(xprop -id $id | awk '/_NET_WM_NAME/{$1=$2="";print}' | cut -d'"' -f2)
if [[ "$curr_title" != "SMPlayer"* ]]; then
/opt/playerctl/bin/playerctl "$cmd"
fi
您可能需要根据窗口的确切标题调整“SMPlayer”* 部分 - 我没有使用该程序的经验。else
如果您愿意,您可以添加一个子句以在 SMPlayer 运行时运行另一个程序。