Managing windows size and position in OSX

Related tags

ShiftIt
Overview

ShiftIt Build Status

Managing window size and position in OSX

Looking for a new maintainer #296.

This project is looking for a new maintainer. Until that transition is completed, there will likely not be further development on this project.

Alternatives

A highly recommended alternative to ShiftIt that can be implemented using Hammerspoon.

You can use the ShiftIt Spoon which implements the ShiftIt functionality in Hammerspoon.

Additionally there is a step-by-step guide to replicating ShiftIt's features using Hammerspoon yourself: https://github.com/fikovnik/ShiftIt/wiki/The-Hammerspoon-Alternative

About

Looking for a new maintainer #296.

ShiftIt is an application for OSX that allows you to quickly manipulate window position and size using keyboard shortcuts. It intends to become a full featured window organizer for OSX. It is a complete rewrite of the original ShiftIt by Aravindkumar Rajendiran which is not longer under development. For discussing any sort of stuff about this app, please create a new issue.

License: GNU General Public License v3

Change logs: change logs are versioned in the repository as well.

Download

A binary build for OSX 10.7+ is available in releases.

Installation

Please 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.

User guide

ShiftIt installs itself in the menu bar (optionally it can be completely hidden). It provides a set of actions that manipulates windows positions and sizes. Following is an example of list of actions available:

Screenshot Menu

Normally, all Cocoa windows and X11 windows are supported. Some applications might not work correctly or not at all. There is a list of known problems. If you find any problem not mentioned there, please submit an issue.

Requirements

  • OSX 10.7+, 64-bit

The primary development is done on OSX 10.10, but it should be running under OSX 10.7 as well.

FAQ

How do I turn on/off windows cycling sizes with multiple hotkey presses?

If 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.

If the feature is off, additional snappings will have no effect and the window will remain at half of the screen.

Currently, the only way to accomplish this is by running commands on the command line. To turn the feature on, run:

defaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes YES

To turn it off, run:

defaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes NO
I disabled the Show Icon in Menu Bar in the preferences, how can I get it back?

Launch the application again. It will open the preference dialog.

I pressed a shortcut, but nothing has happened, why?

While 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. If you find any problem not mentioned in the list, please raise an issue.

I pressed a shortcut, something happened, but not what I expected, why?

ShiftIt is based on a Cocoa Accessibility API and sometimes this API can be a bit fragile 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. Thanks!

ShiftIt wants accessibility access on my Mac but my system preferences don't match the instruction, why?

For instructions on accessibility in Mac OS X 10.9.x, see this comment.

How to repair Accessibility API permissions?

This can be done either using the GUI in System Preferences -> Security & Privacy -> Privacy -> 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. If ShiftIt is not in the list, just drag and drop it there from the Applications folder.

ShiftIt permissions

Alternatively, this can be also done in a command line, however, this is rather a hack with all potential issues hacks come with.

$ sudo sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'update access set allowed=1 where client like "%org.shiftitapp.ShiftIt%"'

For instructions on accessibility in Mac OS X 10.9.x, see this comment. If you've upgraded to 10.10, just uncheck and recheck the box to make things work again.

Development

The repository is based on the git flow model. The development therefore happens in the develop branch. Any contribution is welcomed!

Local build

To build ShiftIt locally just clone the repository or get the latest snapshot and execute following command in the ShiftIt directory:

$ xcodebuild -target ShiftIt -configuration Release

To make a build without X11 support execute following:

$ xcodebuild -target "ShiftIt NoX11" -configuration Release

Brew Cask

To install ShiftIt using brew you can use the cask.

$ brew cask install shiftit

Making a release

First, update the release version in ShiftIt/ShiftIt-Info.plist. NOTE the version is in the file twice; once under <key>CFBundleShortVersionString</key> and again under <key>CFBundleVersion</key>. Make sure you update both!

Releases are handled using fabric. There are some dependencies that can be easily obtained using pip:

NOTE: this is Python2 compatible; it will error out under Python3.

Using pipenv, a release environment can be created with the following command:

$ pipenv install --two
$ pipenv shell

Prior to running the commands below, ensure the following environment variables are set:

export SHIFTIT_PRIVATE_KEY=~/.shiftit/dsa_priv.pem.gpg  # get this from the project contributors
export SHIFTIT_GITHUB_TOKEN=~/.shiftit/github.token.gpg  # this is your personal access token
export SHIFTIT_GITHUB_USER=fikovnik
export SHIFTIT_GITHUB_REPO=ShiftIt

Get your personal access token from Github's developer settings page.

As 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.

The releases are fully automatic which hopefully will help to release more often.

Available commands

  • archive - Archives build
  • build - Makes a build by executing xcodebuild
  • info - Output all the build properties
  • release - Prepare the release: sign the build, generate appcast, generate release notes
  • release_notes - Generate release notes

