用 Zig 编写的一个 GTK4 SSH-askpass

Hacker News Top 工具

摘要

一位开发者用 Zig 编写了一个轻量级的基于 GTK4 的 ssh-askpass 工具,以避免在其加固的 Gentoo 系统上引入 X11 或 KDE 依赖,并使用了手写的 GTK4 绑定。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/31 16:59

# 用 Zig 编写的 GTK4 ssh-askpass 来源:https://xn--gckvb8fzb.com/a-gtk4-ssh-askpass-in-zig/ Gentoo 软件树中的每个 ssh-askpass 都会引入 X11 或一整套 KDE 依赖,所以我用 Zig 0.16 和 GTK4 自己写了一个,并手工编写绑定,让 X 不参与构建。 我在笔记本电脑上运行 hardened Gentoo(https://xn--gckvb8fzb.com/hardened-gentoo-with-full-disk-encryption-on-the-star-labs-starbook-mk-vi/),大多数情况下我根本不会碰 ssh-askpass,因为对于大多数系统我都使用 `-sk` 密钥。不过有一种情况我确实需要它:当程序想要读取普通 ED25519 密钥的 SSH 口令短语,却没有终端可供读取时。常见场景是 `go get`,或者泛泛而言的 go 工具链,在没有 TTY 的构建过程中通过 SSH 获取私有模块。OpenSSH 无法在管道上提示输入,所以它会运行 `SSH_ASKPASS` 指向的任何程序,把口令短语提示放到窗口中。 多年来我都没有安装任何相关程序,遇到这些场景只能绕道而行。主要原因是 Gentoo 的 Portage 所提供的选择: ``` ~ emerge -s ssh-askpass [ Results for search key : ssh-askpass ] Searching... * kde-plasma/ksshaskpass Latest version available: 6.6.6 Latest version installed: [ Not Installed ] Size of files: 32 KiB Homepage: https://kde.org/plasma-desktop https://invent.kde.org/plasma/ksshaskpass Description: Implementation of ssh-askpass with KDE Wallet integration License: GPL-2 * lxqt-base/lxqt-openssh-askpass Latest version available: 2.4.0 Latest version installed: [ Not Installed ] Size of files: 19 KiB Homepage: https://lxqt-project.org/ https://github.com/lxqt/lxqt-openssh-askpass/ Description: LXQt OpenSSH user password prompt tool License: LGPL-2.1 LGPL-2.1+ * net-misc/gnome-ssh-askpass Latest version available: 10.0

相似文章

我们重写了 Ghostty GTK 应用程序

Mitchell Hashimoto

Mitchell Hashimoto 详细介绍了 Ghostty 的 GTK 应用程序重写,以完全拥抱来自 Zig 的 GObject 类型系统,从而提高了稳定性、功能和内存安全性,并通过 Valgrind 验证。

Gooey:面向 Zig 的 GPU 加速 UI 框架

Hacker News Top

Gooey 是一个面向 Zig 的 GPU 加速 UI 框架,通过 Metal、Vulkan/Wayland 和 WebGPU/WASM 支持 macOS、Linux 和浏览器。它提供声明式 UI、动画、主题、无障碍和零外部依赖。

从Rust转向Zig的感受

Lobsters Hottest

一位经验丰富的Rust开发者分享了通过重新实现JSONPath工具来学习Zig的旅程,重点介绍了IDE支持和代码组织方面的差异。