{"id":13414855,"url":"https://github.com/fikovnik/ShiftIt","last_synced_at":"2025-03-14T22:32:21.689Z","repository":{"id":44325416,"uuid":"959084","full_name":"fikovnik/ShiftIt","owner":"fikovnik","description":"Managing windows size and position in OSX","archived":false,"fork":false,"pushed_at":"2023-11-20T10:24:52.000Z","size":2374,"stargazers_count":5531,"open_issues_count":164,"forks_count":359,"subscribers_count":99,"default_branch":"master","last_synced_at":"2024-10-15T10:21:07.796Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fikovnik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2010-10-03T21:08:12.000Z","updated_at":"2024-10-05T10:25:26.000Z","dependencies_parsed_at":"2022-07-16T02:46:29.408Z","dependency_job_id":"ab6d2bbb-c00a-4af9-9351-ae503d3e0775","html_url":"https://github.com/fikovnik/ShiftIt","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fikovnik%2FShiftIt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fikovnik%2FShiftIt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fikovnik%2FShiftIt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fikovnik%2FShiftIt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fikovnik","download_url":"https://codeload.github.com/fikovnik/ShiftIt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221513933,"owners_count":16835746,"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-07-30T21:00:38.334Z","updated_at":"2025-03-14T22:32:21.675Z","avatar_url":"https://github.com/fikovnik.png","language":"Objective-C","readme":"\u003ch1\u003e\u003cimg src=\"https://raw.github.com/fikovnik/ShiftIt/develop/artwork/ShiftIt.png\" width=\"72\" height=\"72\" valign=\"middle\"/\u003eShiftIt \u003ca href=\"https://travis-ci.org/fikovnik/ShiftIt\"\u003e\u003cimg src=\"https://travis-ci.org/fikovnik/ShiftIt.svg\" valign=\"middle\" alt=\"Build Status\"/\u003e\u003c/a\u003e\u003c/h1\u003e\n\n*Managing window size and position in OSX*\n\n# Looking for a new maintainer #[296](https://github.com/fikovnik/ShiftIt/issues/296).\n\nThis project is looking for a new maintainer. Until that transition is completed, **there will likely not be further development on this project**. \n\n## Alternatives\n\nA highly recommended alternative to ShiftIt that can be implemented using [Hammerspoon](http://hammerspoon.org).\n\nYou can use the \u003cimg src=\"https://raw.githubusercontent.com/Hammerspoon/hammerspoon/master/Hammerspoon/Images.xcassets/AppIcon.appiconset/icon_16x16%402x.png\" height=\"18\" valign=\"middle\" /\u003e [ShiftIt Spoon](https://github.com/peterklijn/hammerspoon-shiftit) which implements the ShiftIt functionality in Hammerspoon.\n\nAdditionally there is a step-by-step guide to replicating ShiftIt's features using Hammerspoon yourself: https://github.com/fikovnik/ShiftIt/wiki/The-Hammerspoon-Alternative\n\n\n# About\n\n**Looking for a new maintainer #[296](https://github.com/fikovnik/ShiftIt/issues/296).**\n\nShiftIt is an application for OSX that allows you to quickly manipulate window position and size using keyboard shortcuts.\nIt intends to become a full featured window organizer for OSX.\nIt is a complete rewrite of the original [ShiftIt](http://code.google.com/p/shiftit/) by Aravindkumar Rajendiran which is not longer under development.\nFor discussing any sort of stuff about this app, please create a [new issue](https://github.com/fikovnik/ShiftIt/issues).\n\nLicense: [GNU General Public License v3](http://www.gnu.org/licenses/gpl.html)\n\nChange logs: change logs are versioned in the [repository](https://github.com/fikovnik/ShiftIt/tree/develop/release) as well.\n\n\n## Download\n\nA binary build for OSX 10.7+ is available in [releases](https://github.com/fikovnik/ShiftIt/releases).\n\n## Installation\n\nPlease note, because the binary is not signed, you'll have to \"right click\" on the application, click \"Open\", and subsequently click \"Open\" in the dialog that appears.  You only have to do this the first time you launch the newly-downloaded application.\n\n## User guide\n\nShiftIt installs itself in the menu bar (optionally it can be completely hidden).\nIt provides a set of actions that manipulates windows positions and sizes.\nFollowing is an example of list of actions available:\n\n![Screenshot Menu](https://raw.github.com/fikovnik/ShiftIt/develop/docs/schreenshot-menu.png)\n\nNormally, all Cocoa windows and X11 windows are supported.\nSome applications might not work correctly or not at all.\nThere is a [list of known problems](https://github.com/fikovnik/ShiftIt/wiki/Application-Compatibility-Issues).\nIf you find any problem not mentioned there, please submit an issue.\n\n## Requirements\n\n* OSX 10.7+, 64-bit\n\nThe primary development is done on OSX 10.10, but it should be running under OSX 10.7 as well.\n\n## FAQ\n##### How do I turn on/off windows cycling sizes with multiple hotkey presses?\n\nIf this feature is on, snapping to the left side of the screen (and top, bottom, and right sides) will resize the window to half of the screen.  If window is then snapped to the same side of the screen, it will resize to one third of the screen, and then two thirds of the screen.\n\nIf the feature is off, additional snappings will have no effect and the window will remain at half of the screen.\n\nCurrently, the only way to accomplish this is by running commands on the command line.  To turn the feature on, run:\n```\ndefaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes YES\n```\nTo turn it off, run:\n```\ndefaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes NO\n```\n\n##### I disabled the _Show Icon in Menu Bar_ in the preferences, how can I get it back?\n\nLaunch the application again. It will open the preference dialog.\n\n##### I pressed a shortcut, but nothing has happened, why?\n\nWhile most of application windows should work well with ShiftIt, there are some exceptions (like the GTK+ OSX applications). There is a [list of known problems](https://github.com/fikovnik/ShiftIt/wiki/Application-Compatibility-Issues). If you find any problem not mentioned in the list, please raise an issue.\n\n##### I pressed a shortcut, something happened, but not what I expected, why?\n\nShiftIt is based on a Cocoa Accessibility API and sometimes this API can be a bit [fragile](http://lists.apple.com/archives/accessibility-dev/2011/Aug/msg00031.html) and not do exactly what it should. In order to help to improve ShiftIt, please submit an issue every time you find some weird behavior. Before you do please consult the [list of known problems](https://github.com/fikovnik/ShiftIt/wiki/Application-Compatibility-Issues). Thanks!\n\n##### ShiftIt wants accessibility access on my Mac but my system preferences don't match the instruction, why?\n\nFor instructions on accessibility in Mac OS X 10.9.x, see [this comment](https://github.com/fikovnik/ShiftIt/issues/110#issuecomment-20834932).\n\n##### How to repair Accessibility API permissions?\n\nThis can be done either using  the GUI in _System Preferences_ -\u003e _Security \u0026 Privacy_ -\u003e _Privacy_ -\u003e _Accessibility_ where it is necessary to check and uncheck the checkbox which is next to ShiftIt in the _Allow the apps below to control your computer_.\nIf ShiftIt is not in the list, just drag and drop it there from the `Applications` folder.\n\n![ShiftIt permissions](https://raw.githubusercontent.com/fikovnik/ShiftIt/develop/ShiftIt/AccessibilitySettingsMaverick.png)\n\nAlternatively, this can be also done in a command line, however, this is rather a hack with all potential issues hacks come with.\n\n```sh\n$ sudo sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'update access set allowed=1 where client like \"%org.shiftitapp.ShiftIt%\"'\n```\n\nFor instructions on accessibility in Mac OS X 10.9.x, see [this comment](https://github.com/fikovnik/ShiftIt/issues/110#issuecomment-20834932).\nIf you've upgraded to 10.10, just uncheck and recheck the box to make things work again.\n\n## Development\n\nThe repository is based on the git flow model. The development therefore happens in the `develop` branch. Any contribution is welcomed!\n\n### Local build\n\nTo build ShiftIt locally just clone the repository or get the latest snapshot and execute following command in the `ShiftIt` directory:\n\n```sh\n$ xcodebuild -target ShiftIt -configuration Release\n```\n\nTo make a build without X11 support execute following:\n\n```sh\n$ xcodebuild -target \"ShiftIt NoX11\" -configuration Release\n```\n\n### Brew Cask\nTo install  ShiftIt using brew you can use the cask.\n\n```\n$ brew install shiftit --cask\n```\n\n### Making a release\n\nFirst, update the release version in [ShiftIt/ShiftIt-Info.plist](ShiftIt/ShiftIt-Info.plist). *NOTE* the version is in the file twice;\nonce under `\u003ckey\u003eCFBundleShortVersionString\u003c/key\u003e` and again under `\u003ckey\u003eCFBundleVersion\u003c/key\u003e`.  Make sure you update both!\n\nReleases are handled using [fabric](http://docs.fabfile.org/en/1.5/). There are some dependencies that can be easily obtained using `pip`:\n\n* [fabric](http://docs.fabfile.org/en/1.5/) - the build system itself\n* [github3](https://github.com/sigmavirus24/github3.py) - library for GitHub 3 API\n* [pystache](https://github.com/defunkt/pystache) - templates\n\nNOTE: this is Python2 compatible; it will error out under Python3.\n\nUsing [pipenv](https://docs.pipenv.org/), a release environment\ncan be created with the following command:\n```\n$ pipenv install --two\n$ pipenv shell\n```\n\nPrior to running the commands below, ensure the following environment variables are set:\n\n```\nexport SHIFTIT_PRIVATE_KEY=~/.shiftit/dsa_priv.pem.gpg  # get this from the project contributors\nexport SHIFTIT_GITHUB_TOKEN=~/.shiftit/github.token.gpg  # this is your personal access token\nexport SHIFTIT_GITHUB_USER=fikovnik\nexport SHIFTIT_GITHUB_REPO=ShiftIt\n```\n\nGet your personal access token from [Github's developer settings page](https://github.com/settings/tokens).\n\nAs you see above, the private key and github token can be gpg-encrypted at rest.  This is optional and they can simply be plain text; just don't suffix the files with `.gpg`.\n\nThe releases are fully automatic which hopefully will help to release more often.\n\n**Available commands**\n\n* `archive` - Archives build\n* `build` - Makes a build by executing xcodebuild\n* `info` - Output all the build properties\n* `release` - Prepare the release: sign the build, generate appcast, generate release notes\n* `release_notes` - Generate release notes\n\nAfter `fab release` instructions about how to create the actual release at github are printed.\n\nThanks [JetBrains](http://www.jetbrains.com/) for kindly supporting this open source project by providing [AppCode](http://www.jetbrains.com/objc/) IDE.\n","funding_links":[],"categories":["框架和库","Applications","Objective-C","其它实用工具","Utilities","OSX Application","HarmonyOS","etc"],"sub_categories":["Utilities","Window Management","窗口管理","Windows Manager","🪟 Window Management (11)","Productivity"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffikovnik%2FShiftIt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffikovnik%2FShiftIt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffikovnik%2FShiftIt/lists"}