koekeishiya / yabai

A tiling window manager for macOS based on binary space partitioning
MIT License
23.94k stars 651 forks source link

macOS 12 Monterey #923

Closed dominiklohmann closed 2 years ago

dominiklohmann commented 3 years ago

This is the collective yearly thread for macOS betas. Please use this to discuss instead of opening new issues.

I will try to keep this updated just like every year.

2021-06-07 Developer Beta 1 (21A5248p)
Dock.app is available at [Dock.app.zip](https://github.com/koekeishiya/yabai/files/6617787/Dock.app.zip).
koekeishiya commented 2 years ago

The snippet you posted works fine for me. Are you running 12.0.0, or 12.0.1? As mentioned only 12.0.0 is supported right now.

danymat commented 2 years ago

The snippet you posted works fine for me. Are you running 12.0.0, or 12.0.1? As mentioned only 12.0.0 is supported right now.

Right, I'm on 12.0.1, thanks for the quick response

koekeishiya commented 2 years ago

After some thought I will be updating to 12.0.1 and add support for that probably tonight. I'll probably mark these comments as resolved, or delete them afterwards, to reduce noise.

Edit: Updated with support for 12.0.1. Updated comment above.

danymat commented 2 years ago

If 12.0.1 support is released, do you have any ETA of an official merge to master ?

leftbones commented 2 years ago

Any idea if the reshuffling is resolved in the version you mentioned above?

DennisFeldbusch commented 2 years ago

Any idea if the reshuffling is resolved in the version you mentioned above?

Not tested yet, but I don't think so...

donaldguy commented 2 years ago

@evprkr I don't know and I definitely could be wrong, but my intuition screams that your problem (which seems to uniquely effect you) is the result of doing a app != '^(a|b|c)$' manage=off rule.

I honestly wouldn't expect it to go well, and I think it alone can explain your problem.

What I think is happening is like this:

  1. Something on your computer generates (invisible) windows intermittently. (Or you just open a window that you expect yabai to ignore)
  2. The main event loop of yabai dutifully starts to adjust the layout to fit the new window in
  3. The rule processor finishes processing the window added event and determines it is supposed to be a floating window, so it removes it from the layout
  4. The other windows adjust for the removal of that window in the layout (before it was necessarily ever drawn)

I would seriously consider trying an alternative approach to your filtering. Like, for example, using a float or stack layout space default and setting manage=on rules for the apps you do want to layout.

I'm not sure that will work either, but I'm just ... not surprised that the thing you are trying now doesn't. I'd honestly never expect it to (and therefore would never have thought to try it)

leftbones commented 2 years ago

@evprkr I don't know and I definitely could be wrong, but my intuition screams that your problem (which seems to uniquely effect you) is the result of doing a app != '^(a|b|c)$' manage=off rule.

I honestly wouldn't expect it to go well, and I think it alone can explain your problem.

What I think is happening is like this:

  1. Something on your computer generates (invisible) windows intermittently. (Or you just open a window that you expect yabai to ignore)
  2. The main event loop of yabai dutifully starts to adjust the layout to fit the new window in
  3. The rule processor finishes processing the window added event and determines it is supposed to be a floating window, so it removes it from the layout
  4. The other windows adjust for the removal of that window in the layout (before it was necessarily ever drawn)

I would seriously consider trying an alternative approach to your filtering. Like, for example, using a float or stack layout space default and setting manage=on rules for the apps you do want to layout.

I'm not sure that will work either, but I'm just ... not surprised that the thing you are trying now doesn't. I'd honestly never expect it to (and therefore would never have thought to try it)

I have seen other people talking about it, but I haven't seen their configs so I'm not sure if they're using the same sort of thing as I am, but you may be right regardless. What would be the best way to go about employing a "tile ONLY App1, App2, App3..." rule?

ai212983 commented 2 years ago

I also have this reshuffling issue. Explanation about filtering rules is fine, but doesn't explain why it wasn't a problem with previous Mac OS X.

donaldguy commented 2 years ago

I mean if it's in fact a race condition kind of issue, any number of things could change between versions:

  • timing of the events/callbacks
  • thread scheduling
  • order of events inside of the kernel, windowserver, the objective C runtime, etc.

And any combination of such things could effect the timing

EDIT: … speed of regex parsing, response time of individual syscalls, …

DennisFeldbusch commented 2 years ago

@evprkr I don't know and I definitely could be wrong, but my intuition screams that your problem (which seems to uniquely effect you) is the result of doing a app != '^(a|b|c)$' manage=off rule.

I honestly wouldn't expect it to go well, and I think it alone can explain your problem.

What I think is happening is like this:

  1. Something on your computer generates (invisible) windows intermittently. (Or you just open a window that you expect yabai to ignore)
  2. The main event loop of yabai dutifully starts to adjust the layout to fit the new window in
  3. The rule processor finishes processing the window added event and determines it is supposed to be a floating window, so it removes it from the layout
  4. The other windows adjust for the removal of that window in the layout (before it was necessarily ever drawn)

I would seriously consider trying an alternative approach to your filtering. Like, for example, using a float or stack layout space default and setting manage=on rules for the apps you do want to layout.

I'm not sure that will work either, but I'm just ... not surprised that the thing you are trying now doesn't. I'd honestly never expect it to (and therefore would never have thought to try it)

I'm also experience these random reshuffling issue and I use the following config

Tomorrow I will test if commenting out the rules will help with the issue

koekeishiya commented 2 years ago

Updated with support for 12.0.1. I have merged the-future branch into master for now. I have updated the instructions in my previous comment, but the wiki instructions here (disable sip) and here (install from master) should apply.

koekeishiya commented 2 years ago

@evprkr Are you comfortable attempting to build from source? I think a crash report/backtrace with debug symbols might help trying to figure out what exactly is causing a crash for you.

Edit: First try the master version and see if it reproduces there.

leftbones commented 2 years ago

@evprkr Are you comfortable attempting to build from source? I think a crash report/backtrace with debug symbols might help trying to figure out what exactly is causing a crash for you.

Edit: First try the master version and see if it reproduces there.

I will try the master version (with my same configs) and report back. If it's not resolved, I'm willing to try building from source, I managed to do it with @donaldguy's fork.

leftbones commented 2 years ago

@koekeishiya Alright, so I just had it happen again. I had installed from HEAD, I'm not entirely sure that's what you meant, but from what I could tell, the last commit to release 3.3.10 was a couple of months ago, so I'm not really sure where to get the latest commit to master.

Or did you mean I'd have to build that from source?

albert-ying commented 2 years ago

I just tried and got this error. @koekeishiya I'm on M1 macOS 12.0.1

❯ brew install yabai --HEAD
==> Cloning https://github.com/koekeishiya/yabai.git
Updating /Users/A.Y/Library/Caches/Homebrew/yabai--git
==> Checking out branch master
Already on 'master'
Your branch is up to date with 'origin/master'.
HEAD is now at 6bcf544 bump version
==> Installing yabai from koekeishiya/formulae
==> make install
Last 15 lines from /Users/A.Y/Library/Logs/Homebrew/yabai/01.make:
rm -f ./src/osax/mach_loader
mkdir -p ./bin
clang src/manifest.m src/osax/loader_bin.c src/osax/payload_bin.c src/osax/mach_loader_bin.c -std=c99 -Wall -DNDEBUG -O2 -fvisibility=hidden -mmacosx-version-min=10.13 -fno-objc-arc -arch x86_64 -arch arm64 -F/System/Library/PrivateFrameworks -framework Carbon -framework Cocoa -framework CoreServices -framework SkyLight -framework ScriptingBridge -o bin/yabai
Undefined symbols for architecture x86_64:
  "_regcompA", referenced from:
      _handle_message in manifest-7ee4a3.o
  "_regexecA", referenced from:
      _event_signal_flush in manifest-7ee4a3.o
      _window_manager_apply_rule_to_window in manifest-7ee4a3.o
  "_regfreeA", referenced from:
      _event_signal_destroy in manifest-7ee4a3.o
      _rule_destroy in manifest-7ee4a3.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bin/yabai] Error 1
