Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
I too started out on an old 500 GB fw spinner, (just in case drive got hosed w/APFS) once successful I installed on internal SSD. Has no issues with HD, aside from slow, from about 4+ minutes to about 45 seconds to bootup.
Agreed. I can't recommend enough SSD and ram as the most significant upgrade one can make to breathe new life in a legacy machine. New OSes are nice, and Mojave does seem like it runs faster than the previous two, and I do understand the price-performance-value argument, so it depends on your use case...
[doublepost=1534854855][/doublepost]Quartz Debug from the Additional Developer Tools download is another translucent app in Light or Dark mode. So far I have : the Dock and QD. Has anyone else found another significant one in Mojave?
QD is an old app and just doesn't switch modes - so it stays translucent. It does let you toggle 2D acceleration off - the window glitches disappear (without a significant hit on performance by the way) until you mess with some toolbars. But interesting.
 
Agreed. I can't recommend enough SSD and ram as the most significant upgrade one can make to breathe new life in a legacy machine. New OSes are nice, and Mojave does seem like it runs faster than the previous two, and I do understand the price-performance-value argument, so it depends on your use case...
[doublepost=1534854855][/doublepost]Quartz Debug from the Additional Developer Tools download is another translucent app in Light or Dark mode. So far I have : the Dock and QD. Has anyone else found another significant one in Mojave?
QD is an old app and just doesn't switch modes - so it stays translucent. It does let you toggle 2D acceleration off - the window glitches disappear (without a significant hit on performance by the way) until you mess with some toolbars. But interesting.
Calculator
Messenger has the top bar translucent on light mode
 

Attachments

  • Captura de ecrã 2018-08-21, às 14.08.26.png
    Captura de ecrã 2018-08-21, às 14.08.26.png
    25.8 KB · Views: 181
Calculator
Messenger has the top bar translucent on light mode
I see. Subtle but your right.
The Messages side bar is still opaque but the top bar pane on the right has (reduced) translucency.
On Calculator the number tiles have a subtle translucency. Hard to tell on the lowly LCD on mbp 5.3, but it's there nonetheless. Guess I need to look harder.

Generally, I think all the sidebars on AppKit Table Views are affected. That is the most egregious glitch. But a fix at that level would have the most impact.
 
  • Like
Reactions: TimothyR734
I see. Subtle but your right.
The Messages side bar is still opaque but the top bar pane on the right has (reduced) translucency.
On Calculator the number tiles have a subtle translucency. Hard to tell on the lowly LCD on mbp 5.3, but it's there nonetheless. Guess I need to look harder.

Generally, I think all the sidebars on AppKit Table Views are affected. That is the most egregious glitch. But a fix at that level would have the most impact.

Yes. Thank you for your effort.
 
  • Like
Reactions: TimothyR734
Yes. Thank you for your effort.
No problem. I have decompiled translucency related code isolated. Finding the optimal place (with the least potential for side effects) to test a fix is my issue right now. As we can see, not all apps/utilities handle it the same way. In some cases Apple apps are not following their own guidelines, but this is still beta of course. Like changing the tires on a moving car...
 
Apple did say Mojave will support HDD. So no one's saying it's a show stopper.
But I know for a fact that they did so mainly to support their line of Fusion drives (hybrid SSD+HDD) and as a second phased roll-out. So you may be good. But I wouldn't bet that all HDDs are the same or perform consistently. I think this is a good article. Obviously they've had a few months to tune. I'm slowly phasing out all my spin drives...
Thanks for the info. I would not be averse to upgrading to a new SSD, now that the prices have become so reasonable -- but, on the machine I'm running (Mac mini Mid 2011), hard drives are not user replaceable (Apple only supports user-replaceable memory on this model). I'm not confident enough to start hacking through the insides of this computer, trying to access hardware components that Apple has deliberately hidden away, nor do I want to run my computer from an external drive (I've already got an external HDD attached for backups, and that's fine, but having another external SSD as my main drive would be too much clutter).

