Добавить элемент в боковую панель Finder - PullRequest
6 голосов
/ 31 января 2011

Я хотел бы добавить новый элемент на боковую панель Finder. Я обнаружил, что Finder хранит список «мест» в `~ / Library / Preferences / com.apple.sidebarlists.plist Я смог прочитать файл с помощью Carbon API и увидел, что у каждого элемента есть Имя, значок и псевдоним.

Используя стороннее приложение, такое как PlistEdit Pro, я смог обновить псевдоним. У меня вопрос, как обновить псевдоним с помощью Carbon API. Не удалось найти способ создать псевдоним, который будет открываться в Finder. Похоже, что Dropbox и PlistEditor Pro смогли найти способ.

Ответы [ 3 ]

6 голосов
/ 31 января 2011

Взгляните здесь :

API списка общих файлов является новым для Launch Services в Mac OS X Leopard.Этот API предоставляет доступ к нескольким видам глобальных системных и постоянных списков объектов файловой системы, таких как последние документы и приложения, избранное и элементы входа в систему.Подробности см. В новом файле интерфейса LSSharedFileList.h.

Вы хотите найти ключ kLSSharedFileListFavoriteItems, который обрабатывает элементы в разделе «Места» на боковой панели.Я полагаю, вы могли бы попытаться сделать что-то похожее на this , используя LSSharedFileListCreate для создания kLSSharedFileListFavoriteItems.

Или вы можете использовать appleScript, размещенный здесь , что было бы намного проще, но не "Правильный путь" ©

3 голосов
/ 23 июня 2015

Обновление за 2015 год

В заголовке LSSharedFileList указано, что он перемещен в CoreServices framework. Фактически, если вы используете Cmd-Shift-O (в Xcode) и набираете LSSharedFileList, а затем переходите к единственному результату, вы увидите на панели переходов, что заголовок действительно теперь содержится в CoreServices.framework. В любом случае ключ по-прежнему kLSSharedFileListFavoriteItems.

Пример:

+ (BOOL)appendFavoriteItemWithURL:(NSURL *)url {

  // Pessimism ...
  BOOL result = NO;

  // Do we have a file URL?
  if (url.isFileURL) {

    // Ask CoreServices for the favorite items list 
    // (kLSSharedFileListFavoriteItems)
    LSSharedFileListRef list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
    if (list) {

      // We've got the list, so try to append our item
      // (use kLSSharedFileListItemBeforeFirst vs. 
      // kLSSharedFileListItemLast if desired)
      LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(list,
                                     kLSSharedFileListItemLast,
                                     NULL,
                                     NULL,
                                     (__bridge CFURLRef)url,
                                     NULL,
                                     NULL);

      // Did it work?
      if (item) {

        // Release the item and flag success
        CFRelease(item);
        result = YES;

      }

      // Release the list
      CFRelease(list);

    }

  }

  return result;
}

Использование:

// Create the path to the favorite item to add
NSString * itemPath = [@"~/Music" stringByExpandingTildeInPath];
NSURL * itemURL = [NSURL fileURLWithPath:itemPath];

// Insert the item
[WhateverClassTheAboveFunctionIsIn appendFavoriteItemWithURL:itemURL];
0 голосов
/ 24 мая 2012

@ Asmus: по умолчанию команда + T - это ярлык для добавления папки на боковую панель в Finder.Applescript, на который указывает u, работает нормально, когда сочетание клавиш «command + T» назначается вручную для других задач.

Сценарий яблок не выполняется, если он был выполнен после установки сочетания клавиш «command + T» для отображения моего другого рабочего стола в osx lion (10.7)

...