.. _sway_screenshot:
===================================
Wayland环境(sway)截屏
===================================
在 :ref:`wayland` 的 :ref:`sway` 桌面,我需要做一些截图以便撰写文档:
- 通过 sway 的快捷键执行脚本,完成屏幕截图
- 简单的截图标记(文字和线框等)
参考 `Taking Screenshots on Wayland `_ 略作修改(主要是我 :ref:`archlinux_on_mba` ,而 :ref:`mba11_late_2010` 没有 ``print`` 按键):
- 在 :ref:`arch_linux` 上安装以下软件包:
.. literalinclude:: sway_screenshot/install
:caption: 安装截屏需要的软件包
- 创建 ``~/bin/screenshot.sh`` 脚本(注意需要通过 ``chmod +x ~/bin/acreenshot.sh`` 设置可执行属性):
.. literalinclude:: sway_screenshot/screenshot.sh
:caption: 创建 ``~/bin/screenshot.sh`` 脚本
- 配置 ``~/.config/sway/config`` (只做了一点点修改以适应我的使用,你也可以自己定义不同的快捷键) :
.. literalinclude:: sway_screenshot/config
:caption: 配置 ``~/.config/sway/config``
注意,我这里用 ``$mod+z`` 代理 ``PRINT`` 键。使用 ``ctrl+$mod+c`` 组合键重新加载 :ref:`sway` 配置就可以开始使用截屏功能
.. figure:: ../../../_static/linux/desktop/sway/sway_screen_shot_region.png
使用 ``$mod+z`` 对屏幕区域进行截屏,效果
此外,最终处理程序 ``swaypy`` 还提供了简单的图片标注功能
脚本解释
===============
使用到3个程序的pipeline:
.. literalinclude:: sway_screenshot/screenshot_cmd
:caption: 组合了3个程序实现屏幕区域截图
- 首先是 ``grim`` 会通过 ``-g`` 参数表示从 ``region`` (区域)截屏( ``region`` 值是 ``slurp`` 提供的)
- 接下来 ``slurp`` 程序会获得 从 ``(x,y)`` 开始到 ``(x)`` 的座标,这个座标会被 ``grim`` 程序读取(即 ``-g`` 获得的区域范围)以便截图
- 通过管道 ``|`` 将截取的图片传输给 ``swaypy`` (交互的简单图片处理程序)处理
- 此外的截取窗口或输出则是由 :ref:`sway` 平台的 ``swaymsg`` 实现
参考
======
- `Taking Screenshots on Wayland `_