Reguły aplikacji

Ukrywaj poszczególne aplikacje w przełączniku lub przekazuj im bezpośrednio Command-Tab.

Większość ustawień filtrowania jest globalna. appExceptions to sposób na obsłużenie pojedynczej aplikacji, która musi zachowywać się inaczej — narzędzia na pasku menu, którego nigdy nie chcesz widzieć na liście, albo gry, która potrzebuje ⌘Tab dla siebie.

W oknie ustawień odpowiada za to panel Aplikacje. W config.json jest to tablica obiektów, po jednym dla każdej aplikacji:

config.json
{
  "appExceptions": [
    { "bundleID": "com.apple.ActivityMonitor", "hide": "whenNoWindows" },
    { "bundleID": "com.valvesoftware.steam", "ignore": "whenFullscreen" },
    { "bundleID": "com.some.menubarapp", "hide": "always" }
  ]
}

Aplikacja bez wpisu stosuje ustawienia globalne. hide, ignore i groupWindows są opcjonalne — wpis może zawierać dowolne z nich.

Finder ma przygotowaną regułę

Przy pierwszym uruchomieniu, jeśli nie ma jeszcze żadnych reguł, BetterCmdTab sam zapisuje jeden wpis: com.apple.finder z hide: "whenNoWindows". Finder nigdy tak naprawdę się nie zamyka, więc bez tej reguły każdy przełącznik zawierałby stały wiersz Findera. Możesz swobodnie usunąć lub zmienić ten wpis — to tylko początkowa wartość domyślna, która nie jest później przywracana.

Pola

Per-app rules. An app with no entry follows the global settings.

PoleTypOpis
bundleID wymaganestringBundle identifier of the app this rule applies to.
groupWindowsstring"true" shows this app as one entry instead of one per window, as applicationsOnly does for every app. Its windows stay in the window shelf, ↓ and ⌘`.
  • "true"
  • "false"
hidestringWhether this app is hidden from the switcher.
  • "dontHide" — Don't hide
  • "always" — Always
  • "whenNoWindows" — When no open windows
ignorestringWhether the switcher shortcut is passed through to this app instead of opening the panel.
  • "never" — Never
  • "always" — Always
  • "whenFullscreen" — When fullscreen

Znajdowanie identyfikatora pakietu

osascript -e 'id of app "Safari"'
# com.apple.Safari

Możesz też odczytać go bezpośrednio z pakietu:

mdls -name kMDItemCFBundleIdentifier -r /Applications/Safari.app

hide a filtry globalne

hide jest oceniany dodatkowo po globalnych ustawieniach zawartości i może wyłącznie usuwać pozycje. Jeśli showWindowlessApps jest już wyłączone, aplikacja bez okien pozostaje niewidoczna niezależnie od tego, czy ma regułę whenNoWindows.

  • "dontHide" — wartość domyślna. Aplikacja jest wyświetlana jak każda inna.
  • "whenNoWindows" — widoczna, gdy ma otwarte okno, i ukryta, gdy go nie ma. Przydatne dla aplikacji działających w tle, które nie pokazują niczego na ekranie.
  • "always" — nigdy niewidoczna. Używaj dla aplikacji pomocniczych i działających wyłącznie na pasku menu, które pojawiają się jako dostępne do przełączenia, choć nie powinny.

Ukrycie aplikacji nie zatrzymuje jej działania ani nie usuwa jej z wyników wyszukiwania, jeśli jest zainstalowana i searchIncludesLaunchableApps jest włączone.

ignore: przekazywanie ⌘Tab

ignore określa, co dzieje się po naciśnięciu skrótu przełącznika, gdy dana aplikacja jest na pierwszym planie. Zamiast otwierać panel, kombinacja klawiszy jest przekazywana aplikacji.

  • "never" — wartość domyślna. Przełącznik zawsze się otwiera.
  • "whenFullscreen" — aplikacja otrzymuje ⌘Tab tylko w trybie pełnoekranowym. To ustawienie odpowiednie dla gier i klientów zdalnego pulpitu: zwykły tryb okienkowy zachowuje przełącznik, a sesje pełnoekranowe otrzymują niezmienioną kombinację klawiszy.
  • "always" — aplikacja zawsze otrzymuje ⌘Tab. Używaj wyłącznie dla maszyny wirtualnej lub sesji zdalnej z własnym przełącznikiem zadań.

Przy "always" nie można przełączyć się z aktywnej aplikacji za pomocą ⌘Tab — taki jest cel tego ustawienia, ale oznacza to konieczność użycia innej drogi (skrótu o ograniczonym zakresie, skrótu aplikacji albo Mission Control). Jeśli nie masz pewności, wybierz "whenFullscreen".

groupWindows: jedna pozycja na aplikację

"groupWindows": "true" pokazuje aplikację raz zamiast osobno dla każdego okna, tak jak applicationsOnly robi to dla wszystkich aplikacji. Przydaje się dla aplikacji z wieloma oknami, których nie wybierasz pojedynczo. Jej okna pozostają dostępne na półce okien, pod ↓ i pod ⌘`.

config.json
{
  "appExceptions": [
    { "bundleID": "com.apple.Terminal", "groupWindows": "true" }
  ]
}

Powiązane klucze

Dwie inne listy przyjmują same identyfikatory pakietów i są prostsze niż appExceptions:

Pole Ukryj tytuły zawierające w panelu Aplikacje zapisuje trzeci klucz, windowTitleExclusions: identyfikator pakietu → fragmenty tytułów. Okno, którego tytuł zawiera fragment (bez względu na wielkość liter i znaki diakrytyczne), jest pomijane; pozostałe okna aplikacji zostają.

config.json
{
  "pinnedBundleIDs": ["com.apple.Safari", "com.googlecode.iterm2"],
  "hideAllExcludedBundleIDs": ["com.spotify.client"],
  "windowTitleExclusions": { "com.apple.Safari": ["Private Browsing"] }
}

appExceptions zastąpił klucz excludedBundleIDs. Jest on odczytywany tylko przy uruchomieniu, gdy w ogóle nie istnieje klucz appExceptions; wtedy jego identyfikatory pakietów stają się wpisami hide: "always". W każdej instalacji, która ma już appExceptions — czyli w każdej po pierwszym uruchomieniu — jest ignorowany i nigdy nie jest usuwany z pliku. Ustawiaj bezpośrednio appExceptions.