V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
WorseIsBetter
V2EX  ›  分享创造

BookmarkFS - 借助文件系统,灵活管理浏览器书签

  •  
  •   WorseIsBetter · 165 天前 · 1615 次点击
    这是一个创建于 165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    最近做了个小工具 BookmarkFS ,其功能是将浏览器书签挂载到文件系统, 从而可以使用文件管理的工具和技巧来管理书签。

    目前支持在 GNU/Linux 和 FreeBSD 上运行,可以操作 Firefox 和 Chromium 的书签。 将来可能会加入对更多操作系统和浏览器的支持。

    项目主页:https://www.nongnu.org/bookmarkfs/

    使用示例

    # 挂载 Firefox 书签
    # - 将 <profile-name> 替换为实际的用户配置目录名称
    # - 为避免丢失数据,建议先备份
    # - 如果当前有 Firefox 实例在该用户配置下运行,需要先将其关闭
    mount.bookmarkfs -o backend=firefox,rw  \
            ~/.mozilla/firefox/<profile-name>/places.sqlite  \
            /mnt/firefox
    
    # 切换当前工作目录为 Firefox 「其他书签」目录
    cd /mnt/firefox/bookmarks/unfiled
    
    # 将当前目录下收藏的所有 V2EX 的帖子移动到名为「 V2EX 」的子目录中
    find . -type f  \
            -exec grep -l v2ex.com/t/ {} \;  \
            -exec mv {} ./v2ex \;
    
    # 删除「 Read Later 」目录下所有 URL 重复的书签(保留第一个)
    # - 这里用到的 fdupes 程序通常可以使用包管理器安装,
    #   也可以到 <https://github.com/adrianlopezroche/fdupes> 下载。
    fdupes -dN ./Read\ Later
    
    # 挂载 Chromium 书签(注意事项同 Firefox )
    mount.bookmarkfs -o backend=chromium,rw  \
            ~/.config/chromium/<profile-name>/Bookmarks  \
            /mnt/chromium
    
    # 将 Firefox 书签栏中名为「 work 」的目录全量复制到 Chromium 的书签栏
    cp -R /mnt/firefox/bookmarks/toolbar/work  \
            /mnt/chromium/bookmarks/Bookmarks\ bar
    
    # 解除挂载
    umount /mnt/chromium
    umount /mnt/firefox
    

    当然,管理书签的方式不仅限于 shell 脚本和命令行工具的组合。 对于逐一手动处理书签的场景,可以尝试 TUI 文件管理器,比如 ranger/nnn/yazi 等, 搭配上合适的快捷键和插件,往往更加高效。

    此外,大部分通用编程语言的标准库都提供了操作文件系统的功能。 如果有复杂或者特殊的书签管理需求,可以自行编写程序实现。 同理,也可以接入 MCP ,让 LLM 辅助管理书签(不过需要注意隐私问题)。

    有关更多 BookmarkFS 的使用说明,详见用户手册。

    闲谈

    其实本来打算等项目进入一个更稳定的阶段再来发帖。 不过由于近期一不留神上榜了 sourcehut 的 featured projects ,一时心血来潮, 那就趁还没被其他新项目顶下首页,顺势发布第一个 alpha release , 然后稍作宣传。

    说来有点不好意思,我虽然接触编程多年,但至今没一个能拿得出手的作品。 个人主页上挂着的几个所谓「个人项目」,也只不过是一些玩具、练手、自用的小玩意, 觉得其他人可能感兴趣,就随手分享出来。

    BookmarkFS 本质上没有离开这个范畴,但同时它也是我目前投入精力最多的个人项目之一, 也具有一定的通用性,所以还是希望它在将来能成为一个成熟的正式项目。

    目前初版的需求(我自己会用到的功能)已经实现得差不多,只剩下一些细枝末节。 接下来相当长的一段时间里,工作的重心会放在补充测试用例、完善用户手册上。 至于新需求,大概会综合考虑社区呼声(假如存在)和个人喜好来做吧。

    作为业余开发者,项目中难免会有很多不专业的地方。欢迎大佬在技术上给出建议, 助力项目变得更好。

    3 条回复    2025-04-03 20:43:41 +08:00
    Pipecraft
        1
    Pipecraft  
       165 天前
    很酷的想法。想起之前看到的一篇把浏览器书签和文件系统结合的文章。
    https://afewthingz.com/browserbookmark
    WorseIsBetter
        2
    WorseIsBetter  
    OP
       165 天前
    @Pipecraft #1

    见过不少人用这种朴素的方式来做浏览器书签。

    比如我学生时代的一位舍友,他的浏览器书签存放在一堆 HTML 文件里,通过 meta http-equiv="refresh" 跳转到对应 URL 。起一个 nginx 就可以在浏览器里访问了。

    问他为什么这么搞,他说这样既能直接在浏览器里访问,也能够方便地与个人笔记进行关联(他自己写了个 Emacs 插件配合 org-mode 来做笔记)。而且用这种方式存储,搜索和管理起来也比在浏览器中方便。

    其实我做这个工具,某种程度上也受到了这些用户的启发(虽然我自己的需求和他们不太一样)。

    ----

    题外话,早期的某些浏览器,比如 IE ,也是用这种方式原生存储书签的,一个书签一个 .url 文件,同时用本地文件系统的目录结构来组织书签的目录结构。
    Pipecraft
        3
    Pipecraft  
       165 天前
    @WorseIsBetter #2 你舍友的方法也朴素且优雅。关键自己方便就是最好的。

    相比浏览器自带的书签就太难用了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5506 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:27 · PVG 09:27 · LAX 18:27 · JFK 21:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.