{"id":20812340,"url":"https://github.com/kutu-dev/themizer","last_synced_at":"2025-12-11T20:29:34.598Z","repository":{"id":65051340,"uuid":"581324375","full_name":"kutu-dev/themizer","owner":"kutu-dev","description":"An easy and fast CLI app to change between custom themes in Unix-like systems.","archived":false,"fork":false,"pushed_at":"2023-06-23T22:32:42.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-18T14:53:16.409Z","etag":null,"topics":["theme","theme-manager","themes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kutu-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2022-12-22T21:46:19.000Z","updated_at":"2024-06-06T15:21:20.000Z","dependencies_parsed_at":"2024-11-17T21:05:08.497Z","dependency_job_id":null,"html_url":"https://github.com/kutu-dev/themizer","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"da222b2bc3bf3314284fa74f770529f363c654d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutu-dev%2Fthemizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutu-dev%2Fthemizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutu-dev%2Fthemizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutu-dev%2Fthemizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kutu-dev","download_url":"https://codeload.github.com/kutu-dev/themizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243158972,"owners_count":20245669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["theme","theme-manager","themes"],"created_at":"2024-11-17T20:53:17.530Z","updated_at":"2025-12-11T20:29:29.533Z","avatar_url":"https://github.com/kutu-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Themizer\n\u003e An easy and fast CLI app to change between custom themes in Unix-like systems\n\n## Installation\n```bash\n\u003e pip install themizer # Install with pip\n\u003e themizer -v # Check if themizer has been installed correctly\n```\n\n## Usage\n**Create a theme:**\n```bash\n\u003e themizer create foo\n```\n\n**Apply a theme:**\n```bash\n\u003e themizer apply bar\n```\n\n**Apply the last used theme:**  \n_When you not specify the theme to use themizer will try to use the last applied theme._\n```bash\n\u003e themizer apply\n```\n\n**Delete a theme:**\n```bash\n\u003e themizer delete baz\n```\n\u003e Note: you can use quotes for themes with spaces in its name. E.g. `themizer apply 'Space Plumber'`\n\n\n## Creating a theme\nIf you create a theme and apply it directly it will raise this error:\n```\n[ ERROR ] The theme config body is empty\n```\nThis happens because you should configure your theme manually, this little guide will help you in the process of create a new one.  \n\n### Theme structure\n\nAll the themes are saved in `~/.config/themizer/themes/` by default, and the structure of a theme looks like this:\n```\n'theme-name/'\n ├── after-execute\n ├── before-execute\n ├── theme.config\n └── ...\n```\n\n| Directory / File | Description |\n| --- | --- |\n| `theme.config` | Here is stored all info about the theme and the instructions to apply it, more info below. |\n| `before-execute` | This file will be execute before Themizer actually moves the themes and applies it. Use its shebang to execute anything you want. |\n| `after-execute` | The same as `before-execute` but after the theme is actually applied. |\n\n### Configuration of the theme\nThe `theme.config` is spliced in two parts, the header and the body.\n\n\n#### The header:\nThe header stores optional information about the theme itself and the body what directories should move from the theme and where they should go. Looking like this:\n```toml\n[theme] # Header of the theme config\nname = 'custom_name' # The default name is the name of the directory\nclear_terminal = true # By default is false, if is true the theme will clear the terminal after applying the theme\n```\n\n#### The body:\nThe body is former for the relative path of the config to move `theme-name/super-config` and the destination `~/.config/super-app`. Looking like this:\n```toml\n['foobar'] # Relative directory from the theme path\ndest = '~/.config/super-app' # Absolute path (can use ~to refer the home path)\n```\n#### Example:\nDirectory structure:\n```bash\nfoo-theme/\n ├── after-execute\n ├── before-execute\n ├── theme.config\n ├── fish/... # Some config for fish shell\n └── htop/... # Some config for htop\n```\nConfiguration file:\n```toml\n[theme]\nname = 'Kanagawa Theme'\n\n['fish']\ndest = '~/.config/fish'\n\n['htop/htop.config']\ndest = '~/.htop'\n```\n\nWhen you run `themizer apply 'Kanagawa Theme'` themizer will execute `before-script`, copy `foo-theme/fish/` to `~/.config/fish/`, copy `foo-theme/htop.config` to `~/.htop` and finally execute `after-script`.\n\n\u003e Note: The subdirectory `theme` will not work correctly as its name is used to refer the header of the configuration.'\n\n## Configuration\nYour configuration directory is located by default in `~/.config/themizer/`.\n\n### Custom config path\nYou can use your custom path for the config using `--config`:\n```\n\u003e themizer --config /path/to/config/directory\n```\n\n## Scripting\nYou can automatize all the things you can do with Themizer this way:\n```python\nfrom themizer import App\n\ntheme_manager: App = App()\n# You can also set a custom config path\nfrom pathlib import Path\ncustom_theme_manager: App = App(Path('/your/custom/path/'))\n```\nThe `App` class has this set of useful methods to interact with Themizer:\n| Method | Description |\n| --- | --- |\n| `apply_theme(theme_name: str)` | Apply an existing theme. Leave theme_name None to try to use the last theme applied. Return the theme applied. |\n| `create_theme(theme_name: str)` | Create a new theme. |\n| `delete_theme(theme_name: str)` | Delete an existing theme. |\n| `move_theme_config` | Only moves the directories indicated in the theme and not run the 'before' and 'after' scripts. |\n| `run_before_script(theme_name: str)` | Run the 'before' script of the selected theme. |\n| `run_after_script(theme_name: str)` | Run the 'after' script of the selected theme. |\n| `get_theme_config(theme_name: str)` | Return all the config of the theme. |\n| `get_theme_config_head(theme_name: str)` | Return the head of the config of the theme. |\n| `get_theme_config_body(theme_name: str)` | Return the body of the config of the theme. |\n| `get_themes_dict)` | Return a dict with the names of all themes and its internal object. |\n| `set_last_theme_used(theme_name: str)` | Set the last theme to a custom one. |\n| `get_last_theme_used)` | Return the last theme used by the user. |\n| `get_clear_terminal(theme_name: str)` | Return if the theme selected should clear the terminal. |\n\n## Contributing\nFeel free to report a bug or request a branch merge, I appreciate any contribution.\n\n## Author\n\nCreated with :heart: by [Kutu](https://kutu-dev.github.io).\n\u003e - GitHub - [kutu-dev](https://github.com/kutu-dev)\n\u003e - Twitter - [@kutu_dev](https://twitter.com/kutu_dev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkutu-dev%2Fthemizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkutu-dev%2Fthemizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkutu-dev%2Fthemizer/lists"}