{"id":28447504,"url":"https://github.com/fabienjuif/choosme","last_synced_at":"2025-06-30T10:31:34.088Z","repository":{"id":296713564,"uuid":"988854038","full_name":"fabienjuif/choosme","owner":"fabienjuif","description":"Choose to open a link between a given list of web browsers","archived":false,"fork":false,"pushed_at":"2025-06-15T15:42:13.000Z","size":268,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-27T12:05:43.851Z","etag":null,"topics":["choosy","chrome","chromium","firefox","split","webbrowser"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/fabienjuif.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-05-23T07:13:56.000Z","updated_at":"2025-06-11T21:48:57.000Z","dependencies_parsed_at":"2025-06-01T23:48:19.892Z","dependency_job_id":null,"html_url":"https://github.com/fabienjuif/choosme","commit_stats":null,"previous_names":["fabienjuif/choosme"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fabienjuif/choosme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabienjuif%2Fchoosme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabienjuif%2Fchoosme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabienjuif%2Fchoosme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabienjuif%2Fchoosme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabienjuif","download_url":"https://codeload.github.com/fabienjuif/choosme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabienjuif%2Fchoosme/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262755891,"owners_count":23359432,"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":["choosy","chrome","chromium","firefox","split","webbrowser"],"created_at":"2025-06-06T12:00:45.971Z","updated_at":"2025-06-30T10:31:34.082Z","avatar_url":"https://github.com/fabienjuif.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Installation\n\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"screenshot\" width=800 src=\"./doc/screenshot.jpg\" /\u003e\n\u003c/p\u003e\n\n### From sources\n\n1. Install dependencies\n\n   - libgtk-4-dev\n   - libdbus-1-dev\n\n2. Install rust: https://www.rust-lang.org/tools/install\n3. Compile and install the app:\n\n```sh\ncargo install --path .\n```\n\n4. Add `~/.cargo/bin/` to your PATH\n\n## First run\n\n1. Create a config file (see [Config](#config))\n2. Copy the choosme desktop file:\n\n```sh\ncp ./choosme.desktop ~/.local/share/applications/\n```\n\n3. Set choosme as your default browser:\n\n```sh\nxdg-settings set default-web-browser choosme.desktop\n```\n\n## Shortcuts\n\n- `Escape` to close\n- `1` open the first row\n- `2` open the 2nd row\n- etc\n\n## Config\n\n`~/.config/choosme/config.toml`\n\n```toml\n# this app is never auto selected\n[[application]]\npath = \"/usr/share/applications/firefox.desktop\"\nalias = \"Perso\" # this will be the row title instead of the .desktop Name\n\n# it auto selects the work firefox if URL starts with http://work.atlassian.com/\n[[application]]\npath = \".local/share/applications/firefox-work.desktop\"\nalias = \"Work\" # this will be the row title instead of the .desktop Name\nprefixes = [\n    \"http://work.atlassian.com/\"\n]\n\n# it auto selects chrome if\n# - the URL starts with https://gmail.com\n# - or we click on a google maps link\n[[application]]\npath = \"/usr/share/applications/chromium.desktop\"\nalias = \"Chromium\" # this will be the row title instead of the .desktop Name\nprefixes = [\n    \"https://gmail.com\"\n]\nregexps = [\n    \"^https?://(www.)?google.(?:com|fr)/maps.*\"\n]\n\n# if you click to any link that is not gmail.com, it'll open choosme UI.\n# you then have to choose between Firefox (Perso and Work) and Chromium to open this link.\n```\n\n## Styling\n\nOn first run, if the CSS file does not exist, Choosme will create a new default one.\nThe styling creating a CSS file here: `~/.config/choosme/style.css`.\n\n```css\n/* application (item) */\n.application {\n  padding: 0.5rem;\n  border-radius: 0;\n}\n\n/* first application */\n.application.first {\n  border-radius: 1rem 1rem 0 0;\n}\n\n/* last application */\n.application.last {\n  border-radius: 0 0 1rem 1rem;\n}\n\n/* row between list and application */\n.list \u003e * {\n  padding: 0;\n}\n\n/* main list */\n.list {\n  border-radius: 1rem 1rem;\n  background-color: transparent;\n}\n\n/* main window */\n.main-window {\n  background-color: transparent;\n}\n```\n\n## Daemon mode\n\nIf you want to have a faster and/or having control over your fallback browser for your session, you can use the daemon mode.\nThen you are still using the app as usual. Choosme will try to connect to the daemon, and if it fails run as a |standalone application.\n\nExample for sway:\n\n```\nexec {\n    choosme daemon\n}\n```\n\n## Nice to have\n\n- [ ] Auto set as default web browser on first run\n- [ ] Auto detect browsers to init config file\n- [ ] Be able to add or remove apps from the UI\n- [ ] From the UI, have a drop down menu (hidden by default) where are presented the full URL (you can modify the URL to edit it) and the dns only, click on one of both, then you choose your app, it will be registred as your default app for this prefix\n- [ ] Open window near cursor in Sway\n- [ ] Enter opens the last used browser\n- [ ] Change configuration logic to be\n\n```toml\n[[rule]]\nprefix=\"http://github.com/fabienjuif\"\napplication=\"Firefox\"\n\n# this rule apply only if the first one is not matching\n[[rule]]\nprefix=\"http://google.com\"\napplication=\"Chrome\"\n\n# optional fallback rule if you want to avoid the UI to pop\n[[rule]]\ndefault=\"Firefox\"\n\n[[application]]\npath=\nname=\"Firefox\"\n\n[[application]]\npath=\nname=\"Chrome\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabienjuif%2Fchoosme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabienjuif%2Fchoosme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabienjuif%2Fchoosme/lists"}