koekeishiya commented 2 years ago

I have tested that the master branch builds fine for me on macOS Big Sur 11.6.1 (Intel) and macOS Monterey 12.0.1 (Apple Silicon). Both builds work when I send them to my other device, both ways. Make sure your Xcode is up to date. Also what is the output of xcode-select -p

Here is a pre-built version (with debug symbols) of commit (https://github.com/koekeishiya/yabai/commit/727b11200b6155fba116dbf583873c772af50bc6): yabai-v4.0.0.tar.gz

I have verified that it runs on both arm64 (12.0.1) and x86-64 (11.6.1).

Edit: I am using Xcode v13.1 (13A1030d) on both devices (not command line tools) and Apple clang version 13.0.0 (clang-1300.0.29.3).

storopoli commented 2 years ago

With yabai from --HEAD, SIP totally disable, codesigned I still get this warning and I cannot install payload:

❯ yabai -v
yabai-v4.0.0
❯ sudo yabai --load-sa

could not set thread state: (os/kern) protection failure
yabai: scripting-addition failed to inject payload into Dock.app!

❯ csrutil status
System Integrity Protection status: disabled.

EDIT: I am on a MacOS M1:

❯ neofetch
                    'c.          storopoli@Duda-M1
                 ,xNMM.          -----------------
               .OMMMMo           OS: macOS 12.0.1 21A559 arm64
               OMMM0,            Host: MacBookAir10,1
     .;loddo:' loolloddol;.      Kernel: 21.1.0
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 9 mins
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 284 (brew)
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: zsh 5.8
;MMMMMMMMMMMMMMMMMMMMMMMM:       Resolution: 1440x900
:MMMMMMMMMMMMMMMMMMMMMMMM:       DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX.      WM: yabai
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.    Terminal: tmux
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk   CPU: Apple M1
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.   GPU: Apple M1
    kMMMMMMMMMMMMMMMMMMMMMMd     Memory: 1109MiB / 8192MiB
     ;KMMMMMMMWXXWMMMMMMMk.
       .cooc,.    .,coo:.
koekeishiya commented 2 years ago

@storopoli You probably have not yet changed the boot-args to allow for non-Apple-signed arm64e binaries. I have updated the wiki page here

albert-ying commented 2 years ago

Edit: I am using Xcode v13.1 (13A1030d) on both devices (not command line tools) and Apple clang version 13.0.0 (clang-1300.0.29.3).

I have the exact same version of these two things. xcode-select -p gives me /Applications/Xcode.app/Contents/Developer

I tried the prebuilt file you shared (thank you so much). It works well so far. But still wondering why brew doesn't work... and now I cannot do the brew service thing to automate it.

storopoli commented 2 years ago

I get the following error on the System recovery Terminal:

nvram boot-args=-arm64e_preview_abi
Error setting variable - 'boot-args': (iokit/common) not permitted.

And the output of csrutil status:

System Integrity Protection status: unkown (Custom Configuration).

Configuration:
    Apple Internal: enabled
    Kext Signing: enabled
    Filesystem Protection: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: enabled
    NVRAM Protections: disabled
    BaseSystem verification: enabled
    Boot-arg Restrictions: disabled
    Kernel Integrity Protection: disabled
    Authenticated Root Requirement: enabled
albert-ying commented 2 years ago

@storopoli I got the same error. Run sudo nvram boot-args=-arm64e_preview_abi in a regular terminal and reboot solved my problem.

bentosquares commented 2 years ago

Same issue here. M1 Macbook Pro, Xcode 13.1. I have re-enabled SIP and cleared nvram boot arguments to defaults so that I can go all the way through the process again twice now, but still receive

could not set thread state: (os/kern) protection failure
yabai: scripting-addition failed to inject payload into Dock.app!

when loading the scripting addon.

# yabai -v
yabai-v4.0.0
# csrutil status
System Integrity Protection status: unknown (Custom Configuration).

Configuration:
    Apple Internal: disabled
    Kext Signing: enabled
    Filesystem Protections: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: enabled
    NVRAM Protections: disabled
    BaseSystem Verification: enabled
    Boot-arg Restrictions: disabled
    Kernel Integrity Protections: disabled
    Authenticated Root Requirement: enabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
# nvram -p
ota-updateType  package
boot-args   -arm64e_preview_abi
# xcode-select -p
/Applications/Xcode.app/Contents/Developer
DennisFeldbusch commented 2 years ago

@evprkr I don't know and I definitely could be wrong, but my intuition screams that your problem (which seems to uniquely effect you) is the result of doing a app != '^(a|b|c)$' manage=off rule. I honestly wouldn't expect it to go well, and I think it alone can explain your problem. What I think is happening is like this:

  1. Something on your computer generates (invisible) windows intermittently. (Or you just open a window that you expect yabai to ignore)
  2. The main event loop of yabai dutifully starts to adjust the layout to fit the new window in
  3. The rule processor finishes processing the window added event and determines it is supposed to be a floating window, so it removes it from the layout
  4. The other windows adjust for the removal of that window in the layout (before it was necessarily ever drawn)

I would seriously consider trying an alternative approach to your filtering. Like, for example, using a float or stack layout space default and setting manage=on rules for the apps you do want to layout. I'm not sure that will work either, but I'm just ... not surprised that the thing you are trying now doesn't. I'd honestly never expect it to (and therefore would never have thought to try it)

I'm also experience these random reshuffling issue and I use the following config

Tomorrow I will test if commenting out the rules will help with the issue

I tested it with the newest master version and with my rules enabled and that solved it for me!! Thank you very much @koekeishiya !!

koekeishiya commented 2 years ago

@storopoli

I get the following error on the System recovery Terminal:

nvram boot-args=-arm64e_preview_abi Error setting variable - 'boot-args': (iokit/common) not permitted.

You are correct; I see the same behaviour. I have updated the wiki so that it mentions that this command must be run as root after exiting recovery mode and rebooting. Previously it was possible to run the nvram command in recovery mode after SIP had been disabled (possibly can be done in recovery after a reboot between the initial command to disable SIP, but then it might as well be done from a normal user session using sudo).

@bentosquares

Did you reboot after changing the boot-args? I am unable to reproduce a failure in thread_set_state on my end, with seemingly the same config:

Screenshot 2021-11-19 at 09 26 51

@DennisFeldbusch

That's great, hopefully it remains stable for the most part.

robinsturmeit commented 2 years ago

Thank you so much for the work to get this running for Monterey. It's a shame that window borders don't work anymore, but I'm happy to have my window tiling back!

However, yabai -m space --focus commands still don't seem to work for me, even though they exit with 0 as does sudo yabai --load-sa. Logs don't show anything.

System details: Screenshot 2021-11-19 at 09 45 44

storopoli commented 2 years ago

@koekeishiya I am still getting the same error after several reboots:

❯ csrutil status
System Integrity Protection status: unknown (Custom Configuration).

Configuration:
        Apple Internal: disabled
        Kext Signing: enabled
        Filesystem Protections: disabled
        Debugging Restrictions: disabled
        DTrace Restrictions: enabled
        NVRAM Protections: disabled
        BaseSystem Verification: enabled
        Boot-arg Restrictions: disabled
        Kernel Integrity Protections: disabled
        Authenticated Root Requirement: enabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
❯ xcode-select -p
/Library/Developer/CommandLineTools
❯ sudo nvram -p | grep boot
boot-volume     EF57347C-0000-AA11-AA11-00306543ECAC:576803DC-8B8D-BE42-9141-4141C7094374:FAFD0CFB-7CCB-49C0-9981-FF31A5E49942
upgrade-boot-volume     EF57347C-0000-AA11-AA11-00306543ECAC:576803DC-8B8D-BE42-9141-4141C7094374:5F9234CF-C7F4-496F-B5F4-646CA2537157
boot-args       -arm64e_preview_abi
❯ yabai -v
yabai-v4.0.0
❯ sudo yabai --load-sa
could not set thread state: (os/kern) protection failure
yabai: scripting-addition failed to inject payload into Dock.app!
koekeishiya commented 2 years ago

@robinsturmeit

You can look for logs in Console.app. Select your device on the left, and filter for "Dock" at the right, as shown in the below screenshot. Make sure no previous injection of the scripting-addition has been attempted; run pkill Dock first if it has. Clear the log window first for less noise, then run sudo yabai --load-sa and assuming it returns no error, you should see something like the following:

Screenshot 2021-11-19 at 09 52 49
koekeishiya commented 2 years ago

@storopoli Can you post the output of the following:

cat /Library/ScriptingAdditions/yabai.osax/Contents/Info.plist | grep -A 1 CFBundleVersion

file /Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload

file /Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader

This is what it should look like:

~ cat /Library/ScriptingAdditions/yabai.osax/Contents/Info.plist | grep -A 1 CFBundleVersion                 9:57
<key>CFBundleVersion</key>
<string>2.0.0</string>
~ file /Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload       9:57
/Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64e:Mach-O 64-bit dynamically linked shared library arm64e]
/Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload (for architecture x86_64):  Mach-O 64-bit dynamically linked shared library x86_64
/Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload (for architecture arm64e):  Mach-O 64-bit dynamically linked shared library arm64e
~ file /Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader                                     9:57
/Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader (for architecture x86_64):    Mach-O 64-bit executable x86_64
/Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader (for architecture arm64e):    Mach-O 64-bit executable arm64e
storopoli commented 2 years ago

