#journal #tui #ui #sqlite #terminal-app #json-file #text-editors

程序+库 tui-journal

TUI 应用允许在终端内编写和管理日记/笔记,具有不同的本地后端

22 个版本 (8 个破坏性版本)

0.9.1 2024 年 7 月 20 日
0.8.4 2024 年 5 月 12 日
0.8.2 2024 年 2 月 1 日
0.6.0 2023 年 12 月 16 日
0.3.0 2023 年 7 月 13 日

#1209 in 命令行实用工具

Download history 18/week @ 2024-04-21 183/week @ 2024-04-28 5/week @ 2024-05-05 196/week @ 2024-05-12 17/week @ 2024-05-19 159/week @ 2024-05-26 30/week @ 2024-06-02 15/week @ 2024-06-09 6/week @ 2024-06-16 5/week @ 2024-06-30 3/week @ 2024-07-07 82/week @ 2024-07-14 68/week @ 2024-07-21 7/week @ 2024-07-28

每月 157 次下载

MIT 许可证

2.5MB
8K SLoC

TUI-Journal

TUI-Journal 是一个用 Rust 编写的基于终端的应用程序,允许您在终端内编写和管理您的日记/笔记。它提供了一个简单而高效的界面来创建和组织您的想法、观点和反思。TUI-Journal 支持两种不同的本地后端:JSON 格式的纯文本后端和使用 SQLite 的数据库后端。

演示

模糊搜索器

目录

功能

  • 从终端编写和管理日记/笔记条目。
  • 将条目存储为使用 JSON 格式的纯文本文件或 SQLite 数据库。
  • 直观、响应迅速且用户友好的基于文本的用户界面 (TUI)。
  • 轻松创建、编辑和删除条目。
  • 使用内置编辑器或从应用程序内部使用您喜欢的终端文本编辑器编辑日记内容。
  • 向日记添加自定义标签并在内置过滤器中使用它们。
  • 模糊搜索器:以闪电般的速度找到您想要的日记。
  • 在内置过滤器中搜索日记标题和内容。
  • 根据日期、优先级和标题对日记进行排序。
  • 通过多选模式一次控制多个日记
  • 快捷键结合了 VIM 和 Emacs 的动作(VIM 用于导航,Emacs 用于编辑模式中的文本编辑)。
  • 利用编辑器的可视化模式进行 VIM 风格的文本选择、复制和删除。
  • 在不同后端文件之间导出和导入日记。
  • 将当前日记的内容导出到预定义的导出路径或当前目录。
  • 使用剪切、复制和粘贴在内置编辑器和系统剪贴板之间传输文本。
  • 可选地在内置编辑器和操作系统之间同步剪贴板,支持vim和emacs快捷键。
  • 应用状态中的排序和全屏首选项将被保留。
  • 在应用内查看快捷键。
  • 跨平台兼容性(Windows、macOS、Linux、NetBSD)。

路线图

后端

  • 纯文本JSON后端。
  • 使用SQLite的数据库后端。
  • 具有应用内客户端的RESTful后端服务器。

应用程序

  • 在应用内使用外部文本编辑器编辑日志内容。
  • 过滤和搜索功能。
  • 添加鼠标支持。
  • 支持Markdown高亮和自动换行的日志预览模式。
  • 通过使用应用事件改进应用输入和渲染周期,以支持应用内的真实并发。
  • 自定义主题和快捷键。

安装

发行页面获取您平台的最新的预构建二进制文件,或使用可用的包管理器。

Arch Linux

在Arch Linux上,您可以使用pacman安装TUI-Journal。

pacman -S tui-journal

Alpine Linux

TUI-Journal适用于Alpine Edge。启用测试仓库后,可以通过apk安装。

apk add tui-journal

NetBSD

在NetBSD上,官方仓库提供了使用默认功能编译的预编译二进制文件。要安装,只需运行

pkgin install tui-journal

通过 Cargo 构建 & 安装

确保您的系统已安装Rust

所需的最小Rust版本是1.75.0

Linux依赖

请确保您的系统已安装OpenSSL开发包。

  • Ubuntu/Debian
    sudo apt install -y libssl-dev 
    
  • Fedora
    sudo dnf install openssl-devel
    

使用默认功能安装

要使用默认功能(SQLite和JSON)安装TUI-Journal,您可以使用cargo直接从crates.io安装。

cargo install tui-journal --locked

安装夜间版本

要使用当前的夜间版本,您可以直接从GitHub仓库安装。

cargo install --git https://github.com/ammarabouzor/tui-journal

使用特定功能安装

您可以通过自定义cargo安装命令选择启用或禁用特定功能来安装TUI-Journal。要仅安装具有JSON后端功能的TUI-Journal,请使用以下命令

