{"id":23392722,"url":"https://github.com/chrsm/ghettowm","last_synced_at":"2025-10-29T14:30:47.606Z","repository":{"id":57598873,"uuid":"186551830","full_name":"chrsm/ghettowm","owner":"chrsm","description":"Ghetto Window Manager for Windows.","archived":false,"fork":false,"pushed_at":"2020-02-25T00:20:06.000Z","size":31,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-22T05:14:56.045Z","etag":null,"topics":["desktop-manager","virtual-desktop","virtual-desktops","virtualdesktop","win10","window-manager","windows","windows-10"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrsm.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-05-14T05:37:38.000Z","updated_at":"2024-02-19T23:42:24.000Z","dependencies_parsed_at":"2022-09-26T19:53:23.739Z","dependency_job_id":null,"html_url":"https://github.com/chrsm/ghettowm","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrsm%2Fghettowm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrsm%2Fghettowm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrsm%2Fghettowm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrsm%2Fghettowm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrsm","download_url":"https://codeload.github.com/chrsm/ghettowm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238837822,"owners_count":19539079,"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":["desktop-manager","virtual-desktop","virtual-desktops","virtualdesktop","win10","window-manager","windows","windows-10"],"created_at":"2024-12-22T05:14:58.920Z","updated_at":"2025-10-29T14:30:47.292Z","avatar_url":"https://github.com/chrsm.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"INACTIVE\n========\n\nI am no longer working on this project. I only use Windows via KVM now and do\nnot have a need for this. I may revisit this project in the future but I do\nnot currently have the time.\n\nFor those looking for a tiling desktop manager for Windows, I recommend:\n\n- [HashTWM](https://github.com/ZaneA/HashTWM)\n- [bug.n](https://github.com/fuhsjr00/bug.n)\n- [math0ne's tiling wm](https://github.com/math0ne/windows-tiling-window-manager)\n\nHashTWM is native (written in C), while bug.n and math0ne's are both AutoHotKey.\nI don't think any of them are designed to work with virtual desktops,\nunfortunately.\n\n\nghettowm\n========\n\n[![CircleCI](https://circleci.com/gh/chrsm/ghettowm.svg?style=svg)](https://circleci.com/gh/chrsm/ghettowm)\n\nThis is a work-in-progress ghetto window manager for Windows. I miss i3.\n\nghettowm plugs in to Windows 10's native virtual desktop support by way of\nVirtualDesktopAccessor, rather than keeping track of per-desktop windows\nand hiding/unhiding them as it did initially.\n\nThe benefit with using the IVirtualDesktopManager is that in the event\nof an issue with ghettowm, your setup is still running 100% fine.\n\nThis may present some issues in the future as IVirtualDesktopManager has\nalmost no functionality - the useful stuff is in IVirtualDesktopManagerInternal,\nwhich is undocumented and likely to change. As such, ghettowm is completely\ntied to VirtualDesktopAccessor.\n\nBuilding\n========\n\n`GOOS=windows go build -ldflags -H=windowsgui`\n\nAlternatively, you can download one of the [releases](https://github.com/chrsm/ghettowm/releases)\n\nPlans\n=====\n\nAs of `42263c`, configuration is controlled by a lua file (`ghetto.lua`).\nKeybinds and their handlers can be registered in code!\n\nIn the near future, I want to:\n\n- Support pinning of windows\n- Support moving windows between desktops\n- Support defining layouts/tiling per desktop\n\nAs of `a009caa`, WINKEY as a meta key works.\nHowever, this breaks ALT/SHIFT or key combos with more than one other key.\n\nI plan to reimplement hotkeys asap, but frankly everything here needs a bit of\ncleanup so perhaps I will spend some time refactoring.\n\nKnown Issues\n============\n\n- Likely various race conditions\n- WINKEY meta works, but now nothing else does ;)\n\nExample Configuration\n=====================\n\n```\n-- ghettowm config\nlocal bit32 = require('bit32')\nlocal windows = require('windows')\nlocal ghetto_util = require('ghetto_util')\n\nlocal modkey = bit32.bor(ghetto_util.get_mod('Alt'), ghetto_util.get_mod('NoRepeat'))\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('LeftArrow'), function()\n  ghettowm:SwitchDesktopPrev()\nend)\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('RightArrow'), function()\n  ghettowm:SwitchDesktopNext()\nend)\n\nghettowm:RegisterHotkey(bit32.bor(modkey, ghetto_util.get_mod('Control')), ghetto_util.get_key('Q'), function()\n  ghettowm:Quit()\nend)\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('One'), function()\n  ghettowm:SwitchDesktop(0)\nend)\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('Two'), function()\n  ghettowm:SwitchDesktop(1)\nend)\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('H'), function()\n  ghettowm:NextWindow()\nend)\n\nghettowm:RegisterHotkey(modkey, ghetto_util.get_key('L'), function()\n  ghettowm:PrevWindow()\nend)\n```\n\nCredits\n=======\n\n[Ciantic](https://github.com/Ciantic) - [VirtualDesktopAccessor](https://github.com/Ciantic/VirtualDesktopAccessor)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrsm%2Fghettowm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrsm%2Fghettowm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrsm%2Fghettowm/lists"}