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

这两点足够对我有吸引力。

下载,运行 界面不错。 继续! 图片{.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.