#

cgo

(1 articles)

narr +webkit2 web-based RSS 阅读nostr长文

## 什么是narr? 今天翻 fiatjaf 仓库 竟然发现了这个宝贝 narr和我最进做的 nostrbook.com有交集。 >? 交集在哪里呢? narr (not another rss reader) is a web-based RSS and Nostr long-form feed aggregator which can be used both as a desktop application and a personal self-hosted server. 1. long-form ,也就是30023. 2. desktop application 这两点足够对我有吸引力。 下载,运行 界面不错。 继续! ![图片](https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/62a4e0375a7a718581aea182dd196be7b3898718d11bcb0f2edd4fe4b11eef78.webp){.user-img} 不过这个是需要 自己通过浏览器浏览的。并没有独立打包成一个app。那么问题来了,不够阿。 顺着他的介绍,The app is a single binary with an embedded database (SQLite), it is based on yarr. ## yarr 我去看了看yarr 是可支持gui的,不过Linux支持的不够,我平时基本就是Linux。 怎么办? ## webkit 用webkit套一个吧。 ```go package main /* #cgo linux pkg-config: webkit2gtk-4.1 gtk+-3.0 #include <gtk/gtk.h> #include <webkit2/webkit2.h> static void initAndShow(GtkWidget **window, const char *url) { // 必须初始化 GTK gtk_init(NULL, NULL); *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(*window), "nostrbook.com"); gtk_window_set_default_size(GTK_WINDOW(*window), 1024, 600); // 创建 WebView GtkWidget *webview = webkit_web_view_new(); gtk_container_add(GTK_CONTAINER(*window), webview); webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview), url); // 显示窗口 gtk_widget_show_all(*window); } */ import "C" import ( "unsafe" ) func main() { var window *C.GtkWidget url := C.CString("http://127.0.0.1:7049") defer C.free(unsafe.Pointer(url)) // 调用 C 函数初始化 C.initAndShow(&window, url) // 进入 GTK 主循环 C.gtk_main() } ``` ## 什么是下一步呢? 继续研究吧,看看go + webkit 能不能打包 这个 http server ? 再看看 有没有可以编辑的 md ide 用simple 也可以的。 等等看吧。