golang终端多功能信息聚合插件tinycare-tui的使用

Golang终端多功能信息聚合插件tinycare-tui的使用

关于Tinycare-tui

Tinycare-tui是一个小型终端应用程序,主要功能包括:

  • 显示过去24小时和一周内的git提交记录
  • 显示当前天气
  • 提供自我关怀建议
  • 显示当前待办事项列表

这个项目最初是为了几个目标而创建的:

  1. 学习Go语言基础知识
  2. 练习使用Copilot和ChatGPT等生成式AI工具进行开发
  3. 创建一个有趣的终端应用程序

安装

使用以下命令安装tinycare-tui:

go install github.com/DMcP89/tinycare-tui@latest

配置

设置以下环境变量来配置Tinycare-tui:

# API Keys
GITHUB_TOKEN=123456789abcdefg # 设置此变量从Github获取提交记录而不是使用本地仓库
OPEN_WEATHER_MAP_API_KEY=123456789abcdefg # 设置此变量从OpenWeatherMap.org获取天气信息
TODOIST_TOKEN=123456789abcdefg  # 设置此变量从Todoist获取待办事项

# 设置
TINYCARE_POSTAL_CODE=123456 # 设置此变量指定获取天气信息的邮政编码
TINYCARE_WORKSPACE=/path/to/directory/with/git/repos,/another/path/to/repos # 设置此变量告诉应用程序在哪里查找git仓库以获取提交记录
TODO_FILE=/path/to/todolist/file # 设置此变量告诉应用程序本地任务列表的位置

运行

安装并配置完成后,只需运行以下命令:

tinycare-tui

功能示例

以下是一个完整的配置示例:

package main

import (
	"os"
)

func main() {
	// 设置环境变量
	os.Setenv("GITHUB_TOKEN", "your_github_token_here")
	os.Setenv("OPEN_WEATHER_MAP_API_KEY", "your_weather_api_key_here")
	os.Setenv("TODOIST_TOKEN", "your_todoist_token_here")
	os.Setenv("TINYCARE_POSTAL_CODE", "10001") // 纽约的邮政编码
	os.Setenv("TINYCARE_WORKSPACE", "/Users/yourname/Projects,/Users/yourname/Work")
	os.Setenv("TODO_FILE", "/Users/yourname/todo.txt")
	
	// 运行tinycare-tui
	// 实际使用中直接运行安装后的二进制即可
}

特性列表

项目已完成的主要功能:

  • 允许聚焦每个信息框
  • 扩展自我关怀提醒
  • 移除Twitter抓取代码
  • 用环境变量替换硬编码值
  • 按’r’键刷新视图
  • 每30秒自动刷新视图
  • 按’q’键退出应用
  • 使用goroutines优化性能
  • 允许设置多个git仓库位置
  • 支持本地待办事项列表
  • 显示已完成的任务
  • 添加从GitHub获取提交记录的选项
  • 添加错误处理机制
  • 创建测试用例
  • 添加日志记录功能
  • 添加笑话API集成

贡献

这是一个主要用来学习项目,作者会不定期进行维护,但也欢迎提交Issues和PRs。


更多关于golang终端多功能信息聚合插件tinycare-tui的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang终端多功能信息聚合插件tinycare-tui的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


TinyCareTUI - 终端多功能信息聚合工具

TinyCareTUI 是一个用 Go 语言编写的终端多功能信息聚合插件,它可以在终端中显示天气、待办事项、Git 提交、系统信息等多种内容,非常适合开发者在终端中一站式查看各种信息。

功能特点

  1. 天气信息显示
  2. 待办事项管理
  3. Git 提交统计
  4. 系统资源监控
  5. 名言警句展示
  6. 可定制化界面

安装方法

使用 Go 安装

go install github.com/notwaldorf/tiny-care-terminal@latest

使用 Homebrew (macOS)

brew tap notwaldorf/tiny-care-terminal
brew install tiny-care-terminal

