乐趣区

关于terminal:Mac-Osx终端显示图片

如果喜爱应用终端利用的敌人, 必定存在一个需要, 就是在终端界面上显示图片. 可能有时候须要显示一个本地磁盘的图片, 也有可能在应用 w3m 时须要显示网页的图片. 当初咱们就基于这两个点, 如何实现在 osx 进行显示图片.

终端显示本地磁盘图片

viu 命令行客户端

viu 是一个很好用的终端图片显示工具, 兼容多种终端协定, 比方 iterm2kitty , 在这些终端下能够显示出全真色的图片. 对于 tmux 来说, 只能反对基于 ASCII 的 half block 图片 (基于字符成果不太好).

osx 下装置:

brew install viu

安装时间可能会比拟久, 因为 viu 工具是基于 rust 语言开发, 还须要装置 rust 相干的依赖库. 装置实现当前, 能够应用如下命令显示图片.


# 显示单张图片
viu xxx.png 何

# 以设定的宽显示图片
viu -w 80 xxx.png

须要留神的是, viu 间接在 iterm2kitty 的命令行终端下, 显示成果比拟好, 因为应用了终端的图片协定, 但在 tmux 下会 fallbackhalf block 的形式显示.

kitty 下的 icat

如果你是应用 kitty 的终端, 能够间接应用终端自身的图片命令行 icat(不反对 iterm 或 tmux). 因为 icat 依赖 imagemagick 库, 依赖安装时间也会比拟久. 装置命令如下:

brew install imagemagick
  

装置实现后, 就能够应用 kitty +kitten icat 命令显示图片了, 因为命令比拟长, 能够本人的 shell 环境中 alias 一下别名.

# 如果 kitty 命令没有退出到 path 环境变量中, 须要应用理论的 kitty 命令的门路
alias icat="/Applications/kitty.app/Contents/MacOS/kitty +kitten icat"

W3M 终端浏览器显示图片

w3m 是一款传统的基于终端的文本浏览器, 能够用于终端下简略的网页浏览. 如果应用在 osx 下应用 brew 进行装置的 w3m 版本, 默认会不反对图片的浏览, 并且装置的版本也特地老. 所以咱们要基于最新的源码进行编译.

基于源码编译我也喜爱应用 brew 进行治理, 这里介绍一下如何应用 brew 进行 w3m 的源码编译.

  1. 进入到本地 brew-core 缓存目录.

    cd $(brew --repository homebrew/homebrew-core)  
  2. 复制 w3m.rb 文件到集体下载目录.

    cp Formula/w3m.rb ~/Downloads/
  3. 批改 w3m.rb 文件, 批改基于最新的源码编译, 以及开启图片编译选项. 最终批改为如下:

    
    class W3m < Formula
      desc "Pager/text based browser"
      homepage "https://w3m.sourceforge.io/"
      revision 7
      head "https://github.com/tats/w3m.git", branch: "master"
    
      stable do
        url "file:///Users/XXXX/Downloads/w3m_0.5.3.orig.tar.gz"
        sha256 "e2bcc6027121ae2bcb079f14b2d348c9206440f87a52c6d54872824e97cb87af"
    
        # Upstream is effectively Debian https://github.com/tats/w3m at this point.
        # The patches fix a pile of CVEs
        # patch do
        #   url "https://salsa.debian.org/debian/w3m/-/raw/debian/0.5.3-38/debian/patches/010_upstream.patch"
        #   sha256 "39e80b36bc5213d15a3ef015ce8df87f7fab5f157e784c7f06dc3936f28d11bc"
        # end
    
        # patch do
        #   url "https://salsa.debian.org/debian/w3m/-/raw/debian/0.5.3-38/debian/patches/020_debian.patch"
        #   sha256 "08bd013064dc544dc2e70599ea1c9e90f18998bc207dd8053188417fbdaeefb2"
        # end
      end
    
      livecheck do
        url "https://deb.debian.org/debian/pool/main/w/w3m/"
        regex(/href=.*?w3m[._-]v?(\d+(?:\.\d+)+)\.orig\.t/i)
      end
    
      bottle do
        sha256 arm64_monterey: "471292d0ec7637d96304cbb61301909681057dfdf78172ca13f94c2a6f6fc173"
        sha256 arm64_big_sur:  "ca603325cc6d0904d5d709f6e9407b26fd22e3eeb3984d38e11c21d8f45e7b3a"
        sha256 monterey:       "5e8f410d2f2942a76602d88a71eee516e43d21164e0e1e41855827ae6f226fa0"
        sha256 big_sur:        "9865fb7a43e8732bb7d309502c3de3410d05aeb093ba8916462b5aab36563a5a"
        sha256 catalina:       "5b752461983a608c684bae9efa13a0a5e37a456def0b368c8b0706b35fd480a3"
        sha256 mojave:         "a77f9a7ceee4dbb2a7288ecfad9c903c489ce4a60ff10056cd735433986df901"
        sha256 x86_64_linux:   "425cc2d1f5e1c4dff0f4f70c916322e55e95d50b18a003c9ff065cb982fc90e9"
      end
    
      depends_on "pkg-config" => :build
      depends_on "bdw-gc"
      depends_on "[email protected]"
      depends_on "imlib2"
    
      uses_from_macos "ncurses"
      uses_from_macos "zlib"
    
      on_linux do
        depends_on "gettext"
        depends_on "libbsd"
      end
    
      def install
        # Work around configure issues with Xcode 12
        ENV.append "CFLAGS", "-Wno-implicit-function-declaration"
    
        system "./configure", "--prefix=#{prefix}",
                              "--with-termlib=ncurses",
                              "--enable-image",
                              "--with-imagelib=imlib2",
                              "--with-ssl=#{Formula["[email protected]"].opt_prefix}"
        system "make", "install"
      end
    
      test do
        assert_match "DuckDuckGo", shell_output("#{bin}/w3m -dump https://duckduckgo.com")
      end
    end

    留神 :

    1. url 的门路变更为最新从 github 下载下来的最新 zip 包, 从新打包为 tar.gz 文件.
      下载地址: https://github.com/tats/w3m/archive/refs/heads/master.zip
    2. sha256 须要变更为 tar.gz 对应的文件摘要. 能够应用 shasum -a 256 命令.
    3. 正文掉 patch 相干的配置.
    4. 减少 --enable-image--with-imagelib=imlib2. 前面这个库貌似在 mac 下也没有必要.
  4. 应用 brew 装置相干依赖

    brew deps w3m.rb  |  xargs brew install
  5. 应用 brew 命令进行源码生新装置 (如果之前没有装置过, 应用 install 替换 reinstall).

    brew reinstall -s -v -d w3m.rb
  6. 在终端应用 w3m 显示图片. 能够抉择基于 kitty, iterm, sixel 协定.

    # 基于 sixel(仅 iterm2 终端反对)
    w3m -o inline_img_protocol=2 www.baidu.com
    # 基于 iterm2 终端
    w3m -o inline_img_protocol=3 www.baidu.com
    # 基于 kitty 终端
    w3m -o inline_img_protocol=4 www.baidu.com
退出移动版