Here it is:

❯ cat /Library/ScriptingAdditions/yabai.osax/Contents/Info.plist | grep -A 1 CFBundleVersion
<key>CFBundleVersion</key>
<string>2.0.0</string>
❯ file /Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload
/Library/ScriptingAdditions/yabai.osax/Contents/Resources/payload.bundle/Contents/MacOS/payload: Mach-O 64-bit dynamically linked shared library arm64
❯ file /Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader
/Library/ScriptingAdditions/yabai.osax/Contents/MacOS/mach_loader: Mach-O 64-bit executable arm64
koekeishiya commented 2 years ago

Well the issue is that for some reason your scripting-addition is not being built as a universal binary. I don't really know why that is. The current master builds a universal binary on both my Intel MacBook running 11.6.1, and my Apple Silicon MacBook running 12.0.1. Note that I am not using brew while testing, so maybe that could somehow cause a difference in compilation, even though it uses the same makefile?? I'm not sure how to debug that issue further.

storopoli commented 2 years ago

I will try to build from master without brew

storopoli commented 2 years ago

I cannot build from master:

sudo make install
rm -rf ./bin
clang ./src/osax/loader.m -shared -O2 -mmacosx-version-min=10.13 -o ./src/osax/loader -framework Foundation
clang ./src/osax/payload.m -shared -fPIC -O2 -mmacosx-version-min=10.13 -arch arm64e -o ./src/osax/payload -framework Foundation -framework Carbon
./src/osax/payload.m:29:10: fatal error: 'ptrauth.h' file not found
#include <ptrauth.h>
         ^~~~~~~~~~~
