V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HanningWu
V2EX  ›  macOS

请教一下 macOS 中 newsboat 该怎么优雅地显示图片?

  •  
  •   HanningWu · 2022-07-19 19:01:48 +08:00 · 887 次点击
    这是一个创建于 663 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境

    • macOS 版本:12.4
    • 终端模拟器:kitty by Kovid Goyal

    背景信息

    目前 macOS 下的 w3m 缺乏 w3mimgdisplay 命令,也缺乏 ueberzug ,所以终端下的图片显示只能依赖终端模拟器本身的图形协议来完成(常见的终端 kitty 和 iTerm2 都自带图形协议)。Newsboat 本身是一个终端下的 RSS 阅读器,主要用于文字阅读;然而我订阅的 RSS 不可避免需要图片预览,比如 xkcd 就是一个纯图片的 feed…

    楼主目前思路

    先是看到有人搞出了一套能够实现图片预览的 pager,可惜对方使用了 w3m ,所以没法直接拿来用。我依样画葫芦从 kitty 自带的图片预览 icat 出发

    1. 先抓取文章中的图片链接
    2. 下载到本地的 /tmp 目录下
    3. kitty +kitten icat在终端中显示图片
    4. 写成代码,然后在 newsboat 里配置成一个 pager
    #!/usr/bin/env bash
    
    function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
    
    if grep -qE "xkcd" "${1}"; then
        # 下载 xkcd 源中的图片,然后用 icat 预览
        image=$(grep -E -o "https?://[a-zA-Z0-9./?=_%:-]*.(jpg|png|JPG|PNG)" < "${1}" | tail -1)
        cd /private/tmp/
        imagepath="${image/https:\///private/tmp}" 
        imagepath=$(urldecode "$imagepath")  
        if [[ ! -f "$imagepath" ]]; then    
            # echo "downloading..."
            nohup wget -q -m "$image" &>/dev/null
        fi
        kitty +kitten icat --hold "${imagepath/jpg/png}"
    else
        # 其他 feed 改成 less
        less "${1}"
    fi
    

    这个方法目前的问题是,对于纯文本的条目只能改用less做 pager ,无法用 newsboat 自带的 pager 了。会多几次按键操作,阅读效率降低。不知道有没有朋友在 macOS 下也折腾过 newsboat ,请支支招。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3610 人在线   最高记录 6547   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:57 · PVG 12:57 · LAX 21:57 · JFK 00:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.