diff --git a/README.md b/README.md new file mode 100644 index 00000000..4a32d7b4 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# Overview + +![Screenshot](docs/img/alt-tab-macos/3%20windows%20-%201%20line.png) + +`alt-tab-macos` brings the brilliant Windows 10 window switcher (activated by pressing alt-tab) to macOS users.It lets the user switch between windows in a visual way. + +On macOS there is an app cycling shortcut which doesn't let you select between windows of an app, and there is Mission Control which doesn't let you navigate using the keyboard. + +# How to install + +* Compile using XCode or AppCode +* Run the `.app` + +# How to use + +* `control` + `tab` cycles through apps +* `control` + `shift` + `tab` cycles through apps in reverse +* Quick press-and-release will cycle through apps without showing any UI +* Holding `control` after pressing a cycle shortcut will show the UI +* Releasing `control` or clicking on a window will focus it + +# Screenshots + +![Screenshot](docs/img/alt-tab-macos/5%20windows%20-%202%20lines.png) + +![Screenshot](docs/img/alt-tab-macos/6%20windows%20-%202%20lines.png) + +![Screenshot](docs/img/alt-tab-macos/dark-background.png) + +# Features + +* Delay before showing the UI to avoid flashing (default 200ms) +* High quality thumbnails of all windows +* Background uses macOS vibrancy UX +* UI elements have a subtle shadow to ensure readability +* Window titles will truncate with an ellipsis if they don't fit +* Thumbnails have a maximum width and height to help visualize very long, tall, small, big windows +* Fast. There is no benchmark at the moment but energy was spent making sure the UI is responsive diff --git a/alt-tab-macos.xcodeproj/project.pbxproj b/alt-tab-macos.xcodeproj/project.pbxproj index a4966fc0..c913c50c 100644 --- a/alt-tab-macos.xcodeproj/project.pbxproj +++ b/alt-tab-macos.xcodeproj/project.pbxproj @@ -7,59 +7,69 @@ objects = { /* Begin PBXBuildFile section */ - D04BA0219AC4C1B8444B469F /* 4 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA996DB03B329C6B36A39 /* 4 windows - 1 line.jpg */; }; - D04BA1BEB40295C4DC25F637 /* 1 window - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA58701B5A47B6A2953E1 /* 1 window - 1 line.jpg */; }; + D04BA0B1D77CA1466BFC13BC /* 3 windows - 1 line - tall window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BAD82F652C4ED5D8BF7AE /* 3 windows - 1 line - tall window.jpg */; }; + D04BA183207E20AC28BF4F20 /* dark-background.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BA8DDB96B0A60C3394351 /* dark-background.png */; }; D04BA20D4A240843293B3B52 /* Cell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA56355579F78776E6D51 /* Cell.swift */; }; - D04BA235E34B5120E2F75F34 /* 3 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA04504BB9802F6E0B889 /* 3 windows - 1 line.jpg */; }; + D04BA21F728100990BA0D007 /* 6 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA2C7B51F68651B3C60E2 /* 6 windows - 1 line.jpg */; }; D04BA278D9EFA568C8D18A4C /* WindowManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAD1BED44EAEB77FED8A4 /* WindowManager.swift */; }; D04BA3261C7DA5F48310E654 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA90C6C36DB1D65BC2B66 /* Application.swift */; }; + D04BA35E037C9E1C3B26F296 /* 5 windows - 2 lines.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BAF076A30A1BAFEDBEA66 /* 5 windows - 2 lines.jpg */; }; D04BA3999A3D6A308EA41039 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = D04BAD40CE2D3A8AAC3819D0 /* .gitignore */; }; - D04BA486DF30D7169D4B69BA /* 3 windows - 1 line - wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA8298AF4D8ED7827ACDC /* 3 windows - 1 line - wide window.jpg */; }; D04BA4D8D74841AEC2601C80 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D04BA262E9A663B3A85A2A95 /* Assets.xcassets */; }; D04BA57A871B7269BEBAFF84 /* Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA35456DA0DDA74F9687E /* Keyboard.swift */; }; - D04BA5CB7B1B84BDC99E5C3C /* 7 windows - 2 lines - tall window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA041E420F065EF8DC9F4 /* 7 windows - 2 lines - tall window.jpg */; }; - D04BA5F23B9618C2C526DA1E /* 5 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA4AF59F978749D697493 /* 5 windows - 1 line.jpg */; }; - D04BA7A29152DDF0BDCAC4AF /* 7 windows - 2 lines - wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BADF2A78C91437E1E4C42 /* 7 windows - 2 lines - wide window.jpg */; }; + D04BA6C8D3667C49F97C06AD /* 14 windows - 3 lines.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BAB6652494D7575057E86 /* 14 windows - 3 lines.jpg */; }; + D04BA6D15018C5164724C0D2 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = D04BA0E1C5DBC07108AC2F54 /* README.md */; }; + D04BA7076AC73E719B733352 /* 7 windows - 2 lines - extra wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BAE1243C9B4BE3ED1B524 /* 7 windows - 2 lines - extra wide window.jpg */; }; D04BA86F2E687F573F920D93 /* HighInterpolationImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAE70D6AFD2E52A71701D /* HighInterpolationImageView.swift */; }; - D04BA8877A8149B1439B1F04 /* 5 windows - 2 lines.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA5349996324809EA7208 /* 5 windows - 2 lines.jpg */; }; - D04BA958877CFEC80F5E883A /* 2 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BADB4ABF73F979B9FC0BA /* 2 windows - 1 line.jpg */; }; D04BA960DDD1D32A3019C835 /* CollectionViewCenterFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA3202A2C22C347E849B3 /* CollectionViewCenterFlowLayout.swift */; }; - D04BAAACE304CA2BCB1DC1BE /* too many windows - 4 lines - paginated.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BAC503A122CC0068BB84E /* too many windows - 4 lines - paginated.jpg */; }; - D04BAAB78E71A923B63A9DFF /* 14 windows - 3 lines.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA75BFFC94D1E33047688 /* 14 windows - 3 lines.jpg */; }; - D04BAB37A8033F8D4309889F /* 3 windows - 1 line - tall window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA685BCDB60B9FEA57438 /* 3 windows - 1 line - tall window.jpg */; }; - D04BAB8555DC582A5BA5F8EE /* 6 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA9EBCA307524DBE48DCF /* 6 windows - 1 line.jpg */; }; - D04BAE3835B9FBA218664C74 /* 7 windows - 2 lines - extra wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA9B41D7EA9F1B6290C91 /* 7 windows - 2 lines - extra wide window.jpg */; }; + D04BA9A1B237364C419C3A3F /* 5 windows - 2 lines.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BA5E4A1745A481CEC1EBA /* 5 windows - 2 lines.png */; }; + D04BAA816B0EE923C6C211DD /* 2 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA9EF65B2E7AF9E3ADCA3 /* 2 windows - 1 line.jpg */; }; + D04BAAC63A3C077B1DB155B2 /* 5 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA5ABFA5457A86536E2E4 /* 5 windows - 1 line.jpg */; }; + D04BAB25494E5FF86D4C2437 /* 7 windows - 2 lines - wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA0CE87BE264C52987ED1 /* 7 windows - 2 lines - wide window.jpg */; }; + D04BABF815E9780EAF941E88 /* 3 windows - 1 line.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BA27584274BC8C2D9809F /* 3 windows - 1 line.png */; }; + D04BACB58F00CAC62A46E662 /* 6 windows - 2 lines.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BA5E9CB56E27CC907F07D /* 6 windows - 2 lines.png */; }; + D04BACF6FFC99DDD990E0694 /* 3 windows - 1 line - wide window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA51D43775E57CE91154A /* 3 windows - 1 line - wide window.jpg */; }; + D04BAD4AF98BD62155749E88 /* 1 window - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA1FC9022590D7AA02486 /* 1 window - 1 line.jpg */; }; + D04BAD9763C9B59FB46B4F9B /* 4 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA0F5EB832B8E142B654B /* 4 windows - 1 line.jpg */; }; + D04BADD21FFEE61E926E897F /* too many windows - 4 lines - paginated.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA107C8B8FE7FF8536606 /* too many windows - 4 lines - paginated.jpg */; }; D04BAE5CC40654B1F96E8DE9 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = D04BA7B6AAB0812631BBC7A2 /* Info.plist */; }; D04BAEF78503D7A2CEFB9E9E /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAA44C837F3A67403B9DB /* main.swift */; }; + D04BAFACEE2C33E66B93664A /* 3 windows - 1 line.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA32F25860B686DFE818A /* 3 windows - 1 line.jpg */; }; + D04BAFE95F19AD93955904DE /* 7 windows - 2 lines - tall window.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D04BA4F23325560BC0BCDDB7 /* 7 windows - 2 lines - tall window.jpg */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - D04BA041E420F065EF8DC9F4 /* 7 windows - 2 lines - tall window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - tall window.jpg"; sourceTree = ""; }; - D04BA04504BB9802F6E0B889 /* 3 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line.jpg"; sourceTree = ""; }; + D04BA0CE87BE264C52987ED1 /* 7 windows - 2 lines - wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - wide window.jpg"; sourceTree = ""; }; + D04BA0E1C5DBC07108AC2F54 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + D04BA0F5EB832B8E142B654B /* 4 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "4 windows - 1 line.jpg"; sourceTree = ""; }; + D04BA107C8B8FE7FF8536606 /* too many windows - 4 lines - paginated.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "too many windows - 4 lines - paginated.jpg"; sourceTree = ""; }; + D04BA1FC9022590D7AA02486 /* 1 window - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "1 window - 1 line.jpg"; sourceTree = ""; }; D04BA262E9A663B3A85A2A95 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + D04BA27584274BC8C2D9809F /* 3 windows - 1 line.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "3 windows - 1 line.png"; sourceTree = ""; }; + D04BA2C7B51F68651B3C60E2 /* 6 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "6 windows - 1 line.jpg"; sourceTree = ""; }; D04BA3202A2C22C347E849B3 /* CollectionViewCenterFlowLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCenterFlowLayout.swift; sourceTree = ""; }; + D04BA32F25860B686DFE818A /* 3 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line.jpg"; sourceTree = ""; }; D04BA35456DA0DDA74F9687E /* Keyboard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keyboard.swift; sourceTree = ""; }; - D04BA4AF59F978749D697493 /* 5 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "5 windows - 1 line.jpg"; sourceTree = ""; }; - D04BA5349996324809EA7208 /* 5 windows - 2 lines.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "5 windows - 2 lines.jpg"; sourceTree = ""; }; + D04BA4F23325560BC0BCDDB7 /* 7 windows - 2 lines - tall window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - tall window.jpg"; sourceTree = ""; }; + D04BA51D43775E57CE91154A /* 3 windows - 1 line - wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line - wide window.jpg"; sourceTree = ""; }; D04BA56355579F78776E6D51 /* Cell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cell.swift; sourceTree = ""; }; - D04BA58701B5A47B6A2953E1 /* 1 window - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "1 window - 1 line.jpg"; sourceTree = ""; }; - D04BA685BCDB60B9FEA57438 /* 3 windows - 1 line - tall window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line - tall window.jpg"; sourceTree = ""; }; - D04BA75BFFC94D1E33047688 /* 14 windows - 3 lines.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "14 windows - 3 lines.jpg"; sourceTree = ""; }; + D04BA5ABFA5457A86536E2E4 /* 5 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "5 windows - 1 line.jpg"; sourceTree = ""; }; + D04BA5E4A1745A481CEC1EBA /* 5 windows - 2 lines.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "5 windows - 2 lines.png"; sourceTree = ""; }; + D04BA5E9CB56E27CC907F07D /* 6 windows - 2 lines.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "6 windows - 2 lines.png"; sourceTree = ""; }; D04BA7B6AAB0812631BBC7A2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.info; path = Info.plist; sourceTree = ""; }; - D04BA8298AF4D8ED7827ACDC /* 3 windows - 1 line - wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line - wide window.jpg"; sourceTree = ""; }; D04BA82F792DF53958D92572 /* alt-tab-macos.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "alt-tab-macos.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + D04BA8DDB96B0A60C3394351 /* dark-background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "dark-background.png"; sourceTree = ""; }; D04BA90C6C36DB1D65BC2B66 /* Application.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; - D04BA996DB03B329C6B36A39 /* 4 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "4 windows - 1 line.jpg"; sourceTree = ""; }; - D04BA9B41D7EA9F1B6290C91 /* 7 windows - 2 lines - extra wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - extra wide window.jpg"; sourceTree = ""; }; - D04BA9EBCA307524DBE48DCF /* 6 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "6 windows - 1 line.jpg"; sourceTree = ""; }; + D04BA9EF65B2E7AF9E3ADCA3 /* 2 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "2 windows - 1 line.jpg"; sourceTree = ""; }; D04BAA44C837F3A67403B9DB /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; - D04BAC503A122CC0068BB84E /* too many windows - 4 lines - paginated.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "too many windows - 4 lines - paginated.jpg"; sourceTree = ""; }; + D04BAB6652494D7575057E86 /* 14 windows - 3 lines.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "14 windows - 3 lines.jpg"; sourceTree = ""; }; D04BAD1BED44EAEB77FED8A4 /* WindowManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WindowManager.swift; sourceTree = ""; }; D04BAD1C9F215BCCD3B620AC /* alt_tab_macos.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = alt_tab_macos.entitlements; sourceTree = ""; }; D04BAD40CE2D3A8AAC3819D0 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = file.gitignore; path = .gitignore; sourceTree = ""; }; - D04BADB4ABF73F979B9FC0BA /* 2 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "2 windows - 1 line.jpg"; sourceTree = ""; }; - D04BADF2A78C91437E1E4C42 /* 7 windows - 2 lines - wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - wide window.jpg"; sourceTree = ""; }; + D04BAD82F652C4ED5D8BF7AE /* 3 windows - 1 line - tall window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "3 windows - 1 line - tall window.jpg"; sourceTree = ""; }; + D04BAE1243C9B4BE3ED1B524 /* 7 windows - 2 lines - extra wide window.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "7 windows - 2 lines - extra wide window.jpg"; sourceTree = ""; }; D04BAE70D6AFD2E52A71701D /* HighInterpolationImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HighInterpolationImageView.swift; sourceTree = ""; }; + D04BAF076A30A1BAFEDBEA66 /* 5 windows - 2 lines.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "5 windows - 2 lines.jpg"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -73,20 +83,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - D04BA036CA8BDCF4608909C4 /* docs */ = { - isa = PBXGroup; - children = ( - D04BA9280DD11C32934568FC /* img */, - ); - path = docs; - sourceTree = ""; - }; D04BA1463D2A17038222BB84 = { isa = PBXGroup; children = ( D04BA1A461BBB5A9BE15E015 /* Products */, D04BAD48B702C4B1DC543557 /* alt-tab-macos */, D04BAD40CE2D3A8AAC3819D0 /* .gitignore */, + D04BA0E1C5DBC07108AC2F54 /* README.md */, + D04BAD1F5F5D4427DEA16682 /* docs */, ); sourceTree = ""; }; @@ -98,25 +102,36 @@ name = Products; sourceTree = ""; }; - D04BA9280DD11C32934568FC /* img */ = { + D04BA502DEE6E54E9987BAB7 /* windows-10 */ = { isa = PBXGroup; children = ( - D04BA58701B5A47B6A2953E1 /* 1 window - 1 line.jpg */, - D04BADB4ABF73F979B9FC0BA /* 2 windows - 1 line.jpg */, - D04BA04504BB9802F6E0B889 /* 3 windows - 1 line.jpg */, - D04BA996DB03B329C6B36A39 /* 4 windows - 1 line.jpg */, - D04BA4AF59F978749D697493 /* 5 windows - 1 line.jpg */, - D04BA9EBCA307524DBE48DCF /* 6 windows - 1 line.jpg */, - D04BA5349996324809EA7208 /* 5 windows - 2 lines.jpg */, - D04BA75BFFC94D1E33047688 /* 14 windows - 3 lines.jpg */, - D04BA685BCDB60B9FEA57438 /* 3 windows - 1 line - tall window.jpg */, - D04BA8298AF4D8ED7827ACDC /* 3 windows - 1 line - wide window.jpg */, - D04BA041E420F065EF8DC9F4 /* 7 windows - 2 lines - tall window.jpg */, - D04BADF2A78C91437E1E4C42 /* 7 windows - 2 lines - wide window.jpg */, - D04BAC503A122CC0068BB84E /* too many windows - 4 lines - paginated.jpg */, - D04BA9B41D7EA9F1B6290C91 /* 7 windows - 2 lines - extra wide window.jpg */, + D04BA32F25860B686DFE818A /* 3 windows - 1 line.jpg */, + D04BAB6652494D7575057E86 /* 14 windows - 3 lines.jpg */, + D04BAD82F652C4ED5D8BF7AE /* 3 windows - 1 line - tall window.jpg */, + D04BA4F23325560BC0BCDDB7 /* 7 windows - 2 lines - tall window.jpg */, + D04BA2C7B51F68651B3C60E2 /* 6 windows - 1 line.jpg */, + D04BA107C8B8FE7FF8536606 /* too many windows - 4 lines - paginated.jpg */, + D04BA5ABFA5457A86536E2E4 /* 5 windows - 1 line.jpg */, + D04BA0F5EB832B8E142B654B /* 4 windows - 1 line.jpg */, + D04BA1FC9022590D7AA02486 /* 1 window - 1 line.jpg */, + D04BA9EF65B2E7AF9E3ADCA3 /* 2 windows - 1 line.jpg */, + D04BA51D43775E57CE91154A /* 3 windows - 1 line - wide window.jpg */, + D04BAF076A30A1BAFEDBEA66 /* 5 windows - 2 lines.jpg */, + D04BA0CE87BE264C52987ED1 /* 7 windows - 2 lines - wide window.jpg */, + D04BAE1243C9B4BE3ED1B524 /* 7 windows - 2 lines - extra wide window.jpg */, ); - path = img; + path = "windows-10"; + sourceTree = ""; + }; + D04BA63877FC8FB11C43C3D2 /* alt-tab-macos */ = { + isa = PBXGroup; + children = ( + D04BA8DDB96B0A60C3394351 /* dark-background.png */, + D04BA5E9CB56E27CC907F07D /* 6 windows - 2 lines.png */, + D04BA5E4A1745A481CEC1EBA /* 5 windows - 2 lines.png */, + D04BA27584274BC8C2D9809F /* 3 windows - 1 line.png */, + ); + path = "alt-tab-macos"; sourceTree = ""; }; D04BAA1C553891551B903DA7 /* logic */ = { @@ -139,6 +154,23 @@ path = ui; sourceTree = ""; }; + D04BAAB62DCBD7AF93B7EF89 /* img */ = { + isa = PBXGroup; + children = ( + D04BA502DEE6E54E9987BAB7 /* windows-10 */, + D04BA63877FC8FB11C43C3D2 /* alt-tab-macos */, + ); + path = img; + sourceTree = ""; + }; + D04BAD1F5F5D4427DEA16682 /* docs */ = { + isa = PBXGroup; + children = ( + D04BAAB62DCBD7AF93B7EF89 /* img */, + ); + path = docs; + sourceTree = ""; + }; D04BAD48B702C4B1DC543557 /* alt-tab-macos */ = { isa = PBXGroup; children = ( @@ -147,7 +179,6 @@ D04BAAA28315301A906DD201 /* ui */, D04BA7B6AAB0812631BBC7A2 /* Info.plist */, D04BAA44C837F3A67403B9DB /* main.swift */, - D04BA036CA8BDCF4608909C4 /* docs */, D04BAA1C553891551B903DA7 /* logic */, ); path = "alt-tab-macos"; @@ -205,21 +236,25 @@ files = ( D04BA4D8D74841AEC2601C80 /* Assets.xcassets in Resources */, D04BAE5CC40654B1F96E8DE9 /* Info.plist in Resources */, - D04BA1BEB40295C4DC25F637 /* 1 window - 1 line.jpg in Resources */, - D04BA958877CFEC80F5E883A /* 2 windows - 1 line.jpg in Resources */, - D04BA235E34B5120E2F75F34 /* 3 windows - 1 line.jpg in Resources */, - D04BA0219AC4C1B8444B469F /* 4 windows - 1 line.jpg in Resources */, - D04BA5F23B9618C2C526DA1E /* 5 windows - 1 line.jpg in Resources */, - D04BAB8555DC582A5BA5F8EE /* 6 windows - 1 line.jpg in Resources */, - D04BA8877A8149B1439B1F04 /* 5 windows - 2 lines.jpg in Resources */, - D04BAAB78E71A923B63A9DFF /* 14 windows - 3 lines.jpg in Resources */, - D04BAB37A8033F8D4309889F /* 3 windows - 1 line - tall window.jpg in Resources */, - D04BA486DF30D7169D4B69BA /* 3 windows - 1 line - wide window.jpg in Resources */, - D04BA5CB7B1B84BDC99E5C3C /* 7 windows - 2 lines - tall window.jpg in Resources */, - D04BA7A29152DDF0BDCAC4AF /* 7 windows - 2 lines - wide window.jpg in Resources */, - D04BAAACE304CA2BCB1DC1BE /* too many windows - 4 lines - paginated.jpg in Resources */, - D04BAE3835B9FBA218664C74 /* 7 windows - 2 lines - extra wide window.jpg in Resources */, D04BA3999A3D6A308EA41039 /* .gitignore in Resources */, + D04BAFACEE2C33E66B93664A /* 3 windows - 1 line.jpg in Resources */, + D04BA6C8D3667C49F97C06AD /* 14 windows - 3 lines.jpg in Resources */, + D04BA0B1D77CA1466BFC13BC /* 3 windows - 1 line - tall window.jpg in Resources */, + D04BAFE95F19AD93955904DE /* 7 windows - 2 lines - tall window.jpg in Resources */, + D04BA21F728100990BA0D007 /* 6 windows - 1 line.jpg in Resources */, + D04BADD21FFEE61E926E897F /* too many windows - 4 lines - paginated.jpg in Resources */, + D04BAAC63A3C077B1DB155B2 /* 5 windows - 1 line.jpg in Resources */, + D04BAD9763C9B59FB46B4F9B /* 4 windows - 1 line.jpg in Resources */, + D04BAD4AF98BD62155749E88 /* 1 window - 1 line.jpg in Resources */, + D04BAA816B0EE923C6C211DD /* 2 windows - 1 line.jpg in Resources */, + D04BACF6FFC99DDD990E0694 /* 3 windows - 1 line - wide window.jpg in Resources */, + D04BA35E037C9E1C3B26F296 /* 5 windows - 2 lines.jpg in Resources */, + D04BAB25494E5FF86D4C2437 /* 7 windows - 2 lines - wide window.jpg in Resources */, + D04BA7076AC73E719B733352 /* 7 windows - 2 lines - extra wide window.jpg in Resources */, + D04BA183207E20AC28BF4F20 /* dark-background.png in Resources */, + D04BACB58F00CAC62A46E662 /* 6 windows - 2 lines.png in Resources */, + D04BA9A1B237364C419C3A3F /* 5 windows - 2 lines.png in Resources */, + D04BABF815E9780EAF941E88 /* 3 windows - 1 line.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -237,6 +272,7 @@ D04BA57A871B7269BEBAFF84 /* Keyboard.swift in Sources */, D04BA278D9EFA568C8D18A4C /* WindowManager.swift in Sources */, D04BA3261C7DA5F48310E654 /* Application.swift in Sources */, + D04BA6D15018C5164724C0D2 /* README.md in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/alt-tab-macos/docs/img/1 window - 1 line.jpg b/alt-tab-macos/docs/img/1 window - 1 line.jpg deleted file mode 100644 index 87781eaf..00000000 Binary files a/alt-tab-macos/docs/img/1 window - 1 line.jpg and /dev/null differ diff --git a/alt-tab-macos/docs/img/2 windows - 1 line.jpg b/alt-tab-macos/docs/img/2 windows - 1 line.jpg deleted file mode 100644 index b1dc3bff..00000000 Binary files a/alt-tab-macos/docs/img/2 windows - 1 line.jpg and /dev/null differ diff --git a/alt-tab-macos/docs/img/3 windows - 1 line - wide window.jpg b/alt-tab-macos/docs/img/3 windows - 1 line - wide window.jpg deleted file mode 100644 index 3e864936..00000000 Binary files a/alt-tab-macos/docs/img/3 windows - 1 line - wide window.jpg and /dev/null differ diff --git a/alt-tab-macos/docs/img/3 windows - 1 line.jpg b/alt-tab-macos/docs/img/3 windows - 1 line.jpg deleted file mode 100644 index 51c82784..00000000 Binary files a/alt-tab-macos/docs/img/3 windows - 1 line.jpg and /dev/null differ diff --git a/alt-tab-macos/docs/img/7 windows - 2 lines - extra wide window.jpg b/alt-tab-macos/docs/img/7 windows - 2 lines - extra wide window.jpg deleted file mode 100644 index 4e236375..00000000 Binary files a/alt-tab-macos/docs/img/7 windows - 2 lines - extra wide window.jpg and /dev/null differ diff --git a/alt-tab-macos/docs/img/7 windows - 2 lines - wide window.jpg b/alt-tab-macos/docs/img/7 windows - 2 lines - wide window.jpg deleted file mode 100644 index cabe179b..00000000 Binary files a/alt-tab-macos/docs/img/7 windows - 2 lines - wide window.jpg and /dev/null differ diff --git a/docs/img/alt-tab-macos/3 windows - 1 line.png b/docs/img/alt-tab-macos/3 windows - 1 line.png new file mode 100644 index 00000000..39401cd6 Binary files /dev/null and b/docs/img/alt-tab-macos/3 windows - 1 line.png differ diff --git a/docs/img/alt-tab-macos/5 windows - 2 lines.png b/docs/img/alt-tab-macos/5 windows - 2 lines.png new file mode 100644 index 00000000..69f772f9 Binary files /dev/null and b/docs/img/alt-tab-macos/5 windows - 2 lines.png differ diff --git a/docs/img/alt-tab-macos/6 windows - 2 lines.png b/docs/img/alt-tab-macos/6 windows - 2 lines.png new file mode 100644 index 00000000..8b21b632 Binary files /dev/null and b/docs/img/alt-tab-macos/6 windows - 2 lines.png differ diff --git a/docs/img/alt-tab-macos/dark-background.png b/docs/img/alt-tab-macos/dark-background.png new file mode 100644 index 00000000..295c2557 Binary files /dev/null and b/docs/img/alt-tab-macos/dark-background.png differ diff --git a/docs/img/windows-10/1 window - 1 line.jpg b/docs/img/windows-10/1 window - 1 line.jpg new file mode 100644 index 00000000..bd6ecb01 Binary files /dev/null and b/docs/img/windows-10/1 window - 1 line.jpg differ diff --git a/alt-tab-macos/docs/img/14 windows - 3 lines.jpg b/docs/img/windows-10/14 windows - 3 lines.jpg similarity index 98% rename from alt-tab-macos/docs/img/14 windows - 3 lines.jpg rename to docs/img/windows-10/14 windows - 3 lines.jpg index 6b494845..eb094aa2 100644 Binary files a/alt-tab-macos/docs/img/14 windows - 3 lines.jpg and b/docs/img/windows-10/14 windows - 3 lines.jpg differ diff --git a/docs/img/windows-10/2 windows - 1 line.jpg b/docs/img/windows-10/2 windows - 1 line.jpg new file mode 100644 index 00000000..91493f32 Binary files /dev/null and b/docs/img/windows-10/2 windows - 1 line.jpg differ diff --git a/alt-tab-macos/docs/img/3 windows - 1 line - tall window.jpg b/docs/img/windows-10/3 windows - 1 line - tall window.jpg similarity index 98% rename from alt-tab-macos/docs/img/3 windows - 1 line - tall window.jpg rename to docs/img/windows-10/3 windows - 1 line - tall window.jpg index b361d18d..13f0ba6d 100644 Binary files a/alt-tab-macos/docs/img/3 windows - 1 line - tall window.jpg and b/docs/img/windows-10/3 windows - 1 line - tall window.jpg differ diff --git a/docs/img/windows-10/3 windows - 1 line - wide window.jpg b/docs/img/windows-10/3 windows - 1 line - wide window.jpg new file mode 100644 index 00000000..4ba52adc Binary files /dev/null and b/docs/img/windows-10/3 windows - 1 line - wide window.jpg differ diff --git a/docs/img/windows-10/3 windows - 1 line.jpg b/docs/img/windows-10/3 windows - 1 line.jpg new file mode 100644 index 00000000..88752d75 Binary files /dev/null and b/docs/img/windows-10/3 windows - 1 line.jpg differ diff --git a/alt-tab-macos/docs/img/4 windows - 1 line.jpg b/docs/img/windows-10/4 windows - 1 line.jpg similarity index 98% rename from alt-tab-macos/docs/img/4 windows - 1 line.jpg rename to docs/img/windows-10/4 windows - 1 line.jpg index 28b81cba..59ddaab0 100644 Binary files a/alt-tab-macos/docs/img/4 windows - 1 line.jpg and b/docs/img/windows-10/4 windows - 1 line.jpg differ diff --git a/alt-tab-macos/docs/img/5 windows - 1 line.jpg b/docs/img/windows-10/5 windows - 1 line.jpg similarity index 65% rename from alt-tab-macos/docs/img/5 windows - 1 line.jpg rename to docs/img/windows-10/5 windows - 1 line.jpg index 7af929db..1b0a97a7 100644 Binary files a/alt-tab-macos/docs/img/5 windows - 1 line.jpg and b/docs/img/windows-10/5 windows - 1 line.jpg differ diff --git a/alt-tab-macos/docs/img/5 windows - 2 lines.jpg b/docs/img/windows-10/5 windows - 2 lines.jpg similarity index 99% rename from alt-tab-macos/docs/img/5 windows - 2 lines.jpg rename to docs/img/windows-10/5 windows - 2 lines.jpg index dd3dd213..a8511e83 100644 Binary files a/alt-tab-macos/docs/img/5 windows - 2 lines.jpg and b/docs/img/windows-10/5 windows - 2 lines.jpg differ diff --git a/alt-tab-macos/docs/img/6 windows - 1 line.jpg b/docs/img/windows-10/6 windows - 1 line.jpg similarity index 98% rename from alt-tab-macos/docs/img/6 windows - 1 line.jpg rename to docs/img/windows-10/6 windows - 1 line.jpg index fdaefc08..64391d41 100644 Binary files a/alt-tab-macos/docs/img/6 windows - 1 line.jpg and b/docs/img/windows-10/6 windows - 1 line.jpg differ diff --git a/docs/img/windows-10/7 windows - 2 lines - extra wide window.jpg b/docs/img/windows-10/7 windows - 2 lines - extra wide window.jpg new file mode 100644 index 00000000..bc70996f Binary files /dev/null and b/docs/img/windows-10/7 windows - 2 lines - extra wide window.jpg differ diff --git a/alt-tab-macos/docs/img/7 windows - 2 lines - tall window.jpg b/docs/img/windows-10/7 windows - 2 lines - tall window.jpg similarity index 92% rename from alt-tab-macos/docs/img/7 windows - 2 lines - tall window.jpg rename to docs/img/windows-10/7 windows - 2 lines - tall window.jpg index c5167e2d..49c676a3 100644 Binary files a/alt-tab-macos/docs/img/7 windows - 2 lines - tall window.jpg and b/docs/img/windows-10/7 windows - 2 lines - tall window.jpg differ diff --git a/docs/img/windows-10/7 windows - 2 lines - wide window.jpg b/docs/img/windows-10/7 windows - 2 lines - wide window.jpg new file mode 100644 index 00000000..164ec0ba Binary files /dev/null and b/docs/img/windows-10/7 windows - 2 lines - wide window.jpg differ diff --git a/alt-tab-macos/docs/img/too many windows - 4 lines - paginated.jpg b/docs/img/windows-10/too many windows - 4 lines - paginated.jpg similarity index 79% rename from alt-tab-macos/docs/img/too many windows - 4 lines - paginated.jpg rename to docs/img/windows-10/too many windows - 4 lines - paginated.jpg index 11394ee7..85ebf0c4 100644 Binary files a/alt-tab-macos/docs/img/too many windows - 4 lines - paginated.jpg and b/docs/img/windows-10/too many windows - 4 lines - paginated.jpg differ