#任务管理器 #tui #txt #应用程序 #ratatui #可定制 #待办事项列表

程序+库 todotxt-tui

Todo.txt TUI 是一个高度可定制的基于终端的应用程序,用于管理待办任务。它遵循 todo.txt 格式,并提供广泛的配置选项以满足您的需求。

1 个不稳定版本

0.1.0 2024 年 6 月 1 日

#2697 in 命令行工具

MIT 许可证

235KB
5.5K SLoC

Todo.txt TUI

Todo.txt TUI 是一个高度可定制的基于终端的应用程序,用于管理您的待办任务。它遵循 todo.txt 格式,并提供广泛的配置选项以满足您的需求。请注意,该应用程序可能存在一些虫虫,因为它仍在开发中,因此您的反馈和错误报告将非常受欢迎。

Preview.webm

安装

请注意,此 Todo.txt TUI 应用程序旨在个人使用,并未在 Rust 的 docs.rs 或 crates.io 上发布。因此,必须手动安装。

  1. 克隆仓库或下载最新版本。
  2. 使用 Rust 的包管理器 Cargo 构建应用程序。
cargo build --release

将可执行文件从目标目录复制到系统 PATH 包含的目录。

cp target/release/todo-tui /usr/local/bin/

基本用法

Todo.txt TUI 为管理任务提供了一种简单且可定制的界面。以下是一些基本用法和快捷键,您可以在配置文件中根据个人喜好进行配置

  • j: 在列表中向下移动。
  • k: 在列表中向上移动。
  • g: 跳转到列表的第一个项目。
  • G: 跳转到列表的最后一个项目。
  • Enter: 选择一个项目。
  • U: 将选定的项目向上移动。
  • D: 将选定的项目向下移动。
  • x: 删除选定的项目。
  • d: 在待办事项和已完成列表之间移动任务。
  • I: 输入一个新的任务。
  • E: 编辑选定的项目。
  • J: 移动到当前小部件下的小部件。
  • K: 移动到当前小部件上方的部件。
  • H: 移动到当前小部件左侧的部件。
  • L: 移动到当前小部件右侧的部件。
  • q:退出应用程序。

配置

在Todo.txt TUI中,您可以自定义各种设置以根据您的喜好调整应用程序。Todo.txt TUI使用位于~/.config/todo-tui.toml的TOML配置文件进行自定义。以下是部分关键设置的概述

颜色设置

在Todo.txt TUI中,您可以自定义各种元素的颜色和文本样式。您可以选择设置前景色(fg)和背景色(bg),并应用文本修饰符以进行样式设置。颜色可以使用颜色名称、RGB值或终端索引来定义。

您可以对Todo.txt TUI中的文本应用文本修饰符以更改文本样式。可用的文本修饰符包括

  • Bold:将粗体样式应用到文本。
  • Italic:将斜体样式应用到文本。
  • Underlined:将下划线样式应用到文本。

以下是一个配置Todo.txt TUI应用程序中项目todo-tui的自定义颜色和文本修饰符的示例

[custom_category_style."+todo-tui"]
fg = [255, 0, 0]  # Set foreground color to red using RGB values
bg = "Black"      # Set background color to black
modifiers = "Italic"  # Apply italic styling

排序选项

您可以使用pending_sortdone_sort选项来指定如何对任务进行排序。可用的排序选项有

  • None:不进行特定排序;任务按添加顺序显示。
  • Reverse:反转任务的顺序。
  • Priority:按优先级排序任务。
  • Alphanumeric:按字母数字顺序排序任务。
  • AlphanumericReverse:按反向字母数字顺序排序任务。

预览格式

使用preview_format设置,您可以定义任务预览的格式。您可以使用括号中的占位符({})来显示任务信息。以下是可用的占位符及其对应值

  • {n}:待办事项数量。
  • {N}:已完成任务数量。
  • {}:任务主题。
  • {p}:任务优先级。
  • {c}:任务创建日期。
  • {f}:任务完成日期。
  • {F}:任务完成状态(true或false)。
  • {t}:任务阈值日期。
  • {d}:任务截止日期。
  • {C}:任务上下文。
  • {P}:任务项目。
  • {H}:任务标签。

自定义布局

布局设置允许您使用区块 [] 为应用程序定义自定义布局。您可以选择将区块的方向设置为 Direction: 竖直Direction: 水平,并指定每个区块的大小为百分比或值。在这些区块内,您可以包含各种小部件,例如

  • List:主要任务列表。
  • Preview:任务预览部分。
  • Done:已完成任务列表。
  • Projects:项目列表。
  • Contexts:情境列表。
  • Hashtags:标签列表。

以下是一个自定义布局配置示例