My plan for an eventual solution is to replace this machine with another refurbished Mac mini Late 2012 with an SSD (not to mention native support for Mojave). I got this one on eBay for $325 about 16 months ago; I see I can get a Late 2012 model there, now, for $350-400, with an SSD already installed. (Don't want a 2014 model; too many restrictions.) The only problem is coming up with the moolah ($$$) ;).
 
Last edited:
  • Like
Reactions: TimothyR734
No problem. I have decompiled translucency related code isolated. Finding the optimal place (with the least potential for side effects) to test a fix is my issue right now. As we can see, not all apps/utilities handle it the same way. In some cases Apple apps are not following their own guidelines, but this is still beta of course. Like changing the tires on a moving car...

Is it possible to take that code and put it where it has no translucent like Finder?
 
  • Like
Reactions: TimothyR734
Getting the ø prohibitory symbol if you hold [shift ] for safe booting often is due to a dynamic overridden boot parameter value "no_compat_check", so you should embed it in all the ways possible:

editing the boot plist:
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
adding:
<key>Kernel Flags</key>
<string>-v -no_compat_check</string>


booting from Recovery HD or Mojave USB Installer launch Terminal and type:
csrutil disable
nvram boot-args="-v -no_compat_check"
reboot


While instead if you use Refit or Refind bootloader you have to highlight (only with keyboard arrows) the Mojave partition, press F2 then from the submenu highlight "safe mode" press again F2 and manually type followed by enter key:
-v -x -no_compat_check
Thanks for the info jackluke, give it a shot as soon as I have my caffeine fix.
 
Last edited:
  • Like
Reactions: jackluke
Thanks for the info. I would not be averse to upgrading to a new SSD, now that the prices have become so reasonable -- but, on the machine I'm running (Mac mini Mid 2011), hard drives are not user replaceable (Apple only supports user-replaceable memory on this model). I'm not confident enough to start hacking through the insides of this computer, trying to access hardware components that Apple has deliberately hidden away, nor do I want to run my computer from an external drive (I've already got an external HDD attached for backups, and that's fine, but having another external one as my main drive would be too much clutter).

My plan for an eventual solution is to replace this machine with another refurbished Mac mini Late 2012 with an SSD (not to mention native support for Mojave). I got this one on eBay for $325 about 16 months ago; I see I can get a Late 2012 model there, now, for $350-400, with an SSD already installed. (Don't want a 2014 model; too many restrictions.) The only problem is coming up with the moolah ($$$) ;).
Balancing price and value on our legacy machines is always a challenge. I hear you. ~$300 for a late 2012 is not bad though. If price is a concern (for all of us...) have you considered building your own: get logic boards, case etc..
If your so inclined...DIY is not for everyone.

By the way, Apple is about to announce a new Mac Mini (pro?) . That may be exciting...
[doublepost=1534865163][/doublepost]
Is it possible to take that code and put it where it has no translucent like Finder?
Yes. That's the general approach. Without being too technical (I'm sorry) I found some legacy translucency code still hanging around in AppKit. It seems like in some cases the logic falls through and calls these old routines - or not. It's disassembled assembly so hard to read and decipher properly (my assembly is a little rusty) . It looks like beta code so things are still in flux at Apple...

Instead of patching binaries, a more elegant approach is to "swizzle" some functions i.e. replace a method with your own. A good example of this is how SUVMMFaker (by czo) works for us to fool macOS into thinking we are "supported" machines -> allowing a download in software update. I've customized czo's faker for my own purposes on Mojave, so I know how to do this. It's just finding the right method(s) to override and test. No guarantees of course, but a promising approach. It will take some time though...
 
Last edited:
Balancing price and value on our legacy machines is always a challenge. I hear you. ~$300 for a late 2012 is not bad though. If price is a concern (for all of us...) have you concerned building your own: get logic boards, case etc..
If your so inclined...DIY is not for everyone.

By the way, Apple is about to announce a new Mac Mini (pro?) . That may be exciting...
Don't imagine one could build a DIY Mac mini for all that much less than $350... besides, I'm not really a hobbyist. :)

Just read about the possible new Mac mini Pro on Extreme Tech -- but they're saying it will probably be more expensive than the most expensive current model (i.e., skywards of $1,000!).
 
Don't imagine one could build a DIY Mac mini for all that much less than $350... besides, I'm not really a hobbyist. :)

Just read about the possible new Mac mini Pro on Extreme Tech -- but they're saying it will probably be more expensive than the most expensive current model (i.e., skywards of $1,000!).
Ouch! Apple at it again...oh well.
 
  • Like
Reactions: TimothyR734
you c
@dosdude1

Just applied the APFS ROM Patcher to my MacPro3,1 and it worked perfectly.

Thank you dosdude1.

Now when I reboot my Mac, it still shows the APFS script at the start. Is this script required now that the computer can boot natively?

No. You are able delete it using the method described by dosdude1 and repeated just yesterday by me in post #5682 on page 228.
 
