{"id":377437,"url":"https://github.com/xyproto/windykeys","last_synced_at":"2026-07-23T04:30:29.497Z","repository":{"id":290075959,"uuid":"973299605","full_name":"xyproto/windykeys","owner":"xyproto","description":"Fart keyboard for macOS and Linux. Inspired by Monty Python's Complete Waste of Time from the 90s.","archived":false,"fork":false,"pushed_at":"2025-04-27T18:05:51.000Z","size":2508,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-24T02:46:33.244Z","etag":null,"topics":["fart","joke-program","keyboard","linux","macos","silly"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xyproto.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-04-26T17:33:32.000Z","updated_at":"2026-01-12T12:46:01.000Z","dependencies_parsed_at":"2025-04-27T19:31:48.195Z","dependency_job_id":null,"html_url":"https://github.com/xyproto/windykeys","commit_stats":null,"previous_names":["xyproto/fartkeyboard","xyproto/windykeys"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/xyproto/windykeys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xyproto","download_url":"https://codeload.github.com/xyproto/windykeys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35313756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"owner":{"login":"xyproto","name":"Alexander F. Rødseth","uuid":"52813","kind":"user","description":"Software Developer, Arch Linux package maintainer, Go/Python/C++/C developer and open source enthusiast. I enjoy playing the game of Go as well.","email":"","website":"https://arodseth.com/","location":"Oslo","twitter":"xyproto","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52813?v=4","repositories_count":537,"last_synced_at":"2024-05-01T10:29:56.326Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/xyproto","funding_links":["https://github.com/sponsors/xyproto"],"total_stars":6693,"followers":497,"following":301,"created_at":"2022-11-02T19:34:39.845Z","updated_at":"2024-05-01T10:31:30.942Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xyproto","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xyproto/repositories"},"packages":[],"commits":{"id":9837316,"full_name":"xyproto/windykeys","default_branch":"master","total_commits":null,"total_committers":null,"total_bot_commits":null,"total_bot_committers":null,"mean_commits":null,"dds":null,"past_year_total_commits":null,"past_year_total_committers":null,"past_year_total_bot_commits":null,"past_year_total_bot_committers":null,"past_year_mean_commits":null,"past_year_dds":null,"last_synced_at":null,"last_synced_commit":null,"created_at":"2025-05-07T11:25:18.807Z","updated_at":"2025-05-07T11:25:18.807Z","committers":[],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-09T00:00:10.131Z","repositories_count":6291004,"commits_count":865432176,"contributors_count":35226094,"owners_count":1182683,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues":{"table":{"full_name":"xyproto/windykeys","html_url":"https://github.com/xyproto/windykeys","last_synced_at":"2025-05-07T11:25:20.599Z","status":null,"issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2025-05-07T11:25:19.243Z","updated_at":"2025-05-07T11:25:20.599Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/xyproto%2Fwindykeys/issues","issue_labels_count":{"table":{}},"pull_request_labels_count":{"table":{}},"issue_author_associations_count":{"table":{}},"pull_request_author_associations_count":{"table":{}},"issue_authors":{"table":{}},"pull_request_authors":{"table":{}},"host":{"table":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-09T00:00:19.777Z","repositories_count":14864315,"issues_count":32346175,"pull_requests_count":106362407,"authors_count":11340069,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"}},"past_year_issue_labels_count":{"table":{}},"past_year_pull_request_labels_count":{"table":{}},"past_year_issue_author_associations_count":{"table":{}},"past_year_pull_request_author_associations_count":{"table":{}},"past_year_issue_authors":{"table":{}},"past_year_pull_request_authors":{"table":{}},"maintainers":[],"active_maintainers":[]}},"events":{"total":{"PushEvent":3},"last_year":{}},"keywords":["fart","joke-program","keyboard","linux","macos","silly"],"dependencies":[{"ecosystem":"go","filepath":"go.mod","sha":null,"kind":"manifest","created_at":"2025-04-26T18:40:48.025Z","updated_at":"2025-04-26T18:40:48.025Z","repository_link":"https://github.com/xyproto/windykeys/blob/main/go.mod","dependencies":[{"id":22871472604,"package_name":"github.com/faiface/beep","ecosystem":"go","requirements":"v1.1.0","direct":true,"kind":"runtime","optional":false},{"id":22871473578,"package_name":"github.com/robotn/gohook","ecosystem":"go","requirements":"v0.42.0","direct":true,"kind":"runtime","optional":false},{"id":22871473587,"package_name":"github.com/hajimehoshi/go-mp3","ecosystem":"go","requirements":"v0.3.4","direct":true,"kind":"runtime","optional":false},{"id":22871473693,"package_name":"github.com/hajimehoshi/oto","ecosystem":"go","requirements":"v1.0.1","direct":true,"kind":"runtime","optional":false},{"id":22871473738,"package_name":"github.com/jfreymuth/oggvorbis","ecosystem":"go","requirements":"v1.0.5","direct":true,"kind":"runtime","optional":false},{"id":22871474062,"package_name":"github.com/jfreymuth/vorbis","ecosystem":"go","requirements":"v1.0.2","direct":true,"kind":"runtime","optional":false},{"id":22871474125,"package_name":"github.com/pkg/errors","ecosystem":"go","requirements":"v0.9.1","direct":true,"kind":"runtime","optional":false},{"id":22871474126,"package_name":"github.com/vcaesar/keycode","ecosystem":"go","requirements":"v0.10.1","direct":true,"kind":"runtime","optional":false},{"id":22871474127,"package_name":"golang.org/x/exp","ecosystem":"go","requirements":"v0.0.0-20190306152737-a1d7652674e8","direct":true,"kind":"runtime","optional":false},{"id":22871474128,"package_name":"golang.org/x/exp/shiny","ecosystem":"go","requirements":"v0.0.0-20250408133849-7e4ce0ab07d0","direct":true,"kind":"runtime","optional":false},{"id":22871474557,"package_name":"golang.org/x/image","ecosystem":"go","requirements":"v0.26.0","direct":true,"kind":"runtime","optional":false},{"id":22871474558,"package_name":"golang.org/x/mobile","ecosystem":"go","requirements":"v0.0.0-20250408133729-978277e7eaf7","direct":true,"kind":"runtime","optional":false},{"id":22871474559,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.32.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"go","filepath":"go.sum","sha":null,"kind":"lockfile","created_at":"2025-04-26T18:40:52.577Z","updated_at":"2025-04-26T18:40:52.577Z","repository_link":"https://github.com/xyproto/windykeys/blob/main/go.sum","dependencies":[{"id":22871474560,"package_name":"github.com/DATA-DOG/go-sqlmock","ecosystem":"go","requirements":"v1.3.3","direct":false,"kind":"runtime","optional":false},{"id":22871474561,"package_name":"github.com/d4l3k/messagediff","ecosystem":"go","requirements":"v1.2.2-0.20190829033028-7e0a312ae40b","direct":false,"kind":"runtime","optional":false},{"id":22871475780,"package_name":"github.com/faiface/beep","ecosystem":"go","requirements":"v1.1.0","direct":false,"kind":"runtime","optional":false},{"id":22871475781,"package_name":"github.com/gdamore/encoding","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871475782,"package_name":"github.com/gdamore/tcell","ecosystem":"go","requirements":"v1.3.0","direct":false,"kind":"runtime","optional":false},{"id":22871476443,"package_name":"github.com/go-audio/audio","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871476497,"package_name":"github.com/go-audio/riff","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871476498,"package_name":"github.com/go-audio/wav","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871476499,"package_name":"github.com/hajimehoshi/go-mp3","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":22871476500,"package_name":"github.com/hajimehoshi/go-mp3","ecosystem":"go","requirements":"v0.3.4","direct":false,"kind":"runtime","optional":false},{"id":22871476501,"package_name":"github.com/hajimehoshi/oto","ecosystem":"go","requirements":"v0.6.1","direct":false,"kind":"runtime","optional":false},{"id":22871476502,"package_name":"github.com/hajimehoshi/oto","ecosystem":"go","requirements":"v0.7.1","direct":false,"kind":"runtime","optional":false},{"id":22871476503,"package_name":"github.com/hajimehoshi/oto","ecosystem":"go","requirements":"v1.0.1","direct":false,"kind":"runtime","optional":false},{"id":22871476504,"package_name":"github.com/hajimehoshi/oto/v2","ecosystem":"go","requirements":"v2.3.1","direct":false,"kind":"runtime","optional":false},{"id":22871476766,"package_name":"github.com/icza/bitio","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871476806,"package_name":"github.com/icza/mighty","ecosystem":"go","requirements":"v0.0.0-20180919140131-cfd07d671de6","direct":false,"kind":"runtime","optional":false},{"id":22871477197,"package_name":"github.com/jfreymuth/oggvorbis","ecosystem":"go","requirements":"v1.0.1","direct":false,"kind":"runtime","optional":false},{"id":22871477198,"package_name":"github.com/jfreymuth/oggvorbis","ecosystem":"go","requirements":"v1.0.5","direct":false,"kind":"runtime","optional":false},{"id":22871477199,"package_name":"github.com/jfreymuth/vorbis","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":22871477200,"package_name":"github.com/jfreymuth/vorbis","ecosystem":"go","requirements":"v1.0.2","direct":false,"kind":"runtime","optional":false},{"id":22871477201,"package_name":"github.com/lucasb-eyer/go-colorful","ecosystem":"go","requirements":"v1.0.2","direct":false,"kind":"runtime","optional":false},{"id":22871477202,"package_name":"github.com/mattn/go-runewidth","ecosystem":"go","requirements":"v0.0.4","direct":false,"kind":"runtime","optional":false},{"id":22871477203,"package_name":"github.com/mewkiz/flac","ecosystem":"go","requirements":"v1.0.7","direct":false,"kind":"runtime","optional":false},{"id":22871479184,"package_name":"github.com/mewkiz/pkg","ecosystem":"go","requirements":"v0.0.0-20190919212034-518ade7978e2","direct":false,"kind":"runtime","optional":false},{"id":22871480501,"package_name":"github.com/pkg/errors","ecosystem":"go","requirements":"v0.8.1","direct":false,"kind":"runtime","optional":false},{"id":22871480504,"package_name":"github.com/pkg/errors","ecosystem":"go","requirements":"v0.9.1","direct":false,"kind":"runtime","optional":false},{"id":22871480507,"package_name":"github.com/robotn/gohook","ecosystem":"go","requirements":"v0.42.0","direct":false,"kind":"runtime","optional":false},{"id":22871480509,"package_name":"github.com/vcaesar/keycode","ecosystem":"go","requirements":"v0.10.1","direct":false,"kind":"runtime","optional":false},{"id":22871480513,"package_name":"github.com/vcaesar/tt","ecosystem":"go","requirements":"v0.20.1","direct":false,"kind":"runtime","optional":false},{"id":22871481752,"package_name":"golang.org/x/exp","ecosystem":"go","requirements":"v0.0.0-20190306152737-a1d7652674e8","direct":false,"kind":"runtime","optional":false},{"id":22871481753,"package_name":"golang.org/x/exp/shiny","ecosystem":"go","requirements":"v0.0.0-20250408133849-7e4ce0ab07d0","direct":false,"kind":"runtime","optional":false},{"id":22871481754,"package_name":"golang.org/x/image","ecosystem":"go","requirements":"v0.0.0-20190220214146-31aff87c08e9","direct":false,"kind":"runtime","optional":false},{"id":22871481755,"package_name":"golang.org/x/image","ecosystem":"go","requirements":"v0.0.0-20190227222117-0694c2d4d067","direct":false,"kind":"runtime","optional":false},{"id":22871481756,"package_name":"golang.org/x/image","ecosystem":"go","requirements":"v0.26.0","direct":false,"kind":"runtime","optional":false},{"id":22871481757,"package_name":"golang.org/x/mobile","ecosystem":"go","requirements":"v0.0.0-20190415191353-3e0bab5405d6","direct":false,"kind":"runtime","optional":false},{"id":22871481758,"package_name":"golang.org/x/mobile","ecosystem":"go","requirements":"v0.0.0-20250408133729-978277e7eaf7","direct":false,"kind":"runtime","optional":false},{"id":22871481759,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190213061140-3a22650c66bd","direct":false,"kind":"runtime","optional":false},{"id":22871481760,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20190312061237-fead79001313","direct":false,"kind":"runtime","optional":false},{"id":22871481761,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20190429190828-d89cdac9e872","direct":false,"kind":"runtime","optional":false},{"id":22871481762,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20190626150813-e07cf5db2756","direct":false,"kind":"runtime","optional":false},{"id":22871481763,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20220712014510-0a85c31ab51e","direct":false,"kind":"runtime","optional":false},{"id":22871481764,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.32.0","direct":false,"kind":"runtime","optional":false},{"id":22871481765,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2026-06-26T15:07:08.237Z","updated_at":"2026-07-23T04:30:29.497Z","avatar_url":"https://github.com/xyproto.png","language":"Go","codemeta":null,"publiccode":null,"project_url":"https://summary.ecosyste.ms/api/v1/projects/377437","html_url":"https://summary.ecosyste.ms/projects/377437"}