After fab release instructions about how to create the actual release at github are printed.

Thanks JetBrains for kindly supporting this open source project by providing AppCode IDE.

Issues
  • UP, DOWN, RIGHT, and LEFT are toggling various sizes.

    UP, DOWN, RIGHT, and LEFT are toggling various sizes.

    If hit "Control, Option, Command, Right Arrow", the first time I press the button it occupies half the screen, the second time it occupies 1/4 of the screen and the third time it occupies 3/4 of the screen. In the previous version it only ever shifted to one size, not toggle between 3 sizes. How do I disable this. I only want to adjust the size if i use "increase/decrease" screen shot 2017-12-04 at 20 10 25 3 screen shot 2017-12-04 at 20 11 26 3 screen shot 2017-12-04 at 20 11 54 3

    opened by akume 41
  • ShiftIt commands not working at all with MacOS Sierra update

    ShiftIt commands not working at all with MacOS Sierra update

    ShiftIt commands not working at all with MacOS Sierra update

    opened by JaysonBH 37
  • Feature Request: Resize/move windows in 5% steps

    Feature Request: Resize/move windows in 5% steps

    Resizing windows to 50% of the screen width does not always work for me. Sometimes I need wider windows (e.g. a website that needs more screen real estate), or I need much smaller windows (e.g. iChat contact list). But I usually prefer working with a keyboard, so I want to avoid switching to the mouse.

    This is a workflow I would like:

    1. Put browser into the left half of the screen.
    2. Realize I need more space.
    3. Enlarge window in 5% steps with a handy shortcut.

    Another example:

    1. Open PDF in Preview, put it in the right half of the screen.
    2. Realize it is overlapped by the browser window.
    3. Move the window to the right in 5% steps until it is not overlapped any more.
    4. Make the Preview Window smaller in 5% steps until it fits on the screen.

    What do you think?

    opened by ralph 26
  • Making ShiftIt work on OS X 10.9 Mavericks

    Making ShiftIt work on OS X 10.9 Mavericks

    This is not a bug per se. ShiftIt 10.6 actually works on OS X 10.9, but there are some obstacles. You could consider this a documentation issue.

    First, you have to re-enable the Accessibility API. In OS X 10.9, accessibility has to be enabled per application. Under System Preferences → Security & Privacy → Privacy → Accessibility, select ShiftIt.

    Second, I found that after upgrading from OS X 10.8 to 10.9, you have to reinstall XQuartz. (I had XQuartz 2.7.4 installed under OS X 10.8, but after upgrading to 10.9, ShiftIt complained that it was missing.)

    opened by dpoon 22
  • Remove dependency on X11

    Remove dependency on X11

    If we can remove the dependency on X11, and use only Cocoa libs, this would make it easier for more Mac users to install ShiftIt.

    opened by apennebaker 19
  • Keeps the 1/2->1/3->2/3 window behavior, but resets the cycle anytime...

    Keeps the 1/2->1/3->2/3 window behavior, but resets the cycle anytime...

    … a window is moved outside of the cycle

    opened by kjrokos 19
  • Next Screen not working

    Next Screen not working

    On 10.10.3

    Used ShiftIt for a long time and been doing the trick of click-holding a window then Ctrl+1 or Ctrl+2 to switch screens then dropping the window. Discovered that ShiftIt has this function but when I tried it nothing happens. Any insights?

    defect 
    opened by jw84 17
  • Shiftit can't be started on OSX 10.10 (Yosemite)

    Shiftit can't be started on OSX 10.10 (Yosemite)

    I know the OS is still in Beta, but you can't start Shiftit because there is no way (that I can find) to enable it in the Accessibility System Preferences

    opened by MarkKahn 17
  • Previous Window

    Previous Window

    Add "Previous Window" command as per discussed in #126.

    Note that XIB files were largely changed because XCode 5 changed XIB file format, and I'm using 5.1. To make my patch clearer, I made a commit by just after opened them and saved, then made the real change. The commit 567cced is for the file format change, and 688aa04 is the real UI changes.

    opened by kojiishi 17
  • Requires X11 at installation (although supposedly X11 support has been dropped)

    Requires X11 at installation (although supposedly X11 support has been dropped)

    When starting Shiftit for the first time (e.g. when it installs), it complains that there is no X11 installed on my system (10.8.3) and then refuses to proceed (so installation stops there and I can't run Shiftit). I've no intention to install X11, and anyway X11 support is supposedly abandoned. So what is going on? Same behavior with 1.5 and 1.6 (devt).

    opened by Petia 15
  • Rosetta and M1 release

    Rosetta and M1 release

    I bought a 2021 iMac that has an M1 chip, not an intel chip. As I'm installing ShiftIt, the OS wants me to install Rosetta to be a translation from the intel chip instructions to the M1 chip instructions.

    I'm interested in helping get a ShiftIt release compiled for M1. Anyone else interesting in collaborating or pairing?

    opened by professor 0
  • Brew install command is incorrect in README

    Brew install command is incorrect in README

    $ brew cask install shiftit is no longer a valid command for brew. The command that worked for me is $ brew install --cask shiftit.

    opened by jtrtj 0
  • update brew install command w/ latest brew syntax

    update brew install command w/ latest brew syntax

    Simple README update to align instructions with latest brew syntax

    opened by d-fay 1
  • Big Sur OS update seems to have broken functionality

    Big Sur OS update seems to have broken functionality

    Even after ensuring the security and privacy settings allow Shiftit to control, the application cannot start (after Big Sur OSX update) Screen Shot 2020-11-16 at 8 35 46 PM

    opened by jeanmw 15
  • Bump cryptography from 2.0.3 to 3.2

    Bump cryptography from 2.0.3 to 3.2

    Bumps cryptography from 2.0.3 to 3.2.

    Changelog

    Sourced from cryptography's changelog.

    3.2 - 2020-10-25

    
    * **SECURITY ISSUE:** Attempted to make RSA PKCS#1v1.5 decryption more constant
      time, to protect against Bleichenbacher vulnerabilities. Due to limitations
      imposed by our API, we cannot completely mitigate this vulnerability and a
      future release will contain a new API which is designed to be resilient to
      these for contexts where it is required. Credit to **Hubert Kario** for
      reporting the issue. *CVE-2020-25659*
    * Support for OpenSSL 1.0.2 has been removed. Users on older version of OpenSSL
      will need to upgrade.
    * Added basic support for PKCS7 signing (including SMIME) via
      :class:`~cryptography.hazmat.primitives.serialization.pkcs7.PKCS7SignatureBuilder`.
    

    .. _v3-1-1:

    3.1.1 - 2020-09-22

    • Updated Windows, macOS, and manylinux wheels to be compiled with OpenSSL 1.1.1h.

    .. _v3-1:

    3.1 - 2020-08-26

    
    * **BACKWARDS INCOMPATIBLE:** Removed support for ``idna`` based
      :term:`U-label` parsing in various X.509 classes. This support was originally
      deprecated in version 2.1 and moved to an extra in 2.5.
    * Deprecated OpenSSL 1.0.2 support. OpenSSL 1.0.2 is no longer supported by
      the OpenSSL project. The next version of ``cryptography`` will drop support
      for it.
    * Deprecated support for Python 3.5. This version sees very little use and will
      be removed in the next release.
    * ``backend`` arguments to functions are no longer required and the
      default backend will automatically be selected if no ``backend`` is provided.
    * Added initial support for parsing certificates from PKCS7 files with
      :func:`~cryptography.hazmat.primitives.serialization.pkcs7.load_pem_pkcs7_certificates`
      and
      :func:`~cryptography.hazmat.primitives.serialization.pkcs7.load_der_pkcs7_certificates`
      .
    * Calling ``update`` or ``update_into`` on
      :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` with ``data``
      longer than 2\ :sup:`31` bytes no longer raises an ``OverflowError``. This
      also resolves the same issue in :doc:`/fernet`.
    

    .. _v3-0:

    3.0 - 2020-07-20 </tr></table>

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Microsoft program windows aren't moving with shortcuts

    Microsoft program windows aren't moving with shortcuts

    Recently all of the Microsoft programs (excel, word, outlook) have stopped working with the "command arrow" shortcuts. Is there a setting that needs to be updated to get this working again?

    opened by bradrooks00 0
  • Dual Monitor Issues With full-Screen

    Dual Monitor Issues With full-Screen

    When I have 1 monitor in full screen, like watching a video in youtube, I can't control any window in the other monitor: the shortcuts don't work at all.

    opened by jclusi 9
  • closed unexpectedly

    closed unexpectedly

    in MacOS Mojave v10.14.6 when shifit not start at login and you open some app and then open shiftit, if you try to align in any direction any of these previously opened applications, shifit closes unexpectedly

    opened by aescobar-icc 0
  • Recommendation:

    Recommendation: "Double click on title bar to maximize"

    Hi,

    Found the app today. Thanks for maintaining this app!

    Recommendation: "Double click on title bar to maximize"

    Also, an option to open EVERY app maximized would be great!

    Thanks in advance!

    opened by 01GOD 0
  • I need a function to automatically move to the next screen.

    I need a function to automatically move to the next screen.

    If the window is already in the left or right direction when the left and right buttons are pressed, it would be nice to have a function that automatically moves to the screen in that direction.

    An example would be the ability to move a window with the 'Windows key + arrow keys' in a dual monitor environment of Windows OS.

    opened by beadss 0
Releases(version-1.6.6)
Owner
Filip Krikava
Filip Krikava
Replacement for MacOS' volume, brightness and keyboard backlight HUDs.

SlimHUD Replacement for MacOS' HUDs. Every day you change your volume or brightness and an ugly and unbelievably old overlay animation appears. SlimHU

Alex Perathoner 133 Sep 13, 2021
PowerShell for every system!

PowerShell Welcome to the PowerShell GitHub Community! PowerShell Core is a cross-platform (Windows, Linux, and macOS) automation and configuration to

PowerShell Team 29.6k Sep 18, 2021
ˈyːbɐˌzɪçt

Übersicht Keep an eye on what's happening on your machine and in the world. For general info check out the Übersicht website. Writing Widgets In essen

Felix 3.4k Sep 15, 2021
Keep your application settings in sync (OS X/Linux)

Mackup Keep your application settings in sync. Table of content Quickstart Usage What does it do Bullsh*t, what does it really do to my files Supporte

Laurent Raufaste 11.4k Sep 23, 2021
The missing Desktop application for Pushbullet.

PB for Desktop PB for Desktop is a lightweight open-source Desktop app for PushBullet. Receive native push notifications on macOS, Windows and Linux.

sidneys.github.io 466 Sep 11, 2021
Your next meeting always before your eyes in the macOS menu bar

MeetingBar is a menu bar app for your calendar meetings (macOS 10.15+). Integrated with 20+ meeting services so you can quickly join meetings from eve

Andrii Leitsius 2.4k Sep 22, 2021
Encrypted file transfer over ad hoc WiFi. No network infrastructure required, just two laptops in close range. Linux, Mac, and Windows.

Flying Carpet To download, visit the releases page! Wireless, encrypted file transfer over automatically configured ad hoc networking. No network infr

Theron Spiegl 834 Sep 18, 2021
Put the output from any script or program into your macOS Menu Bar (the BitBar reboot)

Welcome to xbar xbar (the BitBar reboot) lets you put the output from any script/program in your macOS menu bar. Complete rewrite from the ground up -

Mat Ryer 15.4k Sep 23, 2021
🌎 18th century Arts for everyone

Artify A macOS X application for bringing dedicatedly 18th century Arts to everyone ?? . Wallpaper • Features • Downloads • Technologies • 3rd Librari

Nghia Tran 147 Sep 12, 2021
macOS app which assembles and disassembles animated png files

Over 11k downloads* ?? APNGb 2.0.1 (Download) APNGb is a macOS app which creates animated png from a series of png frames and disassembles animated pn

Ștefan Godoroja 233 Sep 6, 2021
Switch hosts quickly!

SwitchHosts 简体中文 Homepage: https://oldj.github.io/SwitchHosts/ SwitchHosts is an App for managing hosts file, it is based on Electron , React, UmiJS ,

oldj 14.6k Sep 23, 2021
A simple but highly customizable `UICollectionViewLayout` for `UICollectionView`.

CollectionViewPagingLayout Layout Designer SnapshotTransformView ScaleTransformView StackTransformView Custom implementations About This is a simple b

Amir Khorsandi 1.4k Sep 15, 2021
Meme Maker open source macOS app made in Swift.

Meme Maker Add text to popular images, share with the world. ##Screens ##Features Select or search a meme from a huge collection. Smart searching opti

Meme Maker 56 Sep 13, 2021
A macOS menu bar app that gives you more control over Grayscale Mode.

Grayscale Mode An open source macOS menu bar app that gives you more control over Grayscale Mode. Features Quickly toggle grayscale mode from status b

Rajendra Bhochalya 48 Sep 1, 2021
:key: Cross-Platform Passwords Secrets Vault

Buttercup Desktop Buttercup for Desktop - Mac, Linux and Windows ² ⚠️ Buttercup v2 is in pre-release - It will reach its stable release channel soon A

Buttercup 3.6k Sep 10, 2021
Menu Bar RSS reader for macOS

baRSS – Menu Bar RSS Reader What is it? A RSS & Atom feed reader that lives in the system status bar. Very much inspired by RSS Menu; go ahead and che

Helena Schobs 34 Sep 16, 2021
Simple macOS GateKeeper script.

macOS GateKeeper Helper Simple macOS GateKeeper script. ?? Table of Contents About Usage Tips ?? About This is a simple useful tool for users which al

Bahadır A. Güder 136 Sep 15, 2021
KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.

KeePassXC KeePassXC is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePass

KeePassXC 11.1k Sep 23, 2021
The Blockstack Browser

Blockstack Browser The Blockstack Browser allows you to explore the Blockstack internet. ⚠️ IMPORTANT: This project has been deprecated in favor of th

Stacks 1.1k Sep 16, 2021