{"id":13961444,"url":"https://github.com/thisisparker/cursewords","last_synced_at":"2025-04-06T02:07:52.601Z","repository":{"id":46789220,"uuid":"166722213","full_name":"thisisparker/cursewords","owner":"thisisparker","description":":pencil: Terminal-based crossword puzzle solving interface","archived":false,"fork":false,"pushed_at":"2021-09-25T20:25:30.000Z","size":463,"stargazers_count":257,"open_issues_count":22,"forks_count":32,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-30T01:13:19.112Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thisisparker.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":"2019-01-20T23:52:09.000Z","updated_at":"2025-03-19T23:51:28.000Z","dependencies_parsed_at":"2022-09-10T11:01:33.621Z","dependency_job_id":null,"html_url":"https://github.com/thisisparker/cursewords","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisparker%2Fcursewords","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisparker%2Fcursewords/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisparker%2Fcursewords/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisparker%2Fcursewords/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thisisparker","download_url":"https://codeload.github.com/thisisparker/cursewords/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423513,"owners_count":20936626,"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":[],"created_at":"2024-08-08T17:01:08.589Z","updated_at":"2025-04-06T02:07:52.338Z","avatar_url":"https://github.com/thisisparker.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# cursewords\n\n`cursewords` is a \"graphical\" command line program for solving crossword puzzles in the terminal. You can use it to open, solve, and save puzzle files in the popular AcrossLite .puz format.\n\n\u003cimg src=\"https://raw.githubusercontent.com/thisisparker/cursewords/master/demo.gif\" width=450px\u003e\n\n## Installation\n\n`cursewords` is only compatible with `python3`, and can be installed through `pip`. If you don't know what that means, the best command is probably:\n\n```bash\npip3 install cursewords\n```\n\nYou should then be ready to go. You can then use  `cursewords` to open `.puz` files directly:\n\n```\ncursewords todaysnyt.puz\n```\n\n`cursewords` has been tested to work on Linux, Mac, and Windows computers.\n\n## Usage\n\nControls are printed in a panel at the bottom of the screen. Note that (for now) `cursewords` is not very accommodating of changes in window size, so you may have to quit and re-open if you need to resize your terminal.\n\n### Navigation\n\nIf you've used a program to solve crossword puzzles, navigation should be pretty intuitive. `tab` and `shift+tab` are the workhorses for navigation between blanks. Arrow keys will navigate the grid according to the direction of the cursor, and `shift+arrow` will move through words perpendicular to the cursor. `page up` and `page down` (on Mac, `Fn+` up/down arrow keys) jump between words without considering blank spaces. `ctrl+g`, followed by a number, will jump directly to the space with that number.\n\nIf you need some help, `ctrl+c` will check the current square, word, or entire puzzle for errors, and `ctrl+r` will reveal answers (subject to the same scoping options). To clear all entries on the puzzle, use `ctrl+x`, and to reset the puzzle to its original state (resetting the timer and removing any stored information about hints and corrections), use `ctrl+z`.\n\nTo open a puzzle in `downs-only` mode, where only the down clues are visible, use the `--downs-only` flag when opening the file on the command line.\n\n### Print mode\n\nIf `cursewords` is not running in an interactive terminal (because its output is being piped to another command or redirected to a file) or if you pass the `--print` flag directly, it will print a formatted grid and list of clues to stdout and quit. The output of that command can be modified with the following flags:\n\n* `--blank` ensures the grid is unfilled, even if you've saved solving progress\n* `--solution` prints the filled grid\n* `--width INT` caps the program output at INT characters wide. (If this flag isn't passed at runtime, `cursewords` will attempt to pick a reasonable output size. In many cases that will be 92 characters or the width of the puzzle.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisisparker%2Fcursewords","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthisisparker%2Fcursewords","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisisparker%2Fcursewords/lists"}