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.
- long-form ,也就是30023.
- desktop application
这两点足够对我有吸引力。
下载,运行 界面不错。 继续!
{.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套一个吧。
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 也可以的。
等等看吧。
No comments yet.