Fast User Switching

Používá-li jeden Mac více lidí, je praktické, aby každý měl svůj účet. Už od Tigera zvládá OS X více přihlášených uživatelů najednou a umožňuje mezi nimi přepínat bez nutnosti kohokoliv odhlašovat. Aplikace neaktivních uživatelů nejsou nijak zmraženy a zůstávají provozuschopné.

Jak na to?

System Preferences -> Users & Groups -> Login Options
fastuserswitchprefs

Hodnota tohoto přepínátka je uložena v globální doméně lokální knihovny.
To zní hrozně složitě, ve skutečnosti to není nic jiného než tento plist -> /Library/Preferences/.GlobalPreferences.plist

Pomocí defauts lze změnit boolean hodnotu klíče MultipleSessionEnabled.

# Zapnout
sudo defaults write /Library/Preferences/.GlobalPreferences.plist MultipleSessionEnabled -bool TRUE
# Vypnout
sudo defaults write /Library/Preferences/.GlobalPreferences.plist MultipleSessionEnabled -bool FALSE

Z názvu klíče by se mohlo zdát, že se zcela vypne možnost mít více souběžně přihlášených uživatelů s grafickým rozhraní. Ve skutečnosti to nedělá nic jiného, než stojí v popisu checkboxu na obrázku výše = skryje přepínátko z menubaru => uživatel nemá jak se přepnout na jiného, bez odhlášení svojí session.

Menu přihlášených uživatelů

fusmenu

Meníčko ukazuje ostatní uživatele (kromě systémových a záměrně skrytých). Během přepnutí na jiný účet vyskočí přihlašovací dialog. Pokud má ale druhý uživatel prázdné heslo, dialog se neobjeví a s efektem otáčející krychle se uživatelské prostředí rovnou přepne. Položka menu Login Window… vrátí uživatele na společnou přihlašovací obrazovku, ale neodhlásí ho.

Skriptování Fast User Switching

Obě volby jde použít i z příkazové řádky.

# uživatel - přihlašovací nabídka
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

# uživatel - uživatel
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID [UID uživatele]

Přepínači -switchToUserID je třeba dodat jako argument uid uživatale (shortname nebere). Když není žádné uid zadáno, nic se nestane. V případě zadání neplatného vstupu (např. “sfsjkfs”) vyskočí přihlašovací dialog pro roota (System Administrator).

Přepínače -suspend a -switchToUserID mají naprosto totožné chování jako volby v meníčku. Při změně aktivního uživatele z příkazové řádky se objeví stejný grafický dialog vyžadující heslo.

Pomocí CGSession je možné naskriptovat přihlášení několik uživatelů najednou po startu systému (s lehkou pomocí launchd démona, který vždy spustí přepínací skript po přihlášení), ale všichni musí mít prázdné heslo (s vyjímkou toho prvního, má-li zapnuté automatické přihlášení).