首页 > 系统相关 >截图工具 for Linux --- 你用过吗?

截图工具 for Linux --- 你用过吗?

时间:2024-11-01 13:15:50浏览次数:6  
标签:截图 嵌入式 --- Wayland Linux X11 工具

截图工具 for Linux

Linux系统在桌面、嵌入式、服务器等多领域的广泛应用,催生了各种需求的截图工具。从简单的命令行工具到复杂的图形化应用,Linux的截图工具逐渐发展并适应了不同的图形后端架构,如X11和Wayland。本篇将从这两大后端的视角出发,介绍Linux截图工具的种类、功能、构建方法及其实际应用,详细分析在桌面与嵌入式设备中的应用场景和实现方式。


在这里插入图片描述

一、Linux截图工具的历史背景与演变

随着Linux桌面环境的发展,图形系统从早期的X11演变到现在更现代的Wayland。在这过程中,截图工具逐渐从功能简单的命令行工具发展到拥有丰富功能的GUI工具,满足从调试、监控到自动化测试的多种需求。
在这里插入图片描述在这里插入图片描述

1. X11的诞生与早期截图工具

X Window系统(X11)是1984年发布的图形后端系统,广泛应用于Linux桌面系统。X11的设计允许程序访问显示服务器,从而实现截屏功能。早期的截图工具如xwd可以捕获整个屏幕或特定窗口并保存为.xwd格式。随着需求的增加,importscrot等支持多种图像格式和操作的工具逐渐出现,扩展了Linux截图的应用场景。

2. Wayland的兴起与新一代截图工具

Wayland于2008年发布,作为X11的替代系统,它的出现是为了提高显示性能和系统安全性。Wayland严格限制应用对显示内容的访问,带来了新的截图实现方式。新的截图工具如grimwf-recorder在Wayland环境下应运而生,尤其适用于资源受限的嵌入式设备和现代桌面环境。


二、Linux系统中常见截图工具

Linux系统中的截图工具依托于不同的图形后端,主要分为支持X11和Wayland的工具。X11是传统的图形系统,支持多种灵活、功能丰富的截图工具,如importscrot,适合桌面和一些嵌入式设备的使用。Wayland是现代的图形后端,注重安全和性能,支持grimwf-recorder等轻量化截图工具,适用于资源受限的嵌入式设备和需要较高安全性的环境。这些截图工具为Linux系统的调试、开发和UI设计提供了多样化的支持。

在这里插入图片描述

1. 基于X11后端的截图工具

X11是Linux系统的传统图形后端。它的客户端-服务器模式让截图工具可以直接从X11显示服务器获取屏幕内容,简单而灵活。以下是一些常见的X11截图工具:

  • xwd:X Window系统的基础截图工具,生成.xwd格式的文件,功能简单但高兼容性。

  • import:属于ImageMagick工具集,支持多种格式和丰富的截图操作,可轻松指定截图区域、格式,并具备图像处理功能。适合X11桌面和嵌入式环境。

  • scrot:轻量级的X11截图工具,支持延时截图和区域选择,适合资源受限的环境,用于快速调试和开发。

  • flameshot:现代化的X11截图工具,提供丰富的注释、模糊效果、快捷键触发等图形界面功能,常用于桌面系统的交互式截图需求。

2. 基于Wayland后端的截图工具

Wayland是新一代的图形后端系统,架构设计严格控制了应用对屏幕内容的访问。因此,Wayland的截图工具依赖于协议支持。以下是常用的Wayland截图工具:

  • grim:轻量级、功能强大的Wayland截图工具,支持全屏和区域截图,适合桌面和嵌入式设备。

  • wf-recorder:提供截图和录屏功能,基于wlroots库,支持多种文件格式输出,适用于桌面和嵌入式环境的屏幕捕获需求。

3. Weston环境下的截图工具

Weston是Wayland的参考实现,广泛应用于嵌入式系统。其自带的screenshooter模块是Weston环境下的主要截图工具。

  • weston-screenshooter:Weston自带的模块工具,通过配置文件启用并调用命令截取屏幕,适用于资源受限的嵌入式系统。

三、截图工具的构建与集成方法(以Yocto项目为例)

在嵌入式Linux开发中,Yocto项目是常用的构建系统。它提供了灵活的工具集成方法,可以将截图工具轻松集成到Linux系统镜像中。以下是几种常用截图工具在Yocto项目中的集成方法。

1. 构建X11截图工具

import(ImageMagick工具)
  1. bblayers.conf中添加meta-openembedded层。
  2. local.conf中添加imagemagick到安装列表:
    IMAGE_INSTALL += "imagemagick"
    
  3. 构建镜像后,在设备上使用以下命令截图:
    import -window root screenshot.png
    

在这里插入图片描述

scrot
  1. 添加meta-openembedded层。
  2. local.conf中添加scrot
    IMAGE_INSTALL += "scrot"
    
  3. 构建镜像后,在设备上执行以下命令进行截图:
    scrot /tmp/screenshot.png
    

2. 构建Wayland截图工具

grim

grim 是一个高效的Wayland截图工具,适用于嵌入式和桌面系统。

  1. meta-wayland层添加到Yocto项目的bblayers.conf中。
  2. local.conf中添加grim到安装列表:
    IMAGE_INSTALL += "grim"
    
  3. 构建镜像后,在设备上执行以下命令截图:
    grim /tmp/screenshot.png
    
wf-recorder
  1. 确保meta-wayland层已在bblayers.conf中添加。
  2. local.conf中添加wf-recorder到安装列表:
    IMAGE_INSTALL += "wf-recorder"
    
  3. 构建镜像后,使用以下命令录制屏幕:
    wf-recorder -o /tmp/recording.mp4
    

3. 构建Weston截图工具

