{"id":18836414,"url":"https://github.com/arusahni/qurop","last_synced_at":"2025-09-07T14:35:45.528Z","repository":{"id":214768243,"uuid":"734594695","full_name":"arusahni/qurop","owner":"arusahni","description":"Turn applications into Quake-style dropdowns.","archived":false,"fork":false,"pushed_at":"2024-01-16T03:12:53.000Z","size":62,"stargazers_count":7,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-31T11:28:47.425Z","etag":null,"topics":["dropdown-terminal","quake","terminal","utility","wezterm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arusahni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-12-22T05:04:49.000Z","updated_at":"2024-10-05T21:36:47.000Z","dependencies_parsed_at":"2023-12-30T16:46:57.651Z","dependency_job_id":null,"html_url":"https://github.com/arusahni/qurop","commit_stats":null,"previous_names":["arusahni/qurop"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arusahni%2Fqurop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arusahni%2Fqurop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arusahni%2Fqurop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arusahni%2Fqurop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arusahni","download_url":"https://codeload.github.com/arusahni/qurop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223620457,"owners_count":17174564,"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":["dropdown-terminal","quake","terminal","utility","wezterm"],"created_at":"2024-11-08T02:21:55.615Z","updated_at":"2024-11-08T02:21:56.609Z","avatar_url":"https://github.com/arusahni.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Qurop\n\nTurn any* Linux app into a Quake-style dropdown.\n\n\\* only tested with Wezterm\n\n\n**Only X11 for now, but I'd love to support Wayland, too**\n\n## Getting started\n\n### Installation\n\nCargo is the recommended method: `cargo install qurop`\n\nBinaries and distro packages coming soon.\n\n## Configuration\n\nAssuming `~/.cargo/bin` is on your path, register your application with Qurop:\n\n```sh\n# Add an instance named \"wezterm\", which, when invoked, will launch Wezterm\n#  using the \"dropdown\" session.\nqurop add wezterm wezterm connect dropdown\n```\n\nThis updates the configuration located in `$XDG_CONFIG_HOME/qurop/config.toml`.\n\nNext, within your desktop environment, bind the toggle command to a shortcut:\n\n```sh\n# Toggle the visibility of the \"wezterm\" instance.\n/home/$USER/.cargo/bin/qurop toggle wezterm\n```\n\n(in KDE, this is System Settings \u003e Shortcuts \u003e Custom Shortcuts \u003e Edit \u003e New \u003e\nGlobal Shortcut \u003e Command/URL)\n\nThen, hit the shortcut! That should be it.\n\n### Window size\n\nThe window defaults to 66% wide and 50% high. This can be altered by editing\nthe config file to add the `geometry` key to the table for your application\ninstance:\n\n```toml\ngeometry = { width = \"\u003cval\u003e\", height = \"\u003cval\u003e\" }\n```\n\nValues must be strings, and can contain either absolute numbers (e.g., `\"55\"`\nfor 55 pixels), or percentages (e.g., `\"33%\"`).\n\n### Matchers\n\nBy default, Qurop tracks the state of a managed application instance by it's\nPID. In the event a PID is *not* the right way to locate the instance window,\nyou can use an alternate matcher to find the window. Currently the only\nsupported alternate matcher uses the window class.\n\n```sh\n# Add an instance named \"my_instance\", which, when invoked, will launch\n#  \"appname\". Qurop will detect this by querying X for the first window\n#  with an \"appclass\" class.\nqurop add --matcher class --class-name appclass my_instance appname\n```\n\n## Troubleshooting\n\n### The window isn't resized or placed correctly\n\nQurop resizes the window after it launches. Depending on how long it takes to\nlaunch, the window may not be ready in time. You can alter the default delay\n(100ms) by adding the `window_delay_ms` key to the table for your application\ninstance:\n\n```toml\nwindow_delay_ms = 500\n```\n\n### Logs\nTo enable logging run the program with the `QUROP_LOG` envvar set:\n\n```sh\nQUROP_LOG=debug qurop toggle wezterm\n```\n\nThis will output to the attached TTY. If running outside of a terminal session,\nyou can opt into having logs written to disk:\n\n```sh\nQUROP_LOG=debug qurop --persist-verbosity=debug toggle wezterm\n```\n\nThis will output hourly-rotating logs to `/home/$USER/.local/state/qurop/`.\n\n\n## On the roadmap\n\nI'd love to support the following. If you'd like to contribute a feature,\nplease reach out to discuss an implementation before actually writing the code!\n\n- [ ] Wayland support. This will be challenging due to needing to detect the\n  active window, which doesn't yet seem to be supported by any protocol.\n- [ ] System tray icon.\n- [ ] Show/hide animations.\n- [ ] Better error handling.\n- [ ] Additional matchers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farusahni%2Fqurop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farusahni%2Fqurop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farusahni%2Fqurop/lists"}