[
    Direction: Horizontal,
    Size: 50%,
    [
        List: 50%,
        Preview,
    ],
    [ Direction: Vertical,
      Done,
      [
        Contexts,
        Projects,
      ],
    ],
]

此示例创建了一个水平分割的布局,其中列表占用50%的宽度,预览占用剩余空间。在右侧,有一个垂直分割,包括已完成任务、情境和项目列表。

请随意调整这些设置,以创建一个符合您工作流程和偏好的 Todo.txt TUI 界面。

示例配置文件

具有默认值的配置文件。每个设置都有描述。

# The active color for selected items
# You can set the color by name ("Blue"), by RGB values ([255, 0, 0]), or by index in the terminal (fg.Index = 5).
active_color = "Red"

# The initial widget to be displayed
init_widget = "List"

# The window title
window_title = "Todo.txt tui"

# The path to your todo.txt file
todo_path = "/home/jirka/todo.txt"

# The path to your archive.txt file
# archive_path =

# Wrap long lines in the preview
wrap_preview = true

# Log file path
log_file = "log.log"

# Log format (uses placeholders)
log_format = "{d} [{h({l})}] {M}: {m}{n}"

# Log level (e.g., INFO, DEBUG)
log_level = "INFO"

# Enable file watcher for auto-reloading
file_watcher = true

# Indentation level for lists
list_shift = 4

# Sorting option for pending tasks
pending_sort = "None"

# Sorting option for completed tasks
done_sort = "None"

# Preview format (uses placeholders)
preview_format = """
Pending: {n}   Done: {N}
Subject: {s}
Priority: {p}
Create date: {c}
"""

# Layout configuration
layout = """
[
    Direction: Horizontal,
    Size: 50%,
    [
        List: 50%,
        Preview,
    ],
    [ Direction: Vertical,
      Done,
      [
        Contexts,
        Projects,
      ],
    ],
]
"""

# Priority-specific colors
[priority_colors.B]
fg = "Yellow"

[priority_colors.A]
fg = "Red"

[priority_colors.C]
fg = "Blue"

# Background color for categories
[category_color]
bg = "Blue"

# Background color for the active list item
[list_active_color]
bg = "LightRed"

# Background color for active pending tasks
[pending_active_color]

# Background color for active completed tasks
[done_active_color]

# Autosave duration (in seconds)
[autosave_duration]
secs = 900
nanos = 0

# List refresh rate (in seconds)
[list_refresh_rate]
secs = 5
nanos = 0

# Task keybindings
[[tasks_keybind.events]]
key = "Enter"
event = "Select"

[[tasks_keybind.events]]
event = "SwapDownItem"
key.Char = "D"

[[tasks_keybind.events]]
event = "SwapUpItem"
key.Char = "U"

[[tasks_keybind.events]]
event = "MoveItem"
key.Char = "d"

[[tasks_keybind.events]]
event = "RemoveItem"
key.Char = "x"

# Category keybindings
[[category_keybind.events]]
key = "Enter"
event = "Select"

# List keybindings
[[list_keybind.events]]
event = "ListLast"
key.Char = "G"

[[list_keybind.events]]
event = "ListFirst"
key.Char = "g"

[[list_keybind.events]]
event = "ListDown"
key.Char = "j"

[[list_keybind.events]]
event = "ListUp"
key.Char = "k"

# Window keybindings
[[window_keybind.events]]
event = "EditMode"
key.Char = "E"

[[window_keybind.events]]
event = "MoveLeft"
key.Char = "H"

[[window_keybind.events]]
event = "InsertMode"
key.Char = "I"

[[window_keybind.events]]
event = "MoveDown"
key.Char = "J"

[[window_keybind.events]]
event = "MoveUp"
key.Char = "K"

[[window_keybind.events]]
event = "MoveRight"
key.Char = "L"

[[window_keybind.events]]
event = "Save"
key.Char = "S"

[[window_keybind.events]]
event = "Quit"
key.Char = "q"

[[window_keybind.events]]
event = "Load"
key.Char = "u"

# Style for categories to filter
[category_select_style]
fg = "Green"

# Style for categories removes while filtering
[category_remove_style]
fg = "Red"

# Category style
[category_style]
fg = "DarkGray"

# Projects style
[projects_style]

# Contexts style
[contexts_style]

# Hashtags style
[hashtags_style]

# Custom category style for "todo-tui"
[custom_category_style."+todo-tui"]
fg = "LightBlue"

反馈和错误报告

由于此应用程序仍在开发中,您的反馈将非常受重视。如果您遇到任何问题或对改进有建议,请在我的 GitHub 仓库中打开一个问题,以帮助我改进 Todo.txt TUI。

依赖关系

~11–24MB
~286K SLoC