cargo install tui-journal --locked --no-default-features --features json

要仅安装具有SQLite后端功能的TUI-Journal,请使用以下命令

cargo install tui-journal --locked --no-default-features --features sqlite

使用方法

安装完成后,您可以在终端中通过输入tjournal来运行TUI-Journal。

$ tjournal

要查看可用的参数和命令,可以使用--help-h标志。

$ tjournal --help

Usage: tjournal [OPTIONS] [COMMAND]

Commands:
  print-config  Print the current settings including the paths for the backend files [aliases: pc]
  import-journals  Import journals from the given transfer JSON file to the current back-end file [aliases: imj]
  assign-priority  Assign priority for all the entires with empty priority field [aliases: ap]
  help          Print this message or the help of the given subcommand(s)

Options:
  -j, --json-file-path <FILE PATH>    Sets the entries Json file path and starts using it
  -s, --sqlite-file-path <FILE PATH>  Sets the entries sqlite file path and starts using it
  -b, --backend-type <BACKEND_TYPE>   Sets the backend type and starts using it [possible values: json, sqlite]
  -w, --write-config                  write the current settings to config file (this will rewrite the whole config file)
  -v, --verbose...                    Increases logging verbosity each use for up to 3 times
  -l, --log <FILE PATH>               Specifies a file to use for logging
                                      (default file: <cache_dir>/tui-journal/tui-journal.log)
  -h, --help                          Print help
  -V, --version                       Print version

配置

TUI-Journal的配置可以在TUI-Journal目录中配置文件夹内的config.toml文件中找到。

以下是config.toml文件中设置的一个示例

backend_type = "Sqlite"   # Available options: Json, Sqlite. Default value: Sqlite.

default_journal_priority = 3  # Sets the suggested priority while creating a new journal

scroll_per_page = 5  # Sets how many journals will be scrolled when using page up/down commands

sync_os_clipboard = false  # Syncs editor clipboard actions with operating system clipboard 

[export]
default_path = "<Absolute_path_to_export_directory>"   # Optional default path to export multiple journals or a single journal's content. Falls back to the current directory if not specified.
show_confirmation = true   # Show confirmation after successful export.
scroll_per_page = 5    # Sets how many journals will be scrolled using Page-Up and Page-Down command

[external_editor]
# Set the external terminal editor to use from within the app.
# If the value isn't set the app will try to retrieve the editor from git global configurations then It'll try with the environment variables VISUAL, EDITOR then it'll fallback to vi.  
command = "nvim"
# Enabling this save the journal content automatically after closing the external editor
auto_save = false

# Note: external_editor can still be configured in one line to set the command. In that case, the default values for the other fields will be used
# external_editor = "nvim"

[json_backend]
file_path = "<Documents-folder>/tui-journal/entries.json"

[sqlite_backend]
file_path = "<Documents-folder>/tui-journal/entries.db"

文档

有关TUI Journal应用的详细信息,包括使用说明、快捷键和配置细节,请参阅Wiki

致谢

TUI-Journal的实现离不开以下开源crate

  • tui-rs 和其复兴版本 ratatui:TUI-Journal 使用了 tui-rsratatui 库,这些库为在 Rust 中构建终端用户界面提供了一个框架。它们提供了一系列组件和实用工具,用于创建交互式和响应式的 TUI 应用程序。

  • tui-texteditor:TUI-Journal 利用 tui-texteditor 库,该库为基于终端的应用程序提供了一个专门设计的文本编辑器小部件。它提供文本操作、光标移动和 TUI 环境内的滚动等功能。

  • sqlx:TUI-Journal 从 sqlx 库中获益,这是一个用于与数据库交互的 Rust 库。它使得 TUI-Journal 能够以可靠和高效的方式存储日志条目和笔记。

这些库极大地促进了 TUI-Journal 的发展,该项目对这些出色的开源库的维护者和贡献者表示感谢。

贡献

作为 TUI-Journal 的作者,同时也是开源社区的新手,我非常欢迎经验丰富的开发者的贡献。您的贡献可以帮助增强 TUI-Journal 的功能、可用性和整体质量。

如果您有任何想法、错误报告或功能请求,请毫不犹豫地在该 TUI-Journal 上打开问题。您的反馈和意见对改进应用程序至关重要。

如果您想贡献代码、文档或其他形式的协助,我愿意进行合作。请通过 GitHub 仓库与我联系,让我们讨论您如何为 TUI-Journal 做贡献。

感谢您考虑为 TUI-Journal 做贡献。您的支持非常宝贵!

许可证

MIT

依赖项

~22–41MB
~738K SLoC