Open jli opened 2 years ago
One thing you can do to get more information is to open Console.app, start streaming, and filter it using the string forceFullDesktopBar
. That should display both information from the process itself, as well as print statements executed from within the Dock.
When it injects code into the Dock, you should see something like the following get printed to Console:
default 13:59:41.096805-0400 forceFullDesktopBar Found Dock process... will inject into pid: 60104
default 13:59:42.299407-0400 Dock forceFullDesktopBar: dockInjection installed and running
default 13:59:42.299503-0400 Dock forceFullDesktopBar: Using 10.13 and later method...
default 13:59:42.299644-0400 Dock forceFullDesktopBar: Successfully swizzled target method in _TtC4Dock8WVExpose class
default 13:59:42.299702-0400 Dock forceFullDesktopBar: Successfully swizzled target method in DOCKGestures class
default 13:59:42.299717-0400 Dock forceFullDesktopBar: starting interception
default 13:59:42.304627-0400 Dock forceFullDesktopBar: successfully rebound CGSCurrentInputPointerPosition symbol
Is anything like that bring printed? Or are there any error messages instead?
Also, is the Dock process restarting? You can tell based on whether its PID keeps changing.
@briankendall thx! I don't see messages that indicate it successfully injected/swizzled stuff.
(Also, I noticed that forceFullDesktopBar doesn't always work after a reboot, either.)
When i pkill Dock
:
default 17:51:56.782828-0400 forceFullDesktopBar Found Dock process... will inject into pid: 7260
When i sudo pkill forceFull
:
default 17:52:37.307923-0400 forceFullDesktopBar Will continuously check for Dock processes...
default 17:52:37.308285-0400 forceFullDesktopBar Found Dock process... will inject into pid: 7260
default 17:52:37.331295-0400 tccd AUTHREQ_ATTRIBUTION: msgID=7477.1, attribution={requesting={<TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=7477, auid=0, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>}, },
default 17:52:37.332587-0400 tccd AUTHREQ_SUBJECT: msgID=7477.1, subject=/usr/local/forceFullDesktopBar/forceFullDesktopBar,
default 17:52:37.335552-0400 tccd AUTHREQ_ATTRIBUTION: msgID=154.317, attribution={accessing={<TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=7477, auid=0, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>}, requesting={<TCCDProcess: identifier=com.apple.WindowServer, pid=154, auid=88, euid=88, binary_path=/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/Resources/WindowServer>}, },
default 17:52:37.335637-0400 tccd requestor: <TCCDProcess: identifier=com.apple.WindowServer, pid=154, auid=88, euid=88, binary_path=/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/Resources/WindowServer> is checking access for accessor <TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=7477, auid=0, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>
default 17:52:37.336658-0400 tccd AUTHREQ_SUBJECT: msgID=154.317, subject=/usr/local/forceFullDesktopBar/forceFullDesktopBar,
default 17:52:37.339173-0400 forceFullDesktopBar Received configuration update from daemon (initial)
default 17:52:37.340064-0400 forceFullDesktopBar Current system appearance, (HLTB: 2), (SLS: 1)
default 17:52:37.343457-0400 forceFullDesktopBar No persisted cache on this platform.
default 17:52:37.344919-0400 forceFullDesktopBar Post-registration system appearance: (HLTB: 2)
Also, is the Dock process restarting? You can tell based on whether its PID keeps changing.
In general, it's not regularly restarting. I'm not sure if it's restarting in between when forceFullDesktopBar is working and when it stops working.
Am I correct that after you kill the Dock and you get the Found Dock process... will inject into pid
, it's still not working and you're not seeing desktop previews? If you're not getting anything printed to console about successful injecting / swizzling then I'm guessing it's not working, but I want to check and make sure.
Am I correct that after you kill the Dock and you get the Found Dock process... will inject into pid, it's still not working and you're not seeing desktop previews?
That's right - no combination of killing the Dock or restarting forceFullDesktopBar works, I'm not seeing desktop previews.
I'm also now kind of questioning whether I ever got it to work, because I haven't seen it working after a few restarts now. I wonder if I just had my mouse cursor near the top of the screen which triggered the preview...
I just tried uninstalling and reinstalling, then rebooting, and still no dice. I now think this never worked for me, and I only thought it did because the default cursor position after booting is in the upper left corner, so that caused the desktops to be shown when I activated Mission Control.
@briankendall do you have any ideas for ways I could debug this further? 🙏
With forceFullDesktopBar running, and Console.app streaming and filtering based on forceFullDesktopBar
, can you try restarting the Dock?
The best way to do so is to execute these two commands:
launchctl stop com.apple.Dock.agent
launchctl start com.apple.Dock.agent
Note the second command may not be necessary, but sometimes the Dock doesn't restart automatically and it's needed.
When you do this, what gets printed to Console, particularly after the line Found Dock process... will inject into pid: XYZ
?
thanks for your response!
When you do this, what gets printed to Console, particularly after the line Found Dock process... will inject into pid: XYZ?
I see that line, but nothing else is printed after it.
Details from me restarting the dock twice:
shell:
$ ps ax | grep -i dock
[...]
7186 ?? S 0:01.22 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
7187 ?? Ss 0:00.09 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
$ launchctl stop com.apple.Dock.agent
$ ps ax | grep -i dock
[...]
9922 ?? S 0:01.37 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
9923 ?? Ss 0:00.11 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
$ launchctl stop com.apple.Dock.agent
$ ps ax | grep -i dock
[...]
9936 ?? S 0:01.34 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
9937 ?? Ss 0:00.10 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
Console.app:
default 08:29:50.254206-0400 forceFullDesktopBar Found Dock process... will inject into pid: 9922
default 08:29:58.244880-0400 forceFullDesktopBar Found Dock process... will inject into pid: 9936
This makes it clear that nothing is being successfully injected into the Dock even though forceFullDesktopBar isn't reporting an error.
Let's get the obvious out of the way: can you confirm that SIP is disabled, and that you've enabled arm64e? (i.e. you followed step 1 of the "easy" installation instructions?)
You can confirm it without rebooting by entering these commands into the terminal: csrutil status
which should print: System Integrity Protection status: disabled.
and nvram -p | grep boot-args
which should print boot-args -arm64e_preview_abi
or at least include -arm64e_preview_abi
in its output
yep, I followed those instructions, and get the expected output.
$ csrutil status
System Integrity Protection status: disabled.
$ nvram -p | grep boot-args
boot-args -arm64e_preview_abi
(thx for your continued help 🙏 )
Can you say whether the Dock is restarting / crashing when you run forceFullDesktopBar? Much like restarting it intentionally, along with its PID changing, you'd see the desktop flash black for a moment and the Dock itself temporarily disappear if it's not set to auto-hide.
Can you say whether the Dock is restarting / crashing when you run forceFullDesktopBar?
no, the Dock doesn't appear to restart or crash when i run forceFullDesktopBar.
here's what i did:
sudo launchctl remove net.briankendall.forceFullDesktopBar
"forceFull"
sudo /usr/local/forceFullDesktopBar/forceFullDesktopBar
once in the shellwhat i observed:
# after `launchctl stop`, forceFullDesktopBar isn't running anymore
$ ps ax | grep -E '(forceFull|Dock.app)'
85642 ?? S 0:00.93 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
85645 ?? Ss 0:00.13 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
85968 s003 R+ 0:00.00 grep -E (forceFull|Dock.app)
# running it manually, it runs and returns in ~1 second
$ sudo /usr/local/forceFullDesktopBar/forceFullDesktopBar
forceFullDestkopBar v1.2
2022-08-13 13:53:44.900 forceFullDesktopBar[85983:2334538] Searching for Dock processes...
2022-08-13 13:53:44.900 forceFullDesktopBar[85983:2334538] Found Dock process... will inject into pid: 85642
frida attached to process 85642
frida script loaded
frida session and device are closed
# Dock.app PID is the same and i didn't see any the Dock flash or the desktop go black
$ ps ax | grep -E '(forceFull|Dock.app)'
85642 ?? S 0:00.94 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
85645 ?? Ss 0:00.13 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
86431 s003 R+ 0:00.00 grep -E (forceFull|Dock.app)
when i ran sudo /usr/local/forceFullDesktopBar/forceFullDesktopBar
, i saw this in Console.app:
default 13:53:44.988152-0400 forceFullDesktopBar Entering exit handler.
default 13:53:44.988193-0400 forceFullDesktopBar Exiting exit handler.
is that helpful at all?
...ok weird.... so i retried manually running forceFullDesktopBar a few times, and got different results (first i noticed more output in Console.app, and then one time i got forceFullDesktopBar working (hitting the Mission Control keyboard shortcut showed the full desktop bar)! but i cannot reproduce getting it into a working state. i'm finding this super confusing! 😅
here's what i tried a few times. as i said, once while restarting and relaunching stuff, it seemed like forceFullDesktopBar was working. but i've tried these exact steps a few times, and haven't been able to reproduce that, so not exactly sure what sequence of steps led to that once time it was working...
### restart Dock, ensure forceFullDesktopBar isn't running
$ date; ps ax | grep -E '(Dock.app|forceFull)'; date
Sat Aug 13 14:22:06 EDT 2022
90210 ?? S 0:00.90 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
90211 ?? Ss 0:00.10 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
90861 s003 R+ 0:00.00 grep -E (Dock.app|forceFull)
Sat Aug 13 14:22:06 EDT 2022
$ date; kill 90210; date
Sat Aug 13 14:22:25 EDT 2022
Sat Aug 13 14:22:25 EDT 2022
$ date; ps ax | grep -E '(Dock.app|forceFull)'; date
Sat Aug 13 14:22:35 EDT 2022
90880 ?? S 0:00.80 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
91076 ?? Ss 0:00.10 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
91086 s003 R+ 0:00.00 grep -E (Dock.app|forceFull)
Sat Aug 13 14:22:35 EDT 2022
### manually run forceFullDesktopBar
$ date; sudo /usr/local/forceFullDesktopBar/forceFullDesktopBar; date
Sat Aug 13 14:22:57 EDT 2022
Password:
forceFullDestkopBar v1.2
2022-08-13 14:22:59.898 forceFullDesktopBar[91103:2355529] Searching for Dock processes...
2022-08-13 14:22:59.898 forceFullDesktopBar[91103:2355529] Found Dock process... will inject into pid: 90880
frida attached to process 90880
frida script loaded
frida session and device are closed
Sat Aug 13 14:22:59 EDT 2022
# Dock didn't restart, and forceFullDesktopBar not in daemon mode
$ date; ps ax | grep -E '(Dock.app|forceFull)'; date
Sat Aug 13 14:23:13 EDT 2022
90880 ?? S 0:00.82 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
91076 ?? Ss 0:00.10 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
91117 s003 R+ 0:00.00 grep -E (Dock.app|forceFull)
Sat Aug 13 14:23:13 EDT 2022
Console.app output: filtering for "forceFull", starting from 14:22:56, right before i ran forceFullDesktopBar
:
default 14:22:59.846314-0400 sudo j : TTY=ttys003 ; PWD=/Users/j ; USER=root ; COMMAND=/usr/local/forceFullDesktopBar/forceFullDesktopBar
default 14:22:59.848983-0400 kernel forceFullDesktop[91103] triggered unnest of range 0x1f0000000->0x1f2000000 of DYLD shared region in VM map 0xa07f039e88f36e3. While not abnormal for debuggers, this increases system memory footprint until the target exits.
default 14:22:59.848993-0400 kernel forceFullDesktop[91103] triggered unnest of range 0x1f2000000->0x1f4000000 of DYLD shared region in VM map 0xa07f039e88f36e3. While not abnormal for debuggers, this increases system memory footprint until the target exits.
default 14:22:59.898466-0400 forceFullDesktopBar Searching for Dock processes...
default 14:22:59.898839-0400 forceFullDesktopBar Found Dock process... will inject into pid: 90880
default 14:22:59.916023-0400 tccd AUTHREQ_ATTRIBUTION: msgID=91103.1, attribution={responsible={<TCCDProcess: identifier=com.googlecode.iterm2, pid=99335, auid=501, euid=501, responsible_path=/Applications/iTerm.app/Contents/MacOS/iTerm2, binary_path=/Applications/iTerm.app/Contents/MacOS/iTerm2>}, requesting={<TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=91103, auid=501, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>}, },
default 14:22:59.919987-0400 tccd AUTHREQ_ATTRIBUTION: msgID=156.2972, attribution={responsible={<TCCDProcess: identifier=com.googlecode.iterm2, pid=99335, auid=501, euid=501, responsible_path=/Applications/iTerm.app/Contents/MacOS/iTerm2, binary_path=/Applications/iTerm.app/Contents/MacOS/iTerm2>}, accessing={<TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=91103, auid=501, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>}, requesting={<TCCDProcess: identifier=com.apple.WindowServer, pid=156, auid=88, euid=88, binary_path=/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/Resources/WindowServer>}, },
default 14:22:59.920128-0400 tccd requestor: <TCCDProcess: identifier=com.apple.WindowServer, pid=156, auid=88, euid=88, binary_path=/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/Resources/WindowServer> is checking access for accessor <TCCDProcess: identifier=forceFullDesktopBar-555549441e9e92e3fbfc3bc88a31f1b59af95489, pid=91103, auid=501, euid=0, binary_path=/usr/local/forceFullDesktopBar/forceFullDesktopBar>
default 14:22:59.924460-0400 forceFullDesktopBar Current system appearance, (HLTB: 2), (SLS: 1)
default 14:22:59.925966-0400 forceFullDesktopBar Received configuration update from daemon (initial)
default 14:22:59.926913-0400 forceFullDesktopBar No persisted cache on this platform.
default 14:22:59.928237-0400 forceFullDesktopBar Post-registration system appearance: (HLTB: 2)
default 14:22:59.976109-0400 forceFullDesktopBar Entering exit handler.
default 14:22:59.976142-0400 forceFullDesktopBar Exiting exit handler.
Console.app output: filtering for "Dock"
, starting from 14:22:56, right before i ran forceFullDesktopBar:
default 14:22:35.721312-0400 Dock LSExceptions shared instance invalidated for timeout.
default 14:22:36.057260-0400 com.apple.dock.extra LSExceptions shared instance invalidated for timeout.
default 14:22:59.898466-0400 forceFullDesktopBar Searching for Dock processes...
default 14:22:59.898839-0400 forceFullDesktopBar Found Dock process... will inject into pid: 90880
default 14:22:59.969635-0400 kernel Dock[90880] triggered unnest of range 0x19e000000->0x1a0000000 of DYLD shared region in VM map 0xa07f039e88f2483. While not abnormal for debuggers, this increases system memory footprint until the target exits.
default 14:23:08.402658-0400 runningboardd Invalidating assertion 162-156-84512 (target:[daemon<com.apple.Dock.agent(501)>:90880]) from originator [daemon<com.apple.WindowServer(88)>:156]
default 14:23:08.514861-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring jetsam update because this process is not memory-managed
default 14:23:08.515165-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring suspend because this process is not lifecycle managed
default 14:23:08.515316-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring GPU update because this process is not GPU managed
default 14:23:08.515919-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Skipping AppNap state - not lifecycle managed
default 14:23:39.588080-0400 Dock Changing from mode 0 to 1
default 14:23:39.608938-0400 Dock Changing from mode 1 to 1 with fluid gesture
default 14:23:39.874520-0400 Dock Changing from mode 1 to 1 with fluid gesture
Console.app output, filtering for "Dock"
, when i hit the mission control key twice to enable Mission Control and then go back to normal desktop mode:
default 14:33:33.710309-0400 Dock Changing from mode 0 to 1
default 14:33:33.719578-0400 Dock Changing from mode 1 to 1 with fluid gesture
default 14:33:33.978682-0400 Dock Changing from mode 1 to 1 with fluid gesture
default 14:33:33.985245-0400 runningboardd Acquiring assertion targeting [daemon<com.apple.Dock.agent(501)>:90880] from originator [daemon<com.apple.WindowServer(88)>:156] with description <RBSAssertionDescriptor| "AppVisible" ID:162-156-84890 target:90880 attributes:[
<RBSDomainAttribute| domain:"com.apple.appnap" name:"AppVisible" sourceEnvironment:"(null)">,
<RBSAcquisitionCompletionAttribute| policy:AfterApplication>
]>
default 14:33:33.985447-0400 runningboardd Assertion 162-156-84890 (target:[daemon<com.apple.Dock.agent(501)>:90880]) will be created as active
default 14:33:33.986360-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring jetsam update because this process is not memory-managed
default 14:33:33.986423-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring suspend because this process is not lifecycle managed
default 14:33:33.986480-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring GPU update because this process is not GPU managed
default 14:33:33.986583-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Skipping AppNap state - not lifecycle managed
default 14:33:36.528352-0400 Dock Changing from mode 1 to 0
default 14:33:36.783591-0400 Dock Changing from mode 0 to 0 with fluid gesture
default 14:33:36.783904-0400 runningboardd Invalidating assertion 162-156-84890 (target:[daemon<com.apple.Dock.agent(501)>:90880]) from originator [daemon<com.apple.WindowServer(88)>:156]
default 14:33:36.892198-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring jetsam update because this process is not memory-managed
default 14:33:36.892275-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring suspend because this process is not lifecycle managed
default 14:33:36.892319-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Ignoring GPU update because this process is not GPU managed
default 14:33:36.892515-0400 runningboardd [daemon<com.apple.Dock.agent(501)>:90880] Skipping AppNap state - not lifecycle managed
I'll admit I'm at a loss as to why you're getting such inconsistent results, especially since I'm not having any trouble on a macOS 12.4 / Apple Silicon system of my own. I'll mention a number of things below, though, in the hopes it clarifies something and helps you better interpret your data and results. I may mention some things you already know, but that's just because I'm trying to be thorough in the off-chance you missed something important.
Most the output you're getting from the Dock is irrelevant, and is just normal output you'd expect to see without forceFullDesktopBar
meddling with anything. Any relevant output from the Dock's process will have the text "forceFullDesktopBar" in it.
If the Dock has already had forceFullDesktopBar
's code injected into it, nothing will happen subsequent times forceFullDesktopBar
is run, though the output from forceFullDesktopBar
will give no indication of this; it will report that it successfully injected into the Dock.
Each time you quit and restart the Dock, it needs to have the code injected into it again. (The purpose of daemon mode is to have it automatically monitor for when the Dock restarts and inject into it again automatically.)
The only output that forceFullDesktopBar
(the process) is intentionally printing itself is the following (copied from your post):
forceFullDestkopBar v1.2
2022-08-13 14:22:59.898 forceFullDesktopBar[91103:2355529] Searching for Dock processes...
2022-08-13 14:22:59.898 forceFullDesktopBar[91103:2355529] Found Dock process... will inject into pid: 90880
frida attached to process 90880
frida script loaded
frida session and device are closed
Everything else you're seeing printed in Console from the forceFullDesktopBar
process (such as Entering exit handler
) is crufty output that gets printed automatically by macOS, and is irrelevant.
The key bit of output that really ought to be appearing in Console.app is the following:
Dock 16:30:30.441663 -0400 default forceFullDesktopBar: dockInjection installed and running
Dock 16:30:30.441813 -0400 default forceFullDesktopBar: Using 10.13 and later method...
Dock 16:30:30.442856 -0400 default forceFullDesktopBar: Successfully swizzled target method in _TtC4Dock8WVExpose class
Dock 16:30:30.443085 -0400 default forceFullDesktopBar: Successfully swizzled target method in DOCKGestures class
Dock 16:30:30.445351 -0400 default forceFullDesktopBar: successfully rebound CGSCurrentInputPointerPosition symbol
Obviously the timestamps will vary, but those lines are printed from the code that gets injected into the Dock. Them appearing means a) forceFullDesktopBar
has successfully injected the code and gotten it to run within the Dock's process, and b) it was able to make the modifications to the Dock that are needed to alter its behavior. If you don't see these lines get printed after running forceFullDesktopBar
when the Dock has not had any code injected into it yet, then forceFullDesktopBar
didn't work.
Usually when it doesn't work, forceFullDesktopBar
will print an error message, or the Dock will crash, or the forceFullDesktopBar-related output that gets printed from within the Dock's process will indicate an error. The baffling thing is that you're not seeing any of that happen when it doesn't work, which means I have no idea where to begin debugging this!
Sorry I haven't been able to be more help this time, but maybe the above will help you piece together what's happening? Code injection is something of a magical black box that I don't understand terribly well, and the fact that I'm using third party libraries to do it means that, when it goes wrong, there's not a lot I can offer to help fix it.
thanks so much for the extra detail and your help so far. I'll keep an eye out for those key messages.
is frida a separate process, or just some library code?
is it tricky to build and run my own forceFillDesktopBar (so i can add some print statements or something to help debug)? I've used XCode to build and run binaries before, but don't know it super well and also not that familiar with Mac security restrictions.
thanks again!
frida is a separate library. There shouldn't be anything stopping you from building your own version of forceFullDesktopBar. Just clone / download the repo, grab the needed static libraries from frida's release page, and then build the Xcode project. If anything goes wrong I can try to help out.
For frida, you'll need libfrida-core-arm64e.a and libfrida-gum-arm64e.a. You should be able to get those from here: https://github.com/frida/frida/releases by downloading the libfrida-core-devkit and libfrida-gum-devkit for arm64e macOS.
It looks like I made a combined arm64e / x86_64 static library of these on my own system -- don't remember why I did it that way -- but should be able to fix that by removing the references to the x86-64 / arm64e combined libraries and replace it with just the arm64e versions, and set the project to only compile for arm64e.
I just installed forceFullDesktopBar v1.2 on a MacBook Air (M1, 2020) running Monterey 12.4 (21F79).
What I observe is that immediately after rebooting, forceFullDesktopBar is working as expected and I see the full desktop bar when activating Mission Control. But that shortly after (within 1 minute?), I get the usual/default/non-full behavior again.
I see that it's running as root in daemon mode, as expected:
Here's what I see when I run it directly:
Restarting the Dock doesn't help:
When I run it in daemon mode, I see that it notices new Dock processes, but it's still not working:
Do you have any ideas about what could be going wrong? Is there any way to get more debug info?
Thanks!!