{"id":30939299,"url":"https://github.com/ittykeys/dns-toggle","last_synced_at":"2026-05-18T09:08:04.778Z","repository":{"id":310440849,"uuid":"1039770332","full_name":"ittykeys/dns-toggle","owner":"ittykeys","description":"  Simple GUI toggle for /etc/resolv.conf","archived":false,"fork":false,"pushed_at":"2025-12-03T10:07:25.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-06T13:08:51.842Z","etag":null,"topics":["c","dns","linux","resolv-conf"],"latest_commit_sha":null,"homepage":"","language":"C","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/ittykeys.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":"2025-08-18T00:16:30.000Z","updated_at":"2025-12-03T10:07:28.000Z","dependencies_parsed_at":"2025-08-18T06:29:11.735Z","dependency_job_id":"fc2b56c7-5590-4cff-a184-58b2e086975f","html_url":"https://github.com/ittykeys/dns-toggle","commit_stats":null,"previous_names":["ittykeys/dns-toggle"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ittykeys/dns-toggle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ittykeys%2Fdns-toggle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ittykeys%2Fdns-toggle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ittykeys%2Fdns-toggle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ittykeys%2Fdns-toggle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ittykeys","download_url":"https://codeload.github.com/ittykeys/dns-toggle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ittykeys%2Fdns-toggle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33172173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: 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":["c","dns","linux","resolv-conf"],"created_at":"2025-09-10T19:45:28.562Z","updated_at":"2026-05-18T09:08:04.773Z","avatar_url":"https://github.com/ittykeys.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DNS Toggle\n\n![dns toggle logo](https://cdn.ittykeys.com/dns-toggle.png)\n![dns toggle screenshot](https://cdn.ittykeys.com/dns-toggle-scr.png)\n\n## Description\n\nSimple GUI toggle for /etc/resolv.conf for us old dogs still handling DNS that way.\n\n### Features\n\n* Toggling between 2 main DNS servers\n* Toggle for a 3rd DNS server that overrides the 2 main (useful for VPN etc)\n* Handles empty /etc/resolv.conf and creates it when we toggle\n* Should leave alone things like domain, search and comments\n\n### Dependencies\n\n* libgtk-3-dev\n* librsvg2-dev\n\n### Build\n\nMake file **nameservers.conf** before building, example:\n```\nnameserver 1.1.1.1\nnameserver 8.8.8.8\nnameserver 9.9.9.9\n```\n\nThen:\n\n\n```bash\nsudo apt install libgtk-3-dev librsvg2-dev build-essential\ngit clone git@github.com:ittykeys/dns-toggle.git\ncd dns-toggle\nmake\n```\n\n### Run\n\nPlease backup your precious /etc/resolv.conf before running:\n\n```bash\nsudo cp /etc/resolv.conf /etc/resolv.conf.bk\n```\n\nThen:\n\n```bash\n./dns-toggle\n```\nIt will ask for authentication via **pkexec** when toggling.\n\n##### Todo\n\n* Detect and re-toggle previous state (and toggle state) properly after 3rd dns toggled (especially at startup).\n* Detect and error out if /etc/resolv.conf is handled by another system.\n* Future-proof for gtk4\n* Add flag to auth immediately at launch, negating the need for auth every toggle\n* Windows version (are network connection options exposed via win api?)\n* Pack assets in executable\n* Don't block main gui thread for auth (#3500)\n* KDE widget (#3480)\n* Option to modify DNS at startup (#3523)\n* Mobile app (#3538)\n* Temp file while active (#3544)\n\n### License\n\nThis project is licensed under the GNU General Public License - see the [License file](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fittykeys%2Fdns-toggle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fittykeys%2Fdns-toggle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fittykeys%2Fdns-toggle/lists"}