博客 / 詳情

返回

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 "openssl@1.1"
      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["openssl@1.1"].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
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.