1 error generated.
make: *** [src/osax/loader_bin.c] Error 1
koekeishiya commented 2 years ago

I wonder what exactly is causing the command run from the makefile to differ from the one actually at the master branch. Do you have some custom clang version installed that takes precedence over the XCode / command line tools version? This seems likely to me as it appears that a standard header that should be included, is in fact not.

This is the line i expected to see:

clang ./src/osax/payload.m -shared -fPIC -O2 -mmacosx-version-min=10.13 -arch x86_64 -arch arm64e -o ./src/osax/payload -framework Foundation -framework Carbon

Notice how it refuses to build a universal binary containing two images; the x86_64 part is just stripped from your version, which shouldn't happen.

storopoli commented 2 years ago

Ok, I think I got this. I've installed with brew install yabai --HEAD and them downloaded the prebuilt binary I posted in: #923 (comment) .

Then I did this (a kinda hack):

❯ cd Desktop/archive/bin/
mv yabai /opt/homebrew/Cellar/yabai/HEAD-6bcf544/bin/yabai
override r-xr-xr-x  storopoli/admin for /opt/homebrew/Cellar/yabai/HEAD-6bcf544/bin/yabai? (y/n [n]) y

It seem to be working now.

koekeishiya commented 2 years ago

Closing in favour of #1054.

