Ubuntu下将媒体键映射为Spotify快进/快退功能的可靠方案求助
Ubuntu下用媒体键控制Spotify快进/快退的可靠方案
我在Ubuntu系统上想用键盘媒体键控制Spotify,播放、暂停、切歌这些基础功能可以通过dbus实现,但快进/快退功能没法用dbus命令完成。Spotify自带的快进/快退快捷键需要窗口获得焦点才能生效,我试过用AutoKey写脚本切换到Spotify窗口执行快捷键再切回原窗口,但连续操作时会丢失“上一窗口”的状态,存在bug,想找更可靠优雅的解决办法。
原AutoKey脚本(存在连续操作bug)
# and xdotool doesn't seem to be working, # so we have do do seeking this way spotifyClass = "spotify.Spotify" thisWindowTitle = window.get_active_title() thisWindowClass = window.get_active_class() #Switch to spotify if it's not already active if thisWindowClass != spotifyClass: window.activate(spotifyClass, False, True) window.wait_for_focus("^Spotify") time.sleep(0.1) # Necessary or else Spotify sometimes doesn't register the shortcut keyboard.send_keys("<shift>+<right>") # Switch back to the previous window window.activate(thisWindowTitle)
可行解决方案
1. 使用playerctl(推荐)
playerctl是Linux下统一控制媒体播放器的工具,支持Spotify的所有媒体控制功能,包括快进/快退,无需窗口焦点。
- 安装playerctl:
sudo apt install playerctl - 绑定媒体键到对应的playerctl命令:
- 快进10秒:
playerctl position 10+ - 快退10秒:
playerctl position 10- - 直接在系统设置的“键盘快捷键”里添加自定义快捷键,触发命令填上述内容,绑定对应的媒体键即可。
- 快进10秒:
2. 改进AutoKey脚本,修复窗口切换bug
原脚本用窗口标题切换容易出错(比如多个窗口标题相同),改用窗口ID记录原窗口更可靠:
spotify_class = "spotify.Spotify" original_window = window.get_active_window() original_window_id = original_window.wm_id # 切换到Spotify if window.get_active_class() != spotify_class: spotify_window = window.find_window(class_name=spotify_class) if spotify_window: spotify_window.activate() window.wait_for_focus("^Spotify") time.sleep(0.05) # 缩短等待时间,避免延迟 # 执行快进/快退 keyboard.send_keys("<shift>+<right>") # 快进,<shift>+<left>对应快退 # 切回原窗口 window.activate_window(original_window_id)
- 脚本通过窗口ID定位原窗口,避免了标题重复导致的切换错误,连续操作时状态更稳定。
3. 直接绑定全局快捷键到Spotify的Seek功能
通过系统的全局快捷键功能,直接将媒体键映射到Spotify的快进/快退操作,无需切换窗口:
- 以GNOME为例:
- 打开“设置”→“键盘快捷键”→“自定义快捷键”
- 添加新快捷键,名称填“Spotify快进”,命令填
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek int64 10000000(快进10秒,单位为微秒) - 绑定对应的媒体键,快退则将命令中的
10000000改为-10000000
内容的提问来源于stack exchange,提问作者123MilitaryNerd
相关产品推荐
相关产品推荐

