Fedora 43 + Niri 上玩转 Satty

Fedora 43 + Niri 上玩转 Satty:截图、编辑,一气呵成!

Satty 真是个截图神器!它不仅能帮你交互式选择截图区域,还能直接编辑,简直太方便了。不过呢,你可能会发现,在 Fedora 43 的官方软件仓库里,它并没有“安家”。别担心!这篇教程就带你一步步手动安装 Satty 的二进制文件,并搞定在 Niri (Wayland) 环境下运行它所需的各种依赖。看完保证你也能轻松上手!

准备工作

  • Fedora 43 系统(这肯定少不了)
  • Niri (Wayland) 合成器(或者其他 Wayland 桌面环境也行)
  • 一点点终端操作基础(别怕,很简单!)

Satty 安装教程(跟着做准没错!)

第一步:下载 Satty 二进制文件

既然 Satty 官方仓库里没有,那我们就得自己动手,从它的GitHub 发布页面直接下载预编译好的二进制文件啦。

找到最新的 Release 版本,然后下载那个名字叫 satty-x86_64-unknown-linux-gnu.tar.gz 的文件就行了。

第二步:解压并“安放”好它

下载完之后,打开你的终端,cd 到下载目录(或者你存到哪里就去哪里),然后把压缩包解压出来。接着,我们把 satty 这个可执行文件移动到系统 PATH 环境变量包含的目录里,比如 /usr/local/bin/ 就很不错,这样你以后在任何地方都能直接敲命令运行它了。

# 导航到你的下载目录
cd ~/Downloads

# 解压 tar.gz 文件
tar -xzf satty-*.tar.gz

# 将可执行文件移动到 /usr/local/bin/
sudo mv satty /usr/local/bin/

第三步:检查并安装必要依赖

想要让 Satty 在 Niri 这种 Wayland 环境下顺畅运行,它通常需要“搭档”两个好帮手来完成屏幕选择和截图:slurpgrim。好消息是,这两个工具通常在 Fedora 的官方仓库里就能找到!

  • slurp: 负责让你用鼠标选定屏幕区域,非常直观。
  • grim: 专门负责把选中的屏幕像素“抓”下来,也就是真正实现截图的工具。

使用 dnf 命令安装这些依赖:

sudo dnf install slurp grim

Satty 怎么用?看这里!

sattyslurpgrim 都安装好之后,你就可以开心地用 Satty 来满足你的截图需求了!

一个最典型的用法,就是像下面这样:

satty --output-file ~/Pictures/screenshot-$(date +%Y%m%d%H%M%S).png

这条命令会帮你做这些事:

  1. 启动 slurp,让你能自由选择屏幕上的任意区域。
  2. 接着用 grim 把你选中的区域拍下来。
  3. 然后把这张图直接用 Satty 打开,方便你马上进行编辑。
  4. 最后,它会把编辑好的图片保存到你的 Pictures 目录下,文件名嘛,会带上当前的日期时间,方便你查找。

怎么样?有了 Satty,你的 Fedora 43 和 Niri 桌面环境,是不是瞬间多了一个功能强大的截图加编辑利器呢!

截图脚本

这边作者找到了一个脚本用于在niri中使用快捷键进行截图编辑:

~/.config/niri/scripts
 ○ cat screenshot.sh            
#!/usr/bin/env bash

# 设定触发新逻辑的目标版本号
# 注意:官方 Niri 目前版本是 0.1.x。请确保你的 niri -V 输出格式符合你的预期。
TARGET_VERSION="25.08"

# 获取当前 niri 版本 (例如: "niri 0.1.10" -> "0.1.10")
CURRENT_VERSION=$(niri -V | awk '{print $2}')

# 版本比较函数 (使用 sort -V 处理版本号排序)
# 如果 $1 (当前) >= $2 (目标),返回 true (0)
version_ge() {
    [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" != "$1" ] || [ "$1" = "$2" ]
}

# === 分支逻辑 ===

if version_ge "$CURRENT_VERSION" "$TARGET_VERSION"; then
    # [逻辑 A] 新版本 Niri: 基于事件流 (Event Stream)
    # 优点: 直接获取文件路径,精准,无需轮询,无剪贴板冲突
    
    # 1. 在后台启动截图交互,不阻塞脚本继续执行
    niri msg action screenshot &

    # 2. 监听事件流,阻塞等待直到捕获到 "Screenshot captured" 这一行
    # grep -m 1: 匹配到一行后立即停止监听,脚本继续向下
    log_output=$(niri msg event-stream | grep -m 1 --line-buffered "Screenshot captured")

    # 3. 提取路径字符串 (删除 "saved to " 及其之前的所有内容)
    # 输出示例: ... saved to /home/user/Pic/1.png -> /home/user/Pic/1.png
    file_path="${log_output##*saved to }"

    # 4. 传递给 satty 编辑
    # 检查路径是否非空(防止用户按 Esc 取消导致 grep 没抓到东西)
    if [ -n "$file_path" ]; then
        satty --filename "$file_path"
    fi

else
# [逻辑 B] 旧版本/回退: 基于剪贴板哈希 (Clipboard Polling)
    
    # 2. 记录基准哈希和开始时间
    CLIP_BASE=$(wl-paste | sha1sum)
    START_TIME=$SECONDS
    TIMEOUT_SEC=3 # 设置超时时间 (秒)

    # 3. 启动截图
    niri msg action screenshot

    # 4. 循环检测: 只要剪贴板哈希没变,就一直等待
    while [ "$(wl-paste | sha1sum)" = "$CLIP_BASE" ]; do
        # 超时判断: 如果耗时超过阈值,静默退出脚本 (防止死循环)
        if (( SECONDS - START_TIME > TIMEOUT_SEC )); then
            exit 0
        fi
        sleep 0.5
    done

    # 5. 剪贴板变化后,管道传递给 satty
    wl-paste | satty -f -
fi
fi

在niri的配置文件上配置好它:

Mod+Shift+S { spawn "~/.config/niri/scripts/screenshot.sh"; }

这样使用win+shift+s快捷键就可以进行截图编辑了。

效果预览:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲鸭嘟嘟可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值