weston-screenshooter
  1. meta-imx层添加到Yocto项目的bblayers.conf中。
  2. weston的配方中添加screenshooter模块支持:
    PACKAGECONFIG += "screenshooter"
    
  3. 在Weston配置文件weston.ini中启用screenshooter模块:
    [core]
    modules=screenshooter.so
    
  4. 构建镜像后,在设备上运行以下命令进行截图:
    weston-screenshooter /tmp/screenshot.png
    

四、截图工具的实际应用场景

1. 截取指定区域的截图

在某些场景下,用户仅需截取屏幕的某一部分区域。Wayland环境下,可以结合grimslurp来实现区域截图:

grim -g "$(slurp)" /tmp/selected_screenshot.png

2. 定时自动截图

在自动化测试或监控场景中,定时截图可以帮助记录系统运行状态。以下脚本每隔一分钟截取一次屏幕:

#!/bin/sh
while true; do
    grim /tmp/screenshot_$(date +%Y%m%d%H%M%S).png
    sleep 60  # 每隔1分钟截图
done

3. 结合系统监控的截图

在嵌入式设备中,当系统资源使用量超过预设阈值时自动截图有助于排查问题。以下脚本在CPU使用率超过80%时截图:

#!/bin/bash
THRESHOLD=80
while true; do
    CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
    if (( $(echo "$CPU_USAGE > $THRESHOLD" |bc -l) )); then
        weston-screenshooter /tmp/high_cpu_usage_screenshot_$(date +%Y%m%d%H%M%S).png
        echo "High CPU usage detected: $CPU_USAGE%" >> /tmp/system_monitor.log
    fi
    sleep 5
done

五、总结

Linux系统的截图工具种类丰富,支持从X11到Wayland的多种图形后端。X11的importscrot适用于传统桌面和嵌入式设备,而Wayland的grimwf-recorder则在现代桌面和嵌入式环境中广泛使用。同时,Weston下的screenshooter模块专为嵌入式环境设计,能够满足资源受限设备

标签:截图,嵌入式,---,Wayland,Linux,X11,工具
From: https://blog.csdn.net/Interview_TC/article/details/143426881

相关文章

  • AT 经典90题(031-060)
    31.VSAtCoder考虑sg函数,每次异或上\((w_i,b_i)\)的sg函数看最后是不是\(0\)即可。注意\(b\)那一位的上界为\(1500\)而不是\(50\)。32.AtCoderEkiden考虑全排列枚举跑步顺序并判断不合法即可。33.NotTooBright先特判\(n\)或\(m\)为\(1\)的情况。对于其......
  • 电能表预付费系统-标准传输规范(STS)(29)
    6.5.3DecoderKeygeneration6.5.3.1PANBlockconstructionMeterPANMeterPrimaryAccountNumberAuniqueidentificationnumberforeachSTS-compliantpaymentmeter.ItissharedbetweenthepaymentmeterandthePOS.EncodingitintotheDecoderKeyenforces......
  • Mac和Windows最全快捷键 - Photoshop2024
    在数字化图像处理的世界里,Photoshop一直是专业设计师和摄影师的首选工具。无论是在图像编辑、图层处理还是各种效果应用上,Photoshop的功能都令人称赞。然而,Photoshop功能繁多,如果一一通过菜单查找,不仅耗时而且不够高效。熟练掌握快捷键可以极大地提高工作效率,让操作更加流畅。......
  • 胎神小游戏 - 自定义小游戏-改
    ```cpp#include<bits/stdc++.h>#include<windows.h>#include<stdio.h>#include<conio.h>#include<time.h>usingnamespacestd;boolBlack;voidColor(inta){if(Black==1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HAN......
  • P11228 [CSP-J 2024] 地图探险 题解
    模拟第一眼,可能有人回想起dfs.但因为起点终点,并且走的步数都告诉你了,所以直接模拟就行.注意起始点也算被走过,所以可以用一个标记数组,判断当前格子有没有被走过.代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;int......
  • [sa-token]StpUtil.getLoginId
    闲聊一般情况下,我们想用uid,可能需要前端将uid传过来,或者将token传来,然后我们进行识别。用了sa-token之后,可以使用StpUtil.getLoginId()方法获取当前会话的用户id代码展示例如以下代码:publicResponseResultgetMenu(){//获取用户角色Longuid=Long......
  • ORB-SLAM2源码学习:ORBextractor.cc:IC_Angle 利用灰度质心法求解关键点方向角
    ORB特征点:特征点是由关键点和描述子两部分组成,关键点是指特征点在图像中的位置,描述子是用来描述关键点周围的像素信息。ORB关键点是在FAST关键点的基础上进行改进给像素增加了一个主方向,称为OrientedFAST。描述子在BRIEF的基础上加入了上述的方向信息,称为SteeredBRIEF。FAS......
  • 基础IO -- 磁盘(1)
    目录1.引入2.看一看物理磁盘3.了解磁盘的存储结构1)如何找到一个指定位置的扇区4.对磁盘的存储进行逻辑抽象1.引入在之前说过的一些文件相关知识里,说的都是一些被打开的文件,在OS中存在非常多的文件,被打开的文件肯定是少量的!那么,没有被打开的文件,在哪里存放着呢??---->......
  • dp专题总结 - AtCoder DP Contest
    dp专题总结题单:this w......
  • 0-petalinux 问题记录-VFS: Cannot open root device fs or unknown-block(0,0): erro
    0-petalinux问题记录-VFS:Cannotopenrootdevicefsorunknown-block(0,0):error-6这个问题是对SD卡分区之后,ext4分区写入一个文件系统之后的现象,不能正常启动,通过log可以看出来是能找到sd卡的分区,提示需要增加引导,可是在镜像构建的时候UBoot那里面已经设置过了,参数没......