muvox commented 2 years ago

Ok, I think I got this. I've installed with brew install yabai --HEAD and them downloaded the prebuilt binary I posted in: #923 (comment) .

Then I did this (a kinda hack):

❯ cd Desktop/archive/bin/
mv yabai /opt/homebrew/Cellar/yabai/HEAD-6bcf544/bin/yabai
override r-xr-xr-x  storopoli/admin for /opt/homebrew/Cellar/yabai/HEAD-6bcf544/bin/yabai? (y/n [n]) y

It seem to be working now.

For whatever reason, this worked. I tried brew install head and sudo make install and I'm pretty confident that I followed the instructions to the letter. After I saw this comment, i removed all old installations and did a brew install koekeishiya/formulae/yabai --HEAD followed by copying the before mentioned pre-built binary to the correct directory. Install sa and load sa worked like a charm and I can keep working again! Huge thanks to @koekeishiya and @storopoli

bentosquares commented 2 years ago

@bentosquares

Did you reboot after changing the boot-args? I am unable to reproduce a failure in thread_set_state on my end, with seemingly the same config: Screenshot 2021-11-19 at 09 26 51

I had done, but I see you've tracked down the issue, my results mirror that of @storopoli. The hack of replacing the binary with the pre-compiled copy has also worked for me. Thanks to you both. Good luck in tracking down the issues with the Brew process! And thanks for such a great piece of software.

