我有一个用于将屏幕截图上传到 imgur 的 bash 脚本。我希望 mplayer 截取屏幕截图,然后使用 bash 脚本上传,只需按一下键即可完成所有操作。有没有办法排队截取屏幕截图然后运行脚本?
答案1
据我所知,这不可能完全按照你的想法实现。你可以使用快捷方式在 mplayer/mplayer2 中截取屏幕截图s
,但让播放器发送 bash 脚本来上传所截取的图像将非常困难。不过,看起来乘用车是 mplayer 和 MPlayer2 的一个分支,它可以让这个过程变得更简单,因为它允许用户绑定多个命令(包括外部的)。
有几种方法可以解决这个问题:
在后台运行一个监视特定目录的 bash 脚本(您需要让播放器将其屏幕截图放在此目录中 - 默认是
$PWD
播放器实例的目录),它将检测新添加的图片并调用其上传脚本。不要尝试让玩家处理此类任务,而是为窗口管理器或桌面环境绑定一个键。您绑定的键将调用外部工具(例如,阴囊),然后在生成的图像上调用上传脚本。
切换到mpv,重新定义
s
命令input.conf
进行截图,然后调用上传脚本就可以了。
1
有几个明显的问题。首先,让这样的 bash 脚本不断监视文件夹会浪费大量资源。其次,让 bash 脚本识别已上传的图像并且不重复执行任务会有些困难(但并非不可能)。
2
有几个优点。首先,您不必在媒体播放器中编写脚本(通常这是一个奇怪的想法)。其次,它的通用性更强 — 您可以在环境中的任何地方使用相同的功能,而不仅仅是播放器。
3
的优点是它保持简单,并且确实能满足您的要求。缺点是您需要切换媒体播放器。
如果不知道您使用的 WM/DE,就无法为您提供具体的流程,但我强烈建议您遵循以下选项,2
除非您觉得尝试 mpv 没问题。如果您愿意尝试其他工具,mpv 是一个很棒的分支。
答案2
我自己找到了解决方案。基本上,这是一个 bash 脚本,可模拟窗口中的按键mplayer
,然后将屏幕截图发送到 imgur。所有脚本都在外部完成mplayer
,因此您只需使用 DE/WM/xbindkeys 将其绑定到任何键即可。它在这里:
#!/bin/bash
# press s to take a screenshot; vf=screenshot must be added to ~/.mplayer/confing
xdotool search --class mplayer2 key s
# So there's enough time for a screenshot to be written to a file.
sleep 0.3
cd /proc/`pidof mplayer`/cwd
imgur shot*.png
rm shot*.png
我在用着这个脚本作为imgur
命令。mplayer
必须已经运行才能正常工作。