基本使用

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 启动 TinyCareTUI
	cmd := exec.Command("tiny-care-terminal")
	
	// 设置自定义配置
	cmd.Args = append(cmd.Args, 
		"--weather", "auto",       // 自动检测位置天气
		"--todos", "~/.todos",    // 指定待办文件
		"--git", "~/code",        // 监控的代码目录
		"--show-quotes",          // 显示名言
		"--show-system",          // 显示系统信息
	)
	
	// 运行命令
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Printf("运行错误: %v\n", err)
		return
	}
	
	fmt.Println(string(output))
}

配置示例

TinyCareTUI 支持通过配置文件进行定制,通常位于 ~/.tiny-care-terminal.yml

weather:
  location: "auto"  # 自动检测或指定城市
  unit: "c"         # 温度单位 (c/f)
  
todos:
  file: "~/.todos"  # 待办事项文件路径
  
git:
  repos:            # 监控的Git仓库
    - "~/code/project1"
    - "~/code/project2"
  days: 7           # 显示最近几天提交
  
quotes:
  enabled: true     # 启用名言
  file: "~/.quotes" # 自定义名言文件
  
system:
  enabled: true     # 显示系统信息
  interval: 5       # 刷新间隔(秒)
  
ui:
  theme: "dark"     # 界面主题
  refresh: 60       # 全局刷新间隔(秒)

Go 语言集成示例

如果你想在自己的 Go 应用中集成类似功能,可以参考以下代码:

package main

import (
	"fmt"
	"time"
	
	"github.com/shirou/gopsutil/cpu"
	"github.com/shirou/gopsutil/mem"
	"github.com/briandowns/openweathermap"
)

type SystemInfo struct {
	CPUUsage    float64
	MemoryUsage float64
	Weather     string
}

func getSystemInfo() (SystemInfo, error) {
	var info SystemInfo
	
	// 获取CPU使用率
	percent, err := cpu.Percent(time.Second, false)
	if err != nil {
		return info, fmt.Errorf("获取CPU信息失败: %v", err)
	}
	info.CPUUsage = percent[0]
	
	// 获取内存使用率
	memInfo, err := mem.VirtualMemory()
	if err != nil {
		return info, fmt.Errorf("获取内存信息失败: %v", err)
	}
	info.MemoryUsage = memInfo.UsedPercent
	
	// 获取天气信息
	w, err := openweathermap.NewCurrent("C", "en", "YOUR_API_KEY")
	if err != nil {
		return info, fmt.Errorf("天气API错误: %v", err)
	}
	
	err = w.CurrentByName("Beijing")
	if err != nil {
		return info, fmt.Errorf("获取天气失败: %v", err)
	}
	
	info.Weather = fmt.Sprintf("%s, %.1f°C", w.Weather[0].Description, w.Main.Temp)
	
	return info, nil
}

func main() {
	info, err := getSystemInfo()
	if err != nil {
		fmt.Println("错误:", err)
		return
	}
	
	fmt.Printf("系统状态:\n")
	fmt.Printf("CPU使用率: %.1f%%\n", info.CPUUsage)
	fmt.Printf("内存使用率: %.1f%%\n", info.MemoryUsage)
	fmt.Printf("当前天气: %s\n", info.Weather)
}

自定义开发建议

如果你想基于 TinyCareTUI 开发自己的终端信息聚合工具,可以考虑以下组件:

  1. UI框架: 使用 tviewbubbletea 构建终端界面
  2. 天气API: openweathermapweather-api
  3. 系统监控: gopsutil 获取系统信息
  4. Git集成: go-git 库操作Git仓库
  5. 配置管理: viper 读取配置文件

总结

TinyCareTUI 是一个功能丰富且高度可定制的终端信息聚合工具,非常适合开发者使用。通过 Go 语言的强大能力,你可以轻松扩展或修改它的功能,打造属于自己的终端工作环境。

回到顶部