A simple deamon that restores your window positions on external monitors.

Overview

macOS 10.10+ Current release

Memmon

Memmon remembers what your Mac forgets – A simple deamon that restores your window positions on external monitors.

FAQ

Why‽

I am frustrated! Why does my Mac forget all window positions which I moved to a second screen? Every time I unplug the monitor. Every time I close my Macbook lid. Every time I lock my Mac.

Is it macOS 11? Is it the USB-C-to-HDMI converter dongle (notably one made by Apple)? Why do I have to fix things that Apple should have fixed long ago? …

Aren't there other solutions?

Yes, for example Mjolnir or Hammerspoon (and some comercial ones). But I do not need a full-fledged window manager. Nor the dependencies they rely on. I just need to fix this damn bug.

What is it good for?

First off, Memmon is just 130 lines of code – no dependencies. You can audit it in 5 minutes. Or just build it from scratch if you like (just run make).

Secondly, it does one thing and one thing only: Save and restore window positions whenever your monitor setup changes.

Install

  1. You will need macOS 10.10 or newer.
  2. Grant Memmon the Accessibility privilege. Go to "System Preference" > "Security & Privacy" > "Accessibility" and add Memmon to that list. Otherwise, you can't move other application windows around and the app has no purpose.
  3. Thats it. The app runs in your status bar.

Hide Status Icon

You can hide the status icon either via the same-titled menu entry. If you do so, the only way to quit the app is by killing the process (with Activity.app or killall Memmon).

If you like to hide the icon directly on launch, use this app-setting:

