#dotfiles-manager #dotfiles #toml-config #manager #toml #config-file

app sinc

使用Rust编写的跨平台dotfiles管理器

10个版本 (5个重大更改)

0.7.1 2023年4月1日
0.7.0 2023年3月26日
0.6.3 2023年3月20日
0.5.0 2023年3月5日
0.2.0 2023年2月23日

#671 in 配置

MIT许可证

23KB
457

Sinc

跨平台dotfiles管理器

进行中

此存储库仍在开发中。请自行承担风险。

安装

$ cargo install sinc

入门

配置文件

Sinc会在以下位置查找配置文件:

  • $SINC_CONFIG_DIR/sinc/sinc.toml
  • $XDG_CONFIG_HOME/sinc/sinc.toml
  • $HOME/.config/sinc/sinc.toml

最小配置

以下是最小配置:

[default]
dir = "~/.dotfiles"
sync_type = "symlink"

[[dotfiles]]
path = "sinc"
target = "~/.config/sinc"

如果您在此状态下运行sinc命令,则会从~/.dotfiles/sinc创建到~/.config/sinc的符号链接。
换句话说,前面提到的配置文件已移动到~/.dotfiles/sinc,并已创建到原始位置的符号链接。

(dir + path)         (sync_type)            (target)
 │                    │                    │
 V                    V                    V
~/.dotfiles/sinc  <<== symbolic link ==>>  ~/.config/sinc

现在,此配置不支持配置文件位置随操作系统而不同的应用程序。

要解决这个问题,您可以使用sys(os)而不是直接指定值。

[[dotfiles]]
path = "bat"
  [dotfiles.target."sys(os)"]
  default = "~/.config/bat"
  windows = "~/AppData/Roaming/bat"

配置值

配置

值类型
默认值
dotfiles 表数组

配置.默认值

值类型
dir 字符串
sync_type 同步类型

配置.dotfiles

值类型 默认值
dir 字符串 配置.默认值.dir
sync_type 同步类型 配置.默认值.sync_type
target StringArray<String>
path 字符串
enable 布尔型 true
hook_add 字符串 ""

hook_*中设置的值将在指定时间作为命令执行。

flowchart LR
Start([start]) ===> enable
enable{enable} ===> |true| sync
enable ---> |false| End
sync[[sync]] ===> |success| hook_add
hook_add[[hook_add]] ===> End
sync ---> |fail| End([End])

同步类型

描述
"symlink" 如果您正在使用Windows,则需要管理员权限
"junction" 仅限Windows / 用于链接到文件夹
"hardlink" 像原始文件一样行为 / 用于链接到文件
"copy" 仅复制

配置.**.sys(...)

名称 键示例
sys(os) os_info::Type(小写) arch linux
sys(os_type) std::env::consts::OS linux
sys(os_family) std::env::consts::FAMILY unix
示例
[default]
dir = "~/.dotfiles"
sync_type."sys(os)" = { default = "symlink", windows = "junction" }

[[dotfiles]]
path = "bat"
  [dotfiles.target."sys(os)"]
  default = "~/.config/bat"
  windows = "~/AppData/Roaming/bat"

[[dotfiles]]
path = ".gitconfig"
target = "~/.gitconfig"
  [dotfiles.sync_type."sys(os)"]
  default = "symlink"
  windows = "hardlink"

配置.**.which(...)

名称
which(COMMAND) COMMAND 不存在,请选择 "" 的路径
示例
[[dotfiles]]
path = "neofetch"
target = "~/.config/neofetch"
  [dotfiles.enable."which(neofetch)"]
  # Enabled if the "neofetch" executable exists somewhere in $PATH.
  default = true
  "" = false

[[dotfiles]]
path = "hyprland"
target = "~/.config/hypr"
  [dotfiles.enable."which(wrappedhl)"]
  # Enabled if the "wrappedhl" executable exists in "~/bin/wrappedhl" in $PATH.
  default = false
  "~/bin/wrappedhl" = true

许可证

MIT

依赖项

~3–17MB
~169K SLoC