{"id":15970826,"url":"https://github.com/braun-steven/audamo","last_synced_at":"2026-02-27T17:07:05.320Z","repository":{"id":225828434,"uuid":"766976282","full_name":"braun-steven/audamo","owner":"braun-steven","description":"Automatically set linux themes based on time or local sunrise and sunset.","archived":false,"fork":false,"pushed_at":"2025-04-01T14:00:19.000Z","size":1058,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-26T17:34:44.395Z","etag":null,"topics":["auto","cursor","dark","dark-mode","gdk","gtk","hyprland","i3","icon","light","light-mode","linux","sway","theme"],"latest_commit_sha":null,"homepage":"https://www.steven-braun.com/audamo/","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/braun-steven.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-04T13:36:02.000Z","updated_at":"2025-12-31T15:28:07.000Z","dependencies_parsed_at":"2024-03-10T12:40:40.657Z","dependency_job_id":"c483818b-ed07-41bf-8f52-856599ee3a0a","html_url":"https://github.com/braun-steven/audamo","commit_stats":null,"previous_names":["braun-steven/auto-dark-mode","braun-steven/audamo"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/braun-steven/audamo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braun-steven%2Faudamo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braun-steven%2Faudamo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braun-steven%2Faudamo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braun-steven%2Faudamo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/braun-steven","download_url":"https://codeload.github.com/braun-steven/audamo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braun-steven%2Faudamo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29905628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T14:46:13.553Z","status":"ssl_error","status_checked_at":"2026-02-27T14:46:10.522Z","response_time":57,"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":["auto","cursor","dark","dark-mode","gdk","gtk","hyprland","i3","icon","light","light-mode","linux","sway","theme"],"created_at":"2024-10-07T20:03:27.925Z","updated_at":"2026-02-27T17:07:05.282Z","avatar_url":"https://github.com/braun-steven.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Python Version](https://img.shields.io/badge/python-3.9%20|%203.10%20|%203.11%20|%203.12-blue)\n![License](https://img.shields.io/badge/license-MIT-blue)\n![AUR](https://img.shields.io/aur/version/audamo)\n\n# Audamo\n \u003cimg align=\"right\" src='https://raw.githubusercontent.com/braun-steven/audamo/main/docs/res/logo.png' width='20%'\u003e\n\nAudamo is a project designed to smoothly provide what fully featured desktop environments such as Gnome and KDE provide: An automated transition of themes between light and dark mode depending on time or location. This is particularly helpful for non-desktop environments such as i3wm, sway, hyprland, awesomewm, bspwm, dwm, and many more. Audamo can be configured to switch themes based on sunrise/sunset times at a given or inferred location or simply by a specified schedule. Additionally, Audamo allows for the execution of custom scripts during theme changes, enabling users to hook additional scripts into the theme toggle process.\n\nUntil now, Audamo can set the following theme elements (`config.toml` values in brackets; see also [Configuration](#configuration)):\n\n- GTK theme (`theme`)\n- Icon theme (`icon`)\n- Cursor theme (`cursor`)\n- GTK color-scheme preference\n\nA user-specified script (`custom-script-path`) can be run with every theme change, allowing for additional customization; see also [Custom Script](#custom-script).\n\n\u003c/br\u003e\n\n## Installation\n\n### Install Script\n\nInstall conveniently with the [install script](https://raw.githubusercontent.com/braun-steven/audamo/main/install.sh).\n\n``` bash\nbash \u003c(curl -s -L https://raw.githubusercontent.com/braun-steven/audamo/main/install.sh)\n```\n\n#### Dependencies\n\nAudamo requires the following Python packages to be installed (see [requirements.txt](https://raw.githubusercontent.com/braun-steven/audamo/main/requirements.txt) for more specific versions):\n\n- `astral`\n- `requests`\n- `tomli`\n\n### Arch Linux (AUR)\n\nAudamo is available in the AUR as `audamo`:\n\n```bash\nparu -S audamo\n```\n\nYou can now copy the default system-wide configuration into your user config:\n\n``` bash\ncp /usr/share/audamo/config.toml $XDG_CONFIG_HOME/audamo/config.toml\n```\n\n## Usage\n\nAudamo is intended to be run as a background process that checks for location or time and, based on this, applies dark or light settings defined in `config.toml`.\n\n### Systemd\n\nWe provide systemd user units to run `audamo --daemon` as a serviced service as well:\n\n```bash\nsystemctl --user enable --now audamo.service\n```\n\n### Daemon Mode\n\nIf systemd is not available or not desired, `audamo` can also be run in daemon mode:\n\n``` bash\naudamo --daemon\n```\n\n### Manual\n\nInstead of using Audamo as a service/daemon, you can run it manually with a single invocation. Based on the `config.toml` settings, this will update the theme to light/dark mode:\n\n``` bash\n$ audamo --help\nusage: audamo [-h] [-l] [-d] [--debug] [--list-themes] [--daemon] [-v] [-c CONFIG] [--print-config]\n\nAutomatically set the system theme based on time or local sunrise and sunset.\n\noptions:\n  -h, --help            show this help message and exit\n  -l, --light           Force theme to light mode. (default: False)\n  -d, --dark            Force theme to dark mode. (default: False)\n  --debug               Enable debug logging to console. (default: False)\n  --list-themes         List available themes, cursors, and icons. (default: False)\n  --daemon              Run as a daemon to continuously monitor the time. (default: False)\n  -v, --version         show program's version number and exit\n  -c CONFIG, --config CONFIG\n                        Specify the configuration file to use (default: None)\n  --print-config        Print the configuration file and exit. (default: False)\n```\n\n## Configuration\n\nAudamo can be configured by editing the `config.toml` file. The user configuration should be placed at `$XDG_CONFIG_HOME/audamo/config.toml`.\n\n``` toml\n# Specify location by latitude and longitude\n[general]\nlatitude = \"\"\nlongitude = \"\"\n\n# Time in the format \"%H:%M\"\nsunrise = \"08:00\"\nsunset = \"20:00\"\n\n# Theme mode:\n#  - \"location\": sets the theme based on sunrise/sunset at given location\n#  - \"time\": sets the theme\nmode = \"location\"\n\n# Custom script that also gets executed with a single argument which is either \"light\" or \"dark\"\n# This script may contain user specified `sed` instructions to e.g. replace the vim theme like \"sed -i s/colorscheme dark/colorscheme light/g ~/.vimrc\" or similar\n# Make sure that the script has a proper shebang, e.g. \"#!/bin/sh\" for shell scripts\ncustom-script-path = \"\"\n\n# Light theme elements\n# Set values to \"\" if they should not be changed\n[light]\ntheme = \"Adwaita\"\nicon = \"Adwaita\"\ncursor = \"Adwaita\"\n\n# Dark theme elements\n# Set values to \"\" if they should not be changed\n[dark]\ntheme = \"Adwaita-dark\"\nicon = \"Adwaita\"\ncursor = \"Adwaita\"\n```\n\n## Custom Script\n\nA custom script can get executed every time `audamo` is run. The script path can be configured in `config.toml` with the  `custom-script-path` variable. The script is run with a single argument which is either \"light\" or \"dark\". This script may contain user-specified `sed` instructions to replace the vim theme like `sed e.g. -i s/colorscheme dark/colorscheme light/g ~/.vimrc` or similar. Make sure that the script has a proper shebang, e.g. `#!/bin/sh` for shell scripts.\n\nAn example script can be found in [`example-custom-script.sh`](example-custom-script.sh):\n\n```bash\n#!/usr/bin/env sh\n# This script takes a single argument, either \"light\" or \"dark\".\n\nTHEME=\"$1\"\ncase $THEME in\n    light)\n        # Sway background\n        swaymsg \"output * bg ~/lakesidedeer-light.png fill\"\n\n        # Alacritty\n        sed -i 's/nord/github_light/g' ~/.config/alacritty/alacritty.toml\n\n        # Vim\n        sed -i 's/background=dark/background=light/g' ~/.vimrc\n        ;;\n    dark)\n        # Sway background\n        swaymsg \"output * bg ~/lakesidedeer-dark.png fill\"\n\n        # Alacritty\n        sed -i 's/github_light/nord/g' ~/.config/alacritty/alacritty.toml\n\n        # Vim\n        sed -i 's/background=light/background=dark/g' ~/.vimrc\n        ;;\n    *)\n        echo \"Invalid argument. Please use 'light' or 'dark'.\"\n        exit 1\n        ;;\nesac\n```\n\n\n## Uninstall\n\nIf Audamo was installed via the [install script](https://raw.githubusercontent.com/braun-steven/audamo/main/install.sh), it can likewise be uninstalled with the [uninstall script](https://raw.githubusercontent.com/braun-steven/audamo/main/uninstall.sh):\n\n``` bash\nbash \u003c(curl -s -L https://raw.githubusercontent.com/braun-steven/audamo/main/uninstall.sh)\n```\n\n## Changelog\n\n### Version 1.1.4\n\n- Add fallbacks to location fetching and config parsing logic\n\n### Version 1.1.3\n\n- Fix a timezone bug for sunrise/sunset\n\n### Version 1.1.2\n\n- Hotfix slip of syntax error\n\n### Version 1.1.1\n\n- Remove sleep until the next sunrise/sunset as this was not compatible with suspending systems\n\n### Version 1.1.0\n\n- Add print config flag\n- Implement sleep until the next sunrise/sunset\n- Fix theme detection when the theme does not have an `index.theme` file\n- Rewrite core logic\n- Get rid of timezonefinder dependency\n- Remove systemd timer and make the service start the daemon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraun-steven%2Faudamo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbraun-steven%2Faudamo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraun-steven%2Faudamo/lists"}