# disable status icon completely
defaults write de.relikd.Memmon invisible -bool True
# re-enable status icon
defaults delete de.relikd.Memmon invisible
Comments
  • Does not work on Apple Silicon

    Does not work on Apple Silicon

    The app runs using Rosetta but does not remember window positions when an external display is plugged in. Accessibility privileges have been granted.

    It is moving windows because they are all half off my M1 Air's internal display when I plug in an external display but do not move to it. They stay that way once the external display is unplugged.

    Could I request a Universal Binary, please? For those of us on Apple Silicon hardware, who don't have the skills to compile this for ourselves.

    Thank you for this utility. Just wish it worked for me.

    opened by GoanSausage 8
  • How to install?

    How to install?

    Hi, can you explain further how to install the app? What files do I need to download exactly? Do I need to build the app or is there an .dmg file I can download and install?

    Thanks.

    opened by lihail-melio 1
  • Hammerspoon?

    Hammerspoon?

    Just a clarification request: why the mention of Hammerspoon in the Readme, did you mean that there is an (already existing) way to do what Memmon does with Hammerspoon? Or just that one could implement something in there? (I tried searching for something ready-made but couldn't find anything)

    opened by hmijail 1
  • Read Me - status bar vs menu bar

    Read Me - status bar vs menu bar

    "Thats it. The app runs in your status bar."

    According to apples support guide - https://support.apple.com/guide/mac-help/menu-bar-mchlp1446/mac - The whole bar is the "menu bar" and on the right side are items sometimes referered to as status menus "For example, click Wi-Fi to show a list of available networks". So the the text should read "That's it. The app runs in your menu bar."

    opened by bizzare 0
  • Add to Homebrew

    Add to Homebrew

    Hello,

    Thank you for the awesome app!

    Would you be willing to create a homebrew recipe for Memmon so it can be installed with brew install Memmon --cask?

    opened by quinncomendant 3
  • Firefox window now restored

    Firefox window now restored

    First of all, huge thanks for programming this! I would have spent weeks doing it myself if I hadn't found it on your Github. That being said, similar to the issue with Chrome also Firefox is not restored on my OS 11.6 M1.

    opened by cdorfer 1
  • Hotkey to force restore

    Hotkey to force restore

    Hello! Thank you for the great app! It would be very helpful if I was able to use some keys combination to trigger restoring. That would partially resolve issue related to spaces.

    opened by okgolove 11
  • Chrome windows were not restored?

    Chrome windows were not restored?

    Thank you -- this looks very promising! Restored several windows to my external monitor perfectly. However, it left several Chrome windows behind on the laptop display. Any additional step I ought to take that might prompt Chrome to join the party? Cheers!

    opened by dsalter-alluma 1
  • Minimized windows

    Minimized windows

    Would it be possible to restore the positions of minimized windows? Currently, windows that are minimized when a monitor is disconnected do not retain their size or position when the monitor reconnects.

    opened by CMD-CK 17
Releases(v1.5)
  • v1.5(Nov 24, 2021)

  • v1.4(Oct 27, 2021)

    This release adds a relatively stable restoration of windows in other spaces. You still need to visit another space before the windows are restored, however if you dont open another space, the old window positions are not overwritten. This means, Memmon assumes the window positions have probably not changed (as you havent open the space) and thus assumes the old values are still valid. Hint: this is not the case, you can still move windows in and out of spaces without opening them. But it should work good enough. Again, if you don't use spaces, the restore functionality should not be affected. Please report bugs.

    Source code(tar.gz)
    Source code(zip)
    Memmon_v1.4.tar.gz(66.69 KB)
  • v1.3(Oct 27, 2021)

    Adds preliminary support for spaces. As usual, Memmon will restore the currently active space. Additionally, if you navigate to a different space, Memmon will restore the windows of that space too. This is very rudimentary, i.e., if you do not visit a space (aka. windows are not restored) and detach a monitor, the current configuration is stored (aka. windows will have wrong positions because they werent restored previously) ... So much so, the next update is underway ...

    Source code(tar.gz)
    Source code(zip)
    Memmon_v1.3.tar.gz(66.75 KB)
  • v1.2(Oct 26, 2021)

    • App is now signed. This should allow app updates without re-setting the accessibility permission
    • Memmon now checks on launch whether permission is granted and if not, show the system dialog to do so.
    • Fix: only restore windows which are on the currently active space (as of now, it is not recommended to use more than one space).
    Source code(tar.gz)
    Source code(zip)
    Memmon_v1.2.tar.gz(61.06 KB)
  • v1.1(Oct 21, 2021)

Owner
Helena Schobs
Helena Schobs
macOS SwiftUI manager new window's life

WindowManager macOS swiftUI manager window's life cycle Usage // open DocumentsView WindowUtil.makeWindow(MyDocumentsView.self, viewType: .document)

Daniel 4 Oct 26, 2022
Displays your HomeKit temperature sensors in your menu bar

Temperature Glance Displays your HomeKit temperature sensors in your menu bar Screenshot Note This is a very simple app that I made for myself but dec

Fernando Bunn 15 Nov 14, 2022
The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's mobile app.

Meta State: production Point People: Brian Beckerle, Mounir Dhahri, Pavlos Vinieratos CI : This is an Artsy OSS project. Other mobile projects are Ene

Artsy 3.2k Jan 4, 2023
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Introduction Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the latest

Respresso 10 Nov 8, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso Android client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import

Respresso 11 May 27, 2021
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso iOS client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the

Respresso 50 May 1, 2021
You can monitor your APIs and websites on your menubar. Gives you status code 🎉 Cool & good

Hope not. Monitor your APIs and websites on your menubar. For macOS. Right now! YyeeeHav!

Steven J. Selcuk 10 Nov 29, 2022
A Simple way help you drop or drag your source (like UIImage) between different App.

A Simple way help you drop or drag your source (like UIImage) between different App.

逸风 13 Nov 24, 2022
Beak 🐦 Peck into your Swift files from the command line

Beak ?? Peck into your Swift files from the command line Beak can take a standard Swift file and then list and run any public global functions in it v

Yonas Kolb 566 Dec 6, 2022
Command line tool for exporting resources and generating code from your Figma files

Fugen Fugen is a command line tool for exporting resources and generating code from your Figma files. Currently, Fugen supports the following entities

Almaz Ibragimov 69 Dec 17, 2022
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 132 Dec 22, 2022
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs!

SwiftGen SwiftGen is a tool to automatically generate Swift code for resources of your projects (like images, localised strings, etc), to make them ty

null 8.3k Dec 31, 2022
Start your next Open-Source Swift Framework 📦

SwiftKit enables you to easily generate a cross platform Swift Framework from your command line. It is the best way to start your next Open-Source Swi

Sven Tiigi 821 Dec 28, 2022
A Swift command line tool for generating your Xcode project

XcodeGen XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. The projec

Yonas Kolb 5.9k Jan 9, 2023
📝 Read, update and write your Xcode projects

XcodeProj XcodeProj is a library written in Swift for parsing and working with Xcode projects. It's heavily inspired by CocoaPods XcodeProj and xcode.

Tuist 1.7k Dec 28, 2022
Compare your implementation and design, see how much they match!

DesignDetective Preview Usage You may trigger anywhere, but I personally prefer using it via Shake Gesture import DesignDetective extension UIWindow

Enes Karaosman 43 Dec 13, 2022
Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Peter Larson 17 Jun 27, 2022
ConfettiKit is a custom framework used to add Confetti on your iOS/iPadOS projects.

ConfettiKit is a custom framework used to add Confetti on your iOS/iPadOS projects. The kit provides variety of customisations inorder to design a confetti which matches your project's UI. ConfettiKit makes your work of adding Confetti on your project with just one line of code.

Gokul Nair 14 Sep 27, 2022
🛠 A flexible and easy template created to speed up the development of your iOS application based on the MVP pattern.

Model-View-Presenter template A flexible and easy template created to speed up the development of your iOS application based on the MVP pattern. This

Tamerlan Satualdypov 22 Nov 9, 2022