Balancing price and value on our legacy machines is always a challenge. I hear you. ~$300 for a late 2012 is not bad though. If price is a concern (for all of us...) have you considered building your own: get logic boards, case etc..
If your so inclined...DIY is not for everyone.

By the way, Apple is about to announce a new Mac Mini (pro?) . That may be exciting...
[doublepost=1534865163][/doublepost]
Yes. That's the general approach. Without being too technical (I'm sorry) I found some legacy translucency code still hanging around in AppKit. It seems like in some cases the logic falls through and calls these old routines - or not. It's disassembled assembly so hard to read and decipher properly (my assembly is a little rusty) . It looks like beta code so things are still in flux at Apple...

Instead of patching binaries, a more elegant approach is to "swizzle" some functions i.e. replace a method with your own. A good example of this is how SUVMMFaker (by czo) works for us to fool macOS into thinking we are "supported" machines -> allowing a download in software update. I've customized czo's faker for my own purposes on Mojave, so I know how to do this. It's just finding the right method(s) to override and test. No guarantees of course, but a promising approach. It will take some time though...

Amazing work! Can't wait to see your code for this. Probably way above my head but that sounds like a really good way to do it. I don't 100% understand how that tool can override system functions but it's very cool.

Mind giving a (slightly) more technical explanation? I got to NSVisualEffectView.Material.sidebar as being the thing that gets drawn wrong, but I'm not good enough with assembler to trace that to the root cause.
 
Getting the ø prohibitory symbol if you hold [shift ] for safe booting often is due to a dynamic overridden boot parameter value "no_compat_check", so you should embed it in all the ways possible:

editing the boot plist:
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
adding:
<key>Kernel Flags</key>
<string>-v -no_compat_check</string>


booting from Recovery HD or Mojave USB Installer launch Terminal and type:
csrutil disable
nvram boot-args="-v -no_compat_check"
reboot


While instead if you use Refit or Refind bootloader you have to highlight (only with keyboard arrows) the Mojave partition, press F2 then from the submenu highlight "safe mode" press again F2 and manually type followed by enter key:
-v -x -no_compat_check

Safe mode didn't work for me either and I tried your approach and I got this while trying to safe boot:
IMG_1503.JPG
 
Try simply this, targeting your Mojave partition hold CMD+S keeping until you see a verbose mode then type:

mount -uw /
rm -R /System/Library/UserEventPlugins/com.apple.telemetry.plugin
reboot

Thank you for the help. The machine is booting in verbose mode, but the keyboard is not recognize. In order to check is not some hardware problem I booted my High Sierra partition holding CMD+S. In this case the keyboard is working.

I then simply open a terminal an moved to the directory UserEventPlugins. There is no com.apple.telemetry.plugin file.

Code:
cd /Volumes/Mojave/System/Library/UserEventPlugins/
sudo ls *telemetry*
ls: *telemetry*: No such file or directory
 
Amazing work! Can't wait to see your code for this. Probably way above my head but that sounds like a really good way to do it. I don't 100% understand how that tool can override system functions but it's very cool.

Mind giving a (slightly) more technical explanation? I got to NSVisualEffectView.Material.sidebar as being the thing that gets drawn wrong, but I'm not good enough with assembler to trace that to the root cause.
Yes, that's definitely part of the equation. The NSVisualEffectView should be responsible for applying the background visual effect (gaussian blur) probably via "Quartz" CA/CI - which eventually translates to some accelerated OpenGL calls to blur in real-time. I think I'll eventually get to that.

Right now I'm solving one piece of my puzzle: why the Dock implements translucency in both modes well and other windows don't.

And now I know why: the Dock manages its own display (and overrides the normal NSView/NSVisualEffectsView - may not even be a view just a simple window - I have to check the class model). See the calls to [displayRectIgnoringOpacity]

This actually corroborates our common suspicion that NSView + NSVisualEffectsView and the underlying opengl calls is where the money is...

Since you like to see code...Warning to others: code here (you must be this tall to ride...:)):