Christopher-Hayes commented 2 years ago

Closing in favour of #1054.

I'm running Monterey on Intel, it's hard to follow what solutions in that thread are for Monterey and what issues are for M1.

koekeishiya commented 2 years ago

Install the latest version released (v4.0.0) either through brew or grab it from the GitHub releases page.

Christopher-Hayes commented 2 years ago

@koekeishiya thanks! After upgrading 3.3 -> 4.0, it looks like that fixed the scripting additions notification spam.

Issue Note
build from source fails
Click to expand build log ``` ❯ make rm -rf ./bin xcrun clang ./src/osax/loader.m -shared -O2 -mmacosx-version-min=10.13 -o ./src/osax/loader -framework Foundation xcrun clang ./src/osax/payload.m -shared -fPIC -O2 -mmacosx-version-min=10.13 -o ./src/osax/payload -framework Foundation -framework Carbon ./src/osax/payload.m:37:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSGetConnectionPSN(int cid, ProcessSerialNumber *psn); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:37:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSGetConnectionPSN(int cid, ProcessSerialNumber *psn); ^ * ./src/osax/payload.m:38:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSSetWindowAlpha(int cid, uint32_t wid, float alpha); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:38:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSSetWindowAlpha(int cid, uint32_t wid, float alpha); ^ * ./src/osax/payload.m:39:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSSetWindowListAlpha(int cid, const uint32_t *window_list, int window_count, float alpha, float duration); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:39:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSSetWindowListAlpha(int cid, const uint32_t *window_list, int window_count, float alpha, float duration); ^ * ./src/osax/payload.m:40:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSSetWindowLevel(int cid, uint32_t wid, int level); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:40:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSSetWindowLevel(int cid, uint32_t wid, int level); ^ * ./src/osax/payload.m:42:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSReassociateWindowsSpacesByGeometry(int cid, CFArrayRef window_list); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:42:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSReassociateWindowsSpacesByGeometry(int cid, CFArrayRef window_list); ^ * ./src/osax/payload.m:43:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSGetWindowOwner(int cid, uint32_t wid, int *window_cid); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:43:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSGetWindowOwner(int cid, uint32_t wid, int *window_cid); ^ * ./src/osax/payload.m:44:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSInvalidateWindowShadow(int cid, CGWindowID wid); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:44:51: error: unknown type name 'CGWindowID' extern CGError CGSInvalidateWindowShadow(int cid, CGWindowID wid); ^ ./src/osax/payload.m:44:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSInvalidateWindowShadow(int cid, CGWindowID wid); ^ * ./src/osax/payload.m:45:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSSetWindowTags(int cid, uint32_t wid, const int tags[2], size_t maxTagSize); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:45:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSSetWindowTags(int cid, uint32_t wid, const int tags[2], size_t maxTagSize); ^ * ./src/osax/payload.m:46:8: error: unknown type name 'CGError'; did you mean 'NSError'? extern CGError CGSClearWindowTags(int cid, uint32_t wid, const int tags[2], size_t maxTagSize); ^~~~~~~ NSError /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:8:88: note: 'NSError' declared here @class NSAppleEventDescriptor, NSArray, NSDictionary, NSError, NSFileHandle, NSString, NSURL, NSXPCConnection; ^ ./src/osax/payload.m:46:8: error: interface type 'NSError' cannot be returned by value; did you forget * in 'NSError'? extern CGError CGSClearWindowTags(int cid, uint32_t wid, const int tags[2], size_t maxTagSize); ^ * fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make: *** [src/osax/sa_loader.c] Error 1 ```
constant crashes See #920 for details.