Restore Configuration
Pipe Separated Values (PSV)
This is a pipe-separated value file. It contains the paths of the dotfiles and their respective package dependencies.
Note:
- Lines starting with
#
are comments. - The only known variable is
${HOME}
. - This is a 4-column file separated by
|
. - Each column should use spaces to separate array elements.
Structure:
flag|path|target|dependency
Flags:
-
( P ) Populate/Preserved
- This flag ensures that the target is only copied if it does not already exist. It is useful for preserving the current state of the target, preventing any overwrites or modifications to existing files or directories.
-
( S ) Sync
- If the target file(s) exist, overwrite them.
- If the target is a directory, only overwrite the files that are listed.
- Preserve other files in the target directory that are not listed.
- This behavior is similar to the
cp -r
command.
-
( O ) Overwrite
- This flag performs an aggressive sync operation. It ensures that the target is completely replaced by the source.
- If the target is a directory, every file and subdirectory within it will be overwritten by the corresponding items from the source.
- If the target is a file, it will be entirely overwritten by the source file.
- This operation does not preserve any existing files or directories in the target location; everything is replaced.
- Useful for updating core configurations and scripts.
-
( B ) Backup
- Backup the target.
- All P, S, O flags will also backup the target file/directory.
Sample PSV file
Hyde core files P|${HOME}/.config/hyde|config.toml|hyprlandP|${HOME}/.config/hypr|hyde.conf animations.conf windowrules.conf keybindings.conf userprefs.conf monitors.conf|hyprlandP|${HOME}/.config/hypr|nvidia.conf|hyprland nvidia-utilsP|${HOME}/.config/hypr/themes|theme.conf wallbash.conf colors.conf|hyprlandP|${HOME}/.local/state|hyde|hyprland
S|${HOME}/.config/hypr|hyprland.conf|hyprlandS|${HOME}/.local|bin|hyprlandS|${HOME}/.config|gtk-3.0|nwg-lookS|${HOME}/.config|nwg-look|nwg-lookS|${HOME}/.config|xsettingsd|nwg-lookS|${HOME}|.gtkrc-2.0|nwg-lookS|${HOME}/.config|Kvantum|kvantumS|${HOME}/.config|qt5ct|qt5ctS|${HOME}/.config|qt6ct|qt6ctS|${HOME}/.config/hyde|wallbash|hyprlandS|${HOME}/.config/hypr|animations|hyprland
O|${HOME}/.local/share|hyde|hyprlandO|${HOME}/.local/lib|hyde|hyprland
Editor P|${HOME}/.config/Code - OSS/User|settings.json|codeP|${HOME}/.config/Code/User|settings.json|visual-studio-code-binP|${HOME}/.config/VSCodium/User|settings.json|vscodium-bin
Bar P|${HOME}/.config/waybar|config.ctl|waybarS|${HOME}/.config/waybar|modules config.jsonc theme.css style.css|waybar
Terminal P|${HOME}/.config|lsd|lsdS|${HOME}/.config|fastfetch|fastfetchS|${HOME}/.config/kitty|hyde.conf theme.conf|kittyP|${HOME}/.config/kitty|kitty.conf|kitty
Shell P|${HOME}/.config|fish|fishP|${HOME}|.zshrc .hyde.zshrc .p10k.zsh|zsh zsh-theme-powerlevel10k pokego-binS|${HOME}|.zshenv|zsh zsh-theme-powerlevel10k
File Explorer P|${HOME}/.local/state|dolphinstaterc|dolphinP|${HOME}/.config|baloofilerc|dolphinS|${HOME}/.config/menus|applications.menu|dolphinS|${HOME}/.config|dolphinrc|dolphinS|${HOME}/.config|kdeglobals|dolphinS|${HOME}/.local/share/kio/servicemenus|hydewallpaper.desktop|dolphinS|${HOME}/.local/share/kxmlgui5|dolphin|dolphinS|${HOME}/.local/share|dolphin|dolphin
Input P|${HOME}/.config|libinput-gestures.conf|libinput-gestures
Wayland P|${HOME}/.config|spotify-flags.conf|spotifyP|${HOME}/.config|code-flags.conf|codeP|${HOME}/.config|code-flags.conf|visual-studio-code-binP|${HOME}/.config|vscodium-flags.conf|vscodium-binP|${HOME}/.config|electron-flags.conf|electron
Notifications S|${HOME}/.config|dunst|dunst
Gaming S|${HOME}/.config|MangoHud|mangohud
Launcher S|${HOME}/.config|rofi|rofiS|${HOME}/.config|wlogout|wlogout
Lock Screen S|${HOME}/.config|swaylock|swaylock-effectsP|${HOME}/.config/hypr|hyprlock.conf|hyprlockS|${HOME}/.config/hypr|hyprlock|hyprlock
Idle daemon P|${HOME}/.config/hypr|hypridle.conf|hypridle
TOML Configuration
🚧 🚧 WIP 🚧🚧
PSV configuration file is convenient for the script to read and write. However, it is very restrictive and not user-friendly. For further customization, we can use TOML configuration files.
…