{"id":21195577,"url":"https://github.com/slamko/spmn","last_synced_at":"2026-05-21T04:04:42.370Z","repository":{"id":37480047,"uuid":"479803096","full_name":"slamko/spmn","owner":"slamko","description":"Command line patch manager for suckless software","archived":false,"fork":false,"pushed_at":"2022-08-05T16:58:47.000Z","size":210,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-21T14:15:36.801Z","etag":null,"topics":["apply","command-line","download","interactive","package-manager","patches","search","suckless-software","terminal","view"],"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/slamko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-09T17:52:13.000Z","updated_at":"2024-05-22T15:13:19.000Z","dependencies_parsed_at":"2022-07-15T00:00:45.864Z","dependency_job_id":null,"html_url":"https://github.com/slamko/spmn","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fspmn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fspmn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fspmn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fspmn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slamko","download_url":"https://codeload.github.com/slamko/spmn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243652652,"owners_count":20325597,"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":["apply","command-line","download","interactive","package-manager","patches","search","suckless-software","terminal","view"],"created_at":"2024-11-20T19:28:54.723Z","updated_at":"2026-05-21T04:04:37.329Z","avatar_url":"https://github.com/slamko.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Suckless Patch Manager\n---\n\n### Why\n\nSuckless software is starting to gain some popularity nowadays in Linux community. And, sadly, I think that their website design does not correspond to the popularity of the project. It is so suckless that it consists of markdown files and of course doesn't have any kind of search system. So in order to patch dwm, for example, you should walk through the list of more than 250 patches (this number only grows!) and find the one you want...  \n\nSo initially this project intended to be a command line tool for searching patches on suckless.org. However later on ```spmn``` got some additional functionality like downloading applying patches. It may sound like ```spmn``` now violates suckless principals, but in fact it is quite simple: it just operates on a local clone of suckless.org page, so downloading a patch literally means copying the file, viewing a patch means printing the file contents and so on...\n\n---\n\n### Installation \n```spmn``` is currently packaged for Debian and Void Linux.  \nYou can find binary packages with corresponding SHA sums in the [Releases section](https://github.com/slamko/spmn/releases).  \nIt is also [available in AUR](https://aur.archlinux.org/packages/spmn) for Arch-based distros.  \n\nOtherwise you can easily compile it from source:\n\n```sh\ngit clone https://github.com/slamko/spmn.git spmn \u0026\u0026\ncd spmn \u0026\u0026\nmake \u0026\u0026\nmake install\n```\n\n\n### Using Spmn\nJust after installing to start using ```spmn``` you should sync with suckless.org repo:\n```shell\nspmn sync\n```\n\nExample for searching the patch and applying it:\n\n![spmn-aur](https://user-images.githubusercontent.com/72746829/182939782-f62ab3fe-c6a1-464e-9f42-42c0a586d720.png)\n\nThere is really not much more to say about the usage. All the commands are pretty intuitive with at most of one command line option:\n```\n   Usage:\n\t  spmn [command] [args] [options]\n\t  Commands:\n\t    search \u003ctool\u003e [keywords] - search a patch for a \u003ctool\u003e with given [keywords] (default command).         \n\t    load   \u003ctool\u003e \u003cpatch\u003e    - download patch for given \u003ctool\u003e with \u003cpatch\u003e name.\n\t    open   \u003ctool\u003e \u003cpatch\u003e    - show full description for a \u003cpatch\u003e of specified \u003ctool\u003e.           \n\t    apply  \u003ctool\u003e \u003cpatch\u003e    - download and apply the \u003cpatch\u003e for a given \u003ctool\u003e.\n\t    sync                     - synchonize local patches repository.\n      \n\t    help    (--help/-h)    - to see this page.\n\t    version (--version/-v) - to get version info.\n\t\t\t\n\t  Options:\n\t    open: \n\t      -b:  show the web page on suckless.org for given patch in browser.\n\t    load: \n\t      -a:  load and apply patch at once (the same as spmn apply).\n\t    search: \n\t      -f:  show patch description for each patch found.\n\t    apply: \n\t      -f:  apply the patch directly from given file.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamko%2Fspmn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslamko%2Fspmn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamko%2Fspmn/lists"}