{"id":21041986,"url":"https://github.com/kofish/xdoui","last_synced_at":"2026-01-31T11:02:34.789Z","repository":{"id":3632272,"uuid":"4698815","full_name":"KoFish/xdoui","owner":"KoFish","description":"A ncurses based UI for libxdo","archived":false,"fork":false,"pushed_at":"2012-07-13T01:49:47.000Z","size":188,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-11T03:15:10.878Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scheme","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/KoFish.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}},"created_at":"2012-06-18T08:34:56.000Z","updated_at":"2014-03-21T05:49:05.000Z","dependencies_parsed_at":"2022-08-18T14:20:13.974Z","dependency_job_id":null,"html_url":"https://github.com/KoFish/xdoui","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KoFish/xdoui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoFish%2Fxdoui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoFish%2Fxdoui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoFish%2Fxdoui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoFish%2Fxdoui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KoFish","download_url":"https://codeload.github.com/KoFish/xdoui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoFish%2Fxdoui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28939497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T10:18:23.202Z","status":"ssl_error","status_checked_at":"2026-01-31T10:18:22.693Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-11-19T13:57:04.418Z","updated_at":"2026-01-31T11:02:34.769Z","avatar_url":"https://github.com/KoFish.png","language":"Scheme","funding_links":[],"categories":[],"sub_categories":[],"readme":" XDO UI\n========\n\nA ncurses based UI for calling libxdo (from xdotool) functions to simulate\nkeypresses and mouse actions.\n\n Dependencies\n--------------\n\n - xdotool\n\n   The latest git version of xdotools is probably needed and it's available at\n   https://github.com/jordansissel/xdotool . This is required by guile-xdo for\n   libxdo.\n\n - guile-xdo\n\n   A wrapper library for libxdo in GNU Guile that is available at\n   https://github.com/KoFish/guile-xdo it should be pretty complete and\n   hopefully useful for other things too.\n\n - guile-ncurses\n\n   A wrapper library for ncurses in GNU Guile that is required for doing the\n   whole UI stuff in XDO UI. It's available at\n   http://www.gnu.org/software/guile-ncurses/\n\n\n The concepts\n--------------\n\nThe interface is slightly inspired by vim but it's less intelligent. When you\nstart the application you get a parse-tree accepting keys by object to act on;\n`w` is for windows, `m` is for mouse, `h` is for help and `q` is for quit, etc.\nThere are also a bunch of \"helper\" functions, such as `\"` and `'` which changes\nregisters to use (more on that in a bit). There is also the concept of prefixes.\n\n### Prefix\n\nA prefix is data that can be used in different functions besides the values\nstored in registers. Prefixes always has to be entered manually and there are a\ncouple of ways to do that. Number prefixes can be entered by simply pressing\nnumber keys before any command, string prefixes can be entered by pressing\nenter, entering the text in the dialog that pops up, terminating with enter or\nctrl-d, and then doing the command.\n\n### Registers\n\nWhen running XDO UI you have access to a whole bunch of registers, easiest of\nthem to use is probably a-z. When doing a command you can specify two different\nregisters, one load register and one store register. Store register is specified\nby `\"` followed by one of the accepted registers, and in that case the value\nfrom the function called is stored in this register instead of being printed to\nthe main-window. Similary the `'` followed by a register changes the load\nregister, this register can be used to input values to a function.\n\nExample: To move the currently active window to where the mouse curser is you\nwould do the following command `\"agmp\"bwga'awp` which can be read as following:\n`g`et the current `m`ouse `p`osition into register `a`, get the active window\ninto register b, put window at position stored in register a. To but the window\nat the position 100x200 you could do it by calling pe100x200wp, this you could\nread as: `e`nter `p`osition 100x200, `p`ut `w`indow.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkofish%2Fxdoui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkofish%2Fxdoui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkofish%2Fxdoui/lists"}