{"id":21439716,"url":"https://github.com/shelepuginivan/theme","last_synced_at":"2026-02-06T05:03:56.990Z","repository":{"id":251656334,"uuid":"836391265","full_name":"shelepuginivan/theme","owner":"shelepuginivan","description":"My bare minimum theme switcher","archived":false,"fork":false,"pushed_at":"2025-01-13T08:41:24.000Z","size":35,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T20:43:49.917Z","etag":null,"topics":["eye-candy","go","golang","minimalism","personal-tool","ricing","simple","theme-switcher"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shelepuginivan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-31T18:42:00.000Z","updated_at":"2025-01-13T08:41:27.000Z","dependencies_parsed_at":"2025-01-13T09:40:15.619Z","dependency_job_id":null,"html_url":"https://github.com/shelepuginivan/theme","commit_stats":null,"previous_names":["shelepuginivan/theme"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shelepuginivan/theme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shelepuginivan%2Ftheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shelepuginivan%2Ftheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shelepuginivan%2Ftheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shelepuginivan%2Ftheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shelepuginivan","download_url":"https://codeload.github.com/shelepuginivan/theme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shelepuginivan%2Ftheme/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29151617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T02:39:25.012Z","status":"ssl_error","status_checked_at":"2026-02-06T02:37:22.784Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eye-candy","go","golang","minimalism","personal-tool","ricing","simple","theme-switcher"],"created_at":"2024-11-23T00:48:35.267Z","updated_at":"2026-02-06T05:03:56.963Z","avatar_url":"https://github.com/shelepuginivan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `theme`\n\nThis is my bare minimum theme switcher. It simply copies files and runs hooks \u0026mdash; that's it.\nIt does not generate color palletes from wallpaper like other theme switchers usually do.\n\n## Installation\n\nThe simplest way is to install it using Go:\n\n```shell\ngo install github.com/shelepuginivan/theme@latest\n```\n\nYou can also clone this repository and install `theme` system-wide by running:\n\n```shell\ngit clone \"https://github.com/shelepuginivan/theme.git\"\ncd theme\nsudo make install\n```\n\nI do not maintain any packages, although prebuilt binaries may be available in the future.\n\n## Example\n\nI use `theme` myself, so you can have a look at my [dotfiles](https://github.com/shelepuginivan/dotfiles/tree/main/.config/theme) for an example.\n\n## Usage\n\nThemes are stored as directories located in **prefix**, which is `$XDG_CONFIG_HOME/theme` (`~/.config/theme` in most cases).\n\n```\n$XDG_CONFIG_HOME/theme/\n├── my_awesome_theme/\n│   ├── copy.json\n│   ├── run.d/\n│   │   ├── hook_1.sh\n│   │   ├── hook_2.sh\n│   │   └── hook_3.sh\n│   └── other files...\n└── other themes...\n```\n\nThe directory name is the name of the theme.\n\nNesting is supported, so you can use subdirectories to organize your themes (e.g. `waybar/solid-top` is a valid theme name).\nOr you can use another prefix instead, by passing a `-p` flag (see below).\n\n### CLI\n\n```\nA very simple theme switcher\n\nUsage:\n  theme [command]\n\nAvailable Commands:\n  completion  Generate the autocompletion script for the specified shell\n  help        Help about any command\n  list        List available themes\n  random      Set a random available theme\n  set         Set a theme\n\nFlags:\n  -h, --help            help for theme\n  -p, --prefix string   Directory where themes are stored (default \"/home/user/.config/theme\")\n\nUse \"theme [command] --help\" for more information about a command.\n```\n\n### `copy.json`\n\nThis is a special file where you can specify which files should be copied and where they should be copied to.\nDirectories are copied recursively and merged. Conflicting files are replaced.\n\nFiles are copied concurrently, both in different entries of `copy.json` and within a single entry when copying a directory.\n\n\u003e [!TIP]\n\u003e For convenience, `theme` expands paths specified in this file as follows:\n\u003e - `@` is replaced with path to the theme (in the example above, `$XDG_CONFIG_HOME/theme/my_awesome_theme`)\n\u003e - `~` is replaced with user home directory (`$HOME`)\n\u003e - All environment variables are expanded.\n\nBelow is an example `copy.json` file.\n\n```json\n[\n    {\n        \"src\": \"@/files/alacritty.toml\",\n        \"dst\": \"$HOME/.config/alacritty/colors.toml\"\n    },\n    {\n        \"src\": \"@/files/dunst\",\n        \"dst\": \"~/.config/dunst\"\n    },\n    {\n        \"src\": \"@/files/gtk.css\",\n        \"dst\": \"$HOME/.cache/gtk.css\"\n    }\n]\n```\n\n### `run.d`\n\nThis directory contains executable files (hooks) that run after files are copied.\nA common use case is restarting programs to update their configurations:\n\n```shell\n#!/bin/sh\n\nif systemctl --user --quiet is-active dunst; then\n    systemctl --user restart dunst.service\nfi\n```\n\nHooks are executed concurrently.\n\n\u003e [!TIP]\n\u003e The files in the `run.d` directory run with the working directory of the theme:\n\u003e ```shell\n\u003e #!/bin/sh\n\u003e\n\u003e swww img \"./files/wall.png\" # this path is resolved to $XDG_CONFIG_HOME/theme/my_awesome_theme/files/wall.png\n\u003e ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshelepuginivan%2Ftheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshelepuginivan%2Ftheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshelepuginivan%2Ftheme/lists"}