~~# CodeSnippet

使用 Rofi 前端 + Java 守护进程管理代码片段,支持 Markdown 存储、跨平台同步和快速索引。

项目概述

  • 使用Rofi前端+Java守护进程的代码片段管理工具。代码片段以Markdown形式存储在指定目录中Java守护进程负责维护索引Rofi前端负责与守护进程进行交互并调用其他工具完成交互操作。
  • 该项目的设计目的在于,简化‘在线预览前端’的编写,可以通过其他工具查看实际存储的代码片段内容,同时又能够做到跨平台同步。
  • 因此,选择使用Markdown格式存储代码片段使用SQLite维护目录索引前端可以使用该项目列出的Rofi启动,也可以根据下文列出的请求格式自行编写前端。
  • 此外由于守护进程体量确实不大故未采用http服务器的形式而是选择使用普通的TCP交互即守护进程使用SocketServer,前端使用netcat

依赖(Rofi前端)

  • rofi
  • nc
  • nvim
    • 推荐装有 Markdown 相关插件
  • python3
  • python-rofi

工作流程

守护进程

  • 实际代码片段内容存储在对应 Markdown 文件中
  • 守护进程通过 SQLite 数据库维护目录索引,提供异常处理机制维护索引一致性
  • 使用 SocketServer 创建 TCP 服务器,可由前端连接
  • 添加片段时使用 AI 提取提供的代码片段的部分信息(标签、描述等),省却部分手动操作,也可以在添加完毕后手动进行编辑

前端

  • 默认使用 Rofi 作为启动器,已涵盖后端所需的所有操作类型
  • 借助 Python 完成复杂操作
  • 涉及到代码片段的编辑行为时,默认将通过调用 nvim 来编辑临时文件,编辑完毕后将发送请求至守护进程

快速开始

安装

  1. 下载RELEASE
  2. 下载所需库
    • pip install python-rofi
  3. 解压,目录结构如下:

    目录结构

使用

  1. 设置环境变量

    • CODE_SNIPPET_CONF
      • 配置文件目录
    • CODE_SNIPPET_DIR
      • 文件存储目录
    • CODE_SNIPPET_PORT
      • TCP服务器端口
    • CODE_SNIPPET_API_KEY
      • AI服务商提供的的 api_key
    • CODE_SNIPPET_BASE_URL
      • AI服务商提供的 base_url
    • CODE_SNIPPET_MODEL
      • 所用模型名称
    • CODE_SNIPPET_EDITOR (可选若未指定则使用nvim)
      • 所用的编辑器默认使用nvim
      • Typora 好像也可以编辑,只是会额外打开一个终端窗口
      • 其他编辑器未测试
    • CODE_SNIPPET_ROFI (可选,若未指定则使用默认 rofi)
      • 指定的 rofi 脚本,可以添加参数,比如: rofi -theme ~/.config/rofi/launchers/type-4/style-1.rasi
  2. 启动 Java 守护进程

    • java -jar daemon/CodeSnippetDaemon-1.0.jar
  3. 启动 rofi 脚本

    • python rofi/launcher.py

已将打开的编辑器窗口的class属性设置为code_snippet_editor,如果使用的是 Hyprland 等 wm可以据此对打开的编辑器窗口设置所需规则

该部分只针对一些常见的终端应用进行了设置,如有需要,可以自行编辑文件: file_helper(第205行开始)

说明

rofi 菜单说明

  • 搜索
    • 编辑
    • 编辑并复制
    • 删除
  • 添加
  • 编辑
  • 删除

接口说明

详见: 接口说明

模板说明

对文件做出修改、添加文件时,看到的文档内容、可填写的内容都以模板文档为基础。

详见: 模板说明

许可

本项目使用了修改版的 python-rofi原项目 python-rofiMIT License

对其源码进行了少量修改,以支持自定义 rofi 命令和样式。

本项目整体遵循 MIT 协议,详见 LICENSE 文件。

Description
No description provided
Readme MIT 422 KiB
Languages
Python 53.8%
Java 46.2%