Skip to content

lpolish/splace

Repository files navigation

splace

Build Release Go Report Card Go Reference License: MIT

Encrypted directory bookmarks manager, cross-platform CLI tool.

Features

  • Save and recall directory bookmarks securely
  • AES-GCM encrypted storage with auto-generated key
  • Cross-platform installers (user or global)

Installation

From GitHub Releases

  1. Download the ZIP for your OS: splace-<os>.zip and/or the installer splace-<os>-installer.zip.
  2. Unzip and run the installer:
    # per-user install (default)
    ./install-<os>.sh
    # or global install (requires sudo)
    ./install-<os>.sh --global

From Source

Prerequisite: Install Docker (Windows)

To build with Docker on Windows, install Docker Desktop:

  1. Download the official installer from your browser or with PowerShell:
    Invoke-WebRequest -Uri "https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe" -OutFile "$env:TEMP\DockerDesktopInstaller.exe"
  2. Run the installer (requires user interaction):
    • Double-click the downloaded file, or
    • From PowerShell as Administrator:
      Start-Process "$env:TEMP\DockerDesktopInstaller.exe" -Verb RunAs
  3. Follow the installation prompts and restart your computer if required.
  4. After installation, verify Docker is available:
    docker --version

Using Docker (no Go required on host)

./build.sh

Using PowerShell (Windows, no Go required on host)

./build.ps1

If you see an error about script execution policy, run the following in an elevated PowerShell window:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

This allows running local scripts like build.ps1.

Manual Go build (if you have Go installed)

go build -buildvcs=false -ldflags="-s -w" -o splace
export SPLACE_KEY=$(openssl rand -base64 32)
./splace s  # initialise and save current dir

Usage

splace s        # save current directory
splace l        # show last saved directory
splace p        # show and pop last saved directory
splace n <idx>  # show bookmark at 1-based index
splace all      # list all saved directories

Useful function for your ~/.bashrc

For automatically changing dir into your latest place or the n'th place from splace

cdplace() {
    local dir
    if [ $# -eq 0 ]; then
        dir=$(splace l 2>/dev/null)
    else
        dir=$(splace n "$1" 2>/dev/null)
    fi

    if [ -n "$dir" ] && [ -d "$dir" ]; then
        cd "$dir" || {
            echo "Error: Failed to change to directory '$dir'"
            return 1
        }
    else
        echo "Error: No valid directory found for the given input"
        return 1
    fi
}

Environment

  • SPLACE_KEY (optional): base64-encoded 32-byte AES key. Auto-generated on first run at ~/.splace/key.

CI/CD

GitHub Actions builds binaries and installers for Linux, Windows, and macOS, publishing artifacts on release.

License

MIT © 2025 Luis Pulido Diaz

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

About

Encrypted directory bookmarks manager, cross-platform CLI tool.

Resources

License

Stars

Watchers

Forks

Packages

No packages published