jordanbaird / Ice

Powerful menu bar manager for macOS
https://icemenubar.app
GNU General Public License v3.0
12.05k stars 226 forks source link

[Feature Request] notch macbook support. #1

Closed jiengup closed 2 months ago

jiengup commented 7 months ago

Beneficial application! Do you consider designing for a notch MacBook's built-in screen? When we have so many menu bar icons, we can't see all the icons using ice's hidden strategy nowadays. It's like: On my 27 inch monitor:

image

But on built-in screen:

image

because of Apple's genius notch design.

jordanbaird commented 7 months ago

This is something that could definitely be supported, but I don't have access to a MacBook with a notch to be able to work on it. I'll add it to the roadmap for the time being, and hopefully it can happen soon.

y-u-s-u-f commented 7 months ago

I think it would be cool if we got an option like Bartenders "Bar" - Photo: BartenderBar

jordanbaird commented 7 months ago

I think it would be cool if we got an option like Bartenders "Bar" - Photo: BartenderBar

This is also on the roadmap, but can't be implemented until I work out how to implement individual menu bar item movement. Right now, Ice can only move items in sections. I have a semi-working implementation, but it's quite complicated with lots of failure points that need to be addressed.

merken commented 6 months ago

I'm waiting for notch support as well. Once this issue gets resolved, I'll try this app out!

loranger commented 5 months ago

Notch support would definitely be great: I miss some app icons behind it 😞

Xytronix commented 4 months ago

For those additional menu bars, its only possible to add them to the menu bar and then to be opened as far I know. This isn't that fluent, but a solution for Macbooks with a Notch

Xytronix commented 4 months ago

Beneficial application! Do you consider designing for a notch MacBook's built-in screen? When we have so many menu bar icons, we can't see all the icons using ice's hidden strategy nowadays. It's like: On my 27 inch monitor: image But on built-in screen: image because of Apple's genius notch design.

If its possible to show menu bar items on the left, then the width of the notch has to be recorded.

blu-e-man commented 3 months ago

Now that Bartender is exhibiting strange behavior, notch support from ICE would be great.

HaigNalbandian commented 3 months ago

Please move this to the top of the backlog. Many people want to move from Bartender at the moment, but this is a must-have.

yonatankremer commented 3 months ago

the people have spoken

nweii commented 3 months ago

Another space-efficient approach for when the notch prevents all extra items from showing could be for those extra items to replace the unhidden items when revealed, instead of showing in addition to those items. That creates some extra space to show hidden icons. I use it this way in bartender currently.

jordanbaird commented 3 months ago

I hear everyone. This is definitely in the pipeline. The main thing blocking this is that Ice needs to be able to move individual menu bar icons. When an icon is clicked in the secondary bar, it needs to be temporarily moved from whichever section it is in to the visible section so it can show its menu. I have this mostly working, but there are certain apps, such as BetterTouchTool, that block the proper events from being sent to the items. A temporary workaround could be to disable the feature when BetterTouchTool is running.

jonasjelonek commented 3 months ago

Is there anything we can support you with in this, besides the financial support? This is currently the only thing that unwillingly prevents me from moving from Bartender to Ice, since I also have the Notch.

Maybe an alpha/beta release would be something? Since you said it's mostly working we could test it, and discover and sort out remaining issues.

merken commented 3 months ago

I would also like to volunteer as beta tester if that helps. MBP 14 with notch. Would it not be as simple as providing a spacer at the coordinates of the notch? Are there any API's to leverage here?

MoKhajavi75 commented 3 months ago

I can help in beta testing too. MBP 14 (M3 - Sonoma 14.5)

HaigNalbandian commented 3 months ago

Also willing to test on my notched 14" MB Air and on a 27" 1440p monitor

gingerbeardman commented 3 months ago

Would it not be as simple as providing a spacer at the coordinates of the notch? Are there any API's to leverage here?

My thoughts exactly. If so, we would need to figure out if the current display has a notch (hopefully as simple as an api call) and how big it is (are they all the same?)