Code:
/* @class NSDockTile */
-(void)display {
    r15 = self;
    r14 = objc_loadWeak(*ivar_offset(_owner) + r15);
    if (r15->_contentView != 0x0) {
            r13 = 0x0;
    }
    else {
            if (([r14 isKindOfClass:[NSWindow class]] != 0x0) && ([r14 windowNumber] > 0x0)) {
                    CoreDockUpdateWindow([r14 windowNumber]);
                    r13 = 0x1;
            }
            else {
                    r13 = 0x0;
            }
    }
    if ([r15 _hasCustomContent] != 0x0) {
            [r15 _createFrameViewIfNeeded];
            if (r14 == *0x11892d0) {
                    if (*(int8_t *)_sNSReuseDockContextComputedValue != 0x0) {
                            rax = *(int8_t *)_sNSReuseDockContextComputedValue;
                            rax = rax + 0xfe;
                    }
                    else {
                            rax = __NSGetBoolAppConfig(@"NSReuseDockContext", 0x0, _sNSReuseDockContextComputedValue, _NSReuseDockContextDefaultValueFunction);
                    }
                    if (rax != 0x0) {
                            rbx = *ivar_offset(_dockContextRef);
                            rdi = *(r15 + rbx);
                            if (rdi != 0x0) {
                                    CFRelease(rdi);
                                    *(r15 + rbx) = 0x0;
                            }
                    }
            }
            rbx = *ivar_offset(_dockContextRef);
            rdx = *(r15 + rbx);
            if (rdx == 0x0) {
                    [r15 _updateDockWindowIDAndDisplayIfNeeded:0x0];
                    rdx = *(r15 + rbx);
                    if (rdx != 0x0) {
                            r14 = [[NSGraphicsContext graphicsContextWithGraphicsPort:rdx flipped:0x0] retain];
                            if (r14 != 0x0) {
                                    [NSGraphicsContext saveGraphicsState];
                                    rdx = r14;
                                    [NSGraphicsContext setCurrentContext:rdx];
                                    if ([r15 contentView] != 0x0) {
                                            r13 = 0x0;
                                    }
                                    else {
                                            [r15 setContentView:[r15 _backstopView]];
                                            r13 = 0x1;
                                    }
                                    rbx = r15->_frameView;
                                    if (rbx != 0x0) {
                                            rax = [&var_50 bounds];
                                    }
                                    else {
                                            var_40 = intrinsic_movaps(var_40, 0x0);
                                            var_50 = intrinsic_movaps(var_50, 0x0);
                                    }
                                    [rbx displayRectIgnoringOpacity:r14 inContext:var_40, var_50, var_38, var_50, var_48, var_40, var_38];
                                    rsp = (rsp - 0x20) + 0x20;
                                    [r14 flushGraphics];
                                    [NSGraphicsContext restoreGraphicsState];
                                    [r14 release];
                                    if (r13 != 0x0) {
                                            [r15 setContentView:0x0];
                                    }
                                    [r15 _temporarilyDisableAppNap];
                            }
                            else {
                                    if (r13 != 0x0) {
                                            [r15 _temporarilyDisableAppNap];
                                    }
                            }
                    }
                    else {
                            if (r13 != 0x0) {
                                    [r15 _temporarilyDisableAppNap];
                            }
                    }
            }
            else {
                    r14 = [[NSGraphicsContext graphicsContextWithGraphicsPort:rdx flipped:0x0] retain];
                    if (r14 != 0x0) {
                            [NSGraphicsContext saveGraphicsState];
                            rdx = r14;
                            [NSGraphicsContext setCurrentContext:rdx];
                            if ([r15 contentView] != 0x0) {
                                    r13 = 0x0;
                            }
                            else {
                                    [r15 setContentView:[r15 _backstopView]];
                                    r13 = 0x1;
                            }
                            rbx = r15->_frameView;
                            if (rbx != 0x0) {
                                    rax = [&var_50 bounds];
                            }
                            else {
                                    var_40 = intrinsic_movaps(var_40, 0x0);
                                    var_50 = intrinsic_movaps(var_50, 0x0);
                            }
                            [rbx displayRectIgnoringOpacity:r14 inContext:var_40, var_50, var_38, var_50, var_48, var_40, var_38];
                            rsp = (rsp - 0x20) + 0x20;
                            [r14 flushGraphics];
                            [NSGraphicsContext restoreGraphicsState];
                            [r14 release];
                            if (r13 != 0x0) {
                                    [r15 setContentView:0x0];
                            }
                            [r15 _temporarilyDisableAppNap];
                    }
                    else {
                            if (r13 != 0x0) {
                                    [r15 _temporarilyDisableAppNap];
                            }
                    }
            }
    }
    else {
            if (r13 != 0x0) {
                    [r15 _temporarilyDisableAppNap];
            }
    }
    return;
}
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.