Как получить элемент в центре управления Touch Bar справа?

Приложение TouchSwitcher добавляет элемент рядом с подсветкой и элементами тома: https://hazeover.com/touchswitcher.html введите описание изображения здесь

Есть ли решение для отображения элемента в полосе управления в правой области сенсорной панели?

Я не могу найти никакой помощи в официальной документации об этом... Пожалуйста, помогите мне!

Ответы

Ответ 1

После декомпиляции я обнаружил некоторые API в рамках под названием DFRFoundation, расположенные в разделе /​​System/Library/PrivateFrameworks, и связанный с ним метод DFRElementSetControlStripPresenceForIdentifier. Мне трудно получить дальнейшее развитие, поэтому я отвечаю только здесь, чтобы сообщить вам, что API для этого находится в частной структуре. Надеюсь, кто-то когда-нибудь раскроет секреты.

Ответ 2

Здесь то, что я использую. Передайте NSView и идентификатор по вашему выбору в функцию controlStrippify(). Мои попытки сделать то же самое с помощью Swift привели к сбоям, порты приветствуются:). Вдохновение от https://github.com/a2/touch-baer.

@import Cocoa;
@import Foundation;

// See: https://github.com/a2/touch-baer
extern void DFRSystemModalShowsCloseBoxWhenFrontMost(BOOL);
extern void DFRElementSetControlStripPresenceForIdentifier(NSString *string, BOOL enabled);

@interface NSTouchBarItem ()
+ (void)addSystemTrayItem:(NSTouchBarItem *)item;
@end

@interface NSTouchBar ()
+ (void)presentSystemModalFunctionBar:(NSTouchBar *)touchBar systemTrayItemIdentifier:(NSString *)identifier;
@end

void controlStrippify(NSView *view, NSString *identifier) {
  if (@available(macOS 10.12.2, *)) {
    DFRSystemModalShowsCloseBoxWhenFrontMost(YES);

    NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
    touchBarItem.view = view;
    [NSTouchBarItem addSystemTrayItem:touchBarItem];
    DFRElementSetControlStripPresenceForIdentifier(identifier, YES);
  } else {
    // Fail!
  }
}