fifafu commented 3 months ago

@jordanbaird developer of BetterTouchTool here, what kind of events are you seeing blocked by BTT? Would be happy to fix or help with that. (Bartender also seems to be able to do this while BTT is running, but I haven't checked the exact events it uses yet)

kud commented 3 months ago

It would be amazing to have this feat. I want to get rid of Bartender asap. 🙏

jordanbaird commented 3 months ago

@fifafu Thank you for the help! I haven't tracked down exactly which of these it is, but it's one (or all) of mouse down, mouse dragged, and mouse up. It results in an event tap that listens for these events timing out. Would you be able to email me at jordanbaird.dev@gmail.com so we can talk in more detail about what's going on?

fifafu commented 3 months ago

Sure I'll ping you! But isn't the general problem that you can only target items that are "on-screen" with these events? I can easily programmatically move around the items that are visible, but the hidden ones that are pushed off screen by either setting the status item length to a high value or because there are just too many, these I'm unable to access using standard events.

jordanbaird commented 3 months ago

@fifafu I've found a workaround for that. But yes, that was a problem early on.

jordanbaird commented 3 months ago

Good news -- @fifafu and I were able to solve the remaining problems with individual item movement. All that's left now is to implement the secondary bar

MoKhajavi75 commented 3 months ago

We really appreciate your efforts @jordanbaird & @fifafu ✌🏻

dwt commented 2 months ago

@jordanbaird as a fellow developer (though mostly python these days) I'd be glad to help test and send logs or do experiments. Yes my ObjC/Swift is rusty, but I should be able to do some basic experiments.

ThisIsMissEm commented 2 months ago

Just gonna through this out there: if you change your screen size to a non-standard size the stupid top notch goes away, and you can see everything.

i previously tried to use TopNotch to remove it, and that stopped working when I upgraded to M3 / Sonoma, but I found that workaround after a lot of googling

dwt commented 2 months ago

I'm using the tool zNotch temporary hide/show the notch, together with this handy shell script:

$ cat bin/toggle-notch
#!/usr/bin/env sh
open 'xyz.kondor.znotch://v1/manage?action=toggle'

That gives me access to all my menu items in a pinch until ice has better support.

jordanbaird commented 2 months ago

I have something that I think works pretty well. I'll attach a build for anyone who wants to try it out. In addition to the secondary bar, you can now rearrange your menu bar items directly within Ice's interface! I would appreciate anyone's feedback! :)

Ice.zip

Some known issues:

  1. The purple screen capture icon appears in the menu bar quite often. This is because Ice needs to capture images of the individual menu bar items to display in its interface (these and portion of the desktop background below the menu bar are the only things Ice ever captures). I'll be optimizing this.
  2. Rapidly switching spaces can cause the icons to disappear from the secondary bar. A workaround if this happens is to switch to another space, wait for a few seconds, then switch back.
  3. Menu bar items that are temporarily shown by clicking them in the secondary bar are currently rehidden after a fixed amount of time. This will be changed to use a dynamic check, similar to Ice's smart autohide.
  4. The displayed menu bar items (both in the secondary bar and the arranging interface) can sometimes get out of sync with the actual items in the menu bar.

Things to test:

  1. We need to make sure that the current method of hiding/showing items works the same as it did. I had to rework some of the internals to get the two methods to play nice with each other.
  2. When an external display is connected, the secondary bar should appear on the currently active display. I have not tested this, so it would be great to have confirmation that it works (or doesn't).

Other things:

  1. Is the "Secondary Bar" name okay? Or would "Ice Bar" be better?
fifafu commented 2 months ago

Nice! Fyi, to get rid of the purple screen recording icon you can start the app like this (assuming it's in the /Applications folder):

screen -dmS Ice /Applications/Ice.app/Contents/MacOS/Ice
luckman212 commented 2 months ago

I vote for "Ice Bar" - sounds cool! 😎

jonasjelonek commented 2 months ago

@jordanbaird I just tested your build. My device is MacBook Pro 14 M1 Pro with macOS 14.5

Works good so far, here my experience to you concrete testing points:

  1. Seems to work, but someone else should verify this. At least I didn't noticed anything that looks strange to me or doesn't work.
  2. This doesn't seem to work, at least not in my setup. I've attached a second monitor and if I click on the dot in the menu bar on my second monitor, the second bar appears on my main MacBook display.

Apart from that I just noticed:

wombley commented 2 months ago

Thanks for the update! Testing on a Macbook Pro 14" M1 Pro, 14.5 - some issues:

With appearance: split, the bar is now cut off (this showed up as soon as I launched the new app, before I enabled secondary bar, so may be related to some other change). Playing around with this has it cut off in various locations (especially as screen recording icon comes and goes). You can click on the hidden section and it's clear the hidden items are receiving the click as their dropdowns show - even ones further along than you'd expect if it's just the cutoff for the rounded corners.

Screenshot 2024-06-13 at 13 17 50 Screenshot 2024-06-13 at 13 18 33 Screenshot 2024-06-13 at 13 34 12

If secondary bar is enabled when the hidden items have already been shown / are currently showing, they're then duplicated in both locations - and stay visible in the menu bar even when the show/hide button is repeatedly pressed (note using the ellipsis as separator button).

Screenshot 2024-06-13 at 13 24 49

(This may be outside your current objective, and is minor besides) - with bartender the secondary bar showed up below the show/hide button, with Ice it seems to always show up on the far right.

Thanks!

gingerbeardman commented 2 months ago

When an external display is connected, the secondary bar should appear on the currently active display. I have not tested this, so it would be great to have confirmation that it works (or doesn't).

Not for me. Always shows on my main display. My external display which is set as main display.

Icons are always showing as dark in the Ice Bar for me. light mode or dark mode

Screen shot 2024-06-13 at 16 25 17

lyrst commented 2 months ago

When an external display is connected, the secondary bar should appear on the currently active display. I have not tested this, so it would be great to have confirmation that it works (or doesn't).

This works not for me, so same behavior as described by jonasjelonek.

In addition to that, the 2nd bar has a strange ratio when I open it from the external screen, then it shown like this on the macbook screen

image
jordanbaird commented 2 months ago

New beta:

Ice.zip

I'm not in a spot where I can test on an external display at the moment, so bear that in mind.

This build includes the following changes:

Also, I think I will be going with "Ice Bar" for the name.

scp commented 2 months ago

Excellent work @jordanbaird - it works great on primary screen with notch 🙌🏼

The secondary bar is perfect.

The external screen's secondary bar appears and works but doesn't appear in the correct aspect ratio:

ice

Ice Bar is a great name.

Well done for getting this out so quickly 👌🏼

scp commented 2 months ago

@jordanbaird - some additional feedback that might help you which I just noticed:

When I use the app 'zNotch' [https://github.com/zkondor/znotch] which changes the resolution on the primary screen to 'get rid' of the notch, the Ice's secondary bar icons are the wrong aspect ratio (like the above screen shot).

However if I then close and reopen Ice, the icons in the secondary bar are then the correct aspect ratio - on both primary and secondary monitors 👌🏼

(I've only started using zNotch recently after dropping Bartender because it's simply impossible otherwise to access the icons 'behind' the notch which MacOS just permanently hides - but hopefully now I can stop using it and just use Ice's secondary bar. FYI: it appears zNotch may just change the resolution to a slightly non-standard resolution to drop the menubar down below the notch.)

jordanbaird commented 2 months ago

@scp Thanks for the info! Does the layout interface (Menu Bar Items in Ice's settings) also display items in an incorrect aspect ratio? When opening the settings window on both screens?

scp commented 2 months ago

@jordanbaird - primary screen is fine.

External screen is just the bar itself:

ice2

BossElijah commented 2 months ago

Hey @jordanbaird thanks for the beta package. Do you have any idea when this will be released for real?

rockyzhang24 commented 2 months ago

The author is already adapting very quickly, so don't rush. Based on the discussion, it should be released soon. @jordanbaird Thank you so much for your hard work in developing and maintaining this. We're really looking forward to it. 🫡

lint2015 commented 2 months ago

I tried the latest beta posted (0.10.0-beta.3) on a 27" iMac. I'm using the Chevron option as the Ice icon.

Happy to help debug if required.

Xytronix commented 2 months ago

How does a setting for moving the application settings to the secondary bar sound?

Is this something doable?

jonasjelonek commented 2 months ago

It now works that the secondary bar is displayed on the external display in the correct cases. And I can also properly drag the secondary bar. So that seems to be fixed.

But remaining issues I noticed:

ae3ch commented 2 months ago

The second beta build from https://github.com/jordanbaird/Ice/issues/1#issuecomment-2166955300 does now work on both internal and external display.

Unfortunately the aspect ratio does not yet match both displays.

Example from the internal MacBook Pro 16" display: screenshot-20240614-113704@2x

Example from an attached Studio Display: screenshot-20240614-113733@2x

gingerbeardman commented 2 months ago

New beta:

Icons in secondary bar are still wrong colour for me

image

Also I expected Secondary Bar to only appear when there wasn't enough room to show all icons? Not sure how it worked in Bartender.


My settings

image

Xytronix commented 2 months ago
image

Instead of showing this popup when trying to move the clock, make the clock non movable or show it only on the first time.

Ice Bar does only work for hidden apps. If you hover over the settings icon in the menu bar, Ice Bar appears. Unfortunately this doesn't make much sense as its a completely new bar.

Make Ice Bar appear when you have your mouse on the entire menu bar and then much longer. Ice Bar should be treated differently than the hidden and always hidden section. Call it Ice Bar section with the option to use hidden and always hidden section for the Ice Bar. You should be able to make it stay permanently and make it movable or add three options. Center, right side and left side. Now you are only able to use either Ice Bar or add to menubar.

An issue did occur when I tried to click on an app icon in the icebar while the menu bar was completely occupied by application settings. Ice doesn't scan or remove the application settings temporarily which leads to the icon not being added to the menubar. You see it appearing and then get removed by macOS.

Another issue I noticed is when using a second monitor icons quickly disappear after getting added.

Further note while using BetterDisplay and Ice the focus on the menu bar shifts to the active monitor. Its greys out, I have to actively click on the menubar to change the focus. Is this something changeable?

I would appreciate adding Top Notch support.

Apps that change size appear like this in the Ice Bar: image

While they should appear like in the preview:

image
wzxu commented 2 months ago

Thanks so much for implementing this! Been using iBar recently but finally I can switch away.

A few observations compared to iBar that Ice could replicate to make a better experience:

  1. Secondary bar should show below the cursor instead of always at the far right.
  2. When clicking an icon on the secondary bar, in addition to showing that icon on the menubar, it should also already been focused/activated, so we don't have to click on that icon again on the menubar.
dkarter commented 2 months ago

Super excited for this, thank you for implementing it!

Here are a couple of bugs I noticed:

  1. I'm also seeing the split bar cutting off icons, an easy way to test this would be using the built in battery indicator and enabling show battery percentage in settings: CleanShot 2024-06-14 at 11 36 31@2x

  2. Also noticed some items getting warped and icons that are dynamically changing are not updating in the secondary bar:

https://github.com/jordanbaird/Ice/assets/551858/01299810-5294-40b7-8034-daebaf1570dd

holdit commented 2 months ago

Suggestion: centre the bar under the Ice button.

For those using a mouse to see the hidden icons, it's better if the bar is right under Ice's button than to have to go all the way to the right to interact with the bar (keep in mind that the Ice icon will be used in different positions and the bar will have different widths).

Probably not something that must be implemented right away, but it's an idea for the future. Maybe it could be enabled/disabled with a setting? I assume some prefer if it's aligned to the right.