МгновСнная настройка ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ассоциаций

Автоматизировал Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ассоциаций, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· Explorer/Finder. И дСлюсь.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π€Π°ΠΉΠ»Ρ‹ Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ часто Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΈΡ‡Π΅ΠΌ, Π° Ссли ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ iTunes. Под windows Π½ΡƒΠΆΠ½Ρ‹Π΅ ассоциации, Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΈ вовсС Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ установкС (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ дСинсталяции) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: ΡΠ½Π΅ΡΡ‘ΡˆΡŒ, Π±Ρ‹Π²Π°Π»ΠΎ, GIMP, Π° ico-Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π²ΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ просмотрщика Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊ стандартной Photo Gallery. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Π—Π°Ρ‡Π΅ΠΌ? НСизвСстно… А Ссли Π½Π°ΡˆΡ‘Π» Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ, ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, свСТая инсталляция? А Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΎΠ΄ΠΈΠ½? Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ»ΠΈΠΊΠ°Ρ‚ΡŒ ΠΌΡ‹ΡˆΠΊΠ°ΠΌΠΈ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ… β€” Ρ€Π°Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ сСбС.

ВмСсто этого я сохранил Π΄Π²Π° Ρ„Π°ΠΉΠ»ΠΈΠΊΠ° Π½Π° Dropbox ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ привСсти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ ΠΌΠΈΡ€ ΠΊ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. И Ρ‡Π΅Π³ΠΎ ΠΆΠ΄Π°Π» ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ лСт… Π”Π°Π»Π΅Π΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ для Windows ΠΈ macOS.

Windows

Π’ консоли Windows cmd.exe это дСлаСтся Π² Π΄Π²Π° этапа:

ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt

ИзмСнСния Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² силу сразу. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ассоциация прописываСтся для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ·-ΠΏΠΎΠ΄ администратора. И Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π²ΠΎΠΈΡ‚ΡŒ символ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° (%%1) ΠΏΡ€ΠΈ запускС ΠΈΠ· bat-Ρ„Π°ΠΉΠ»Π°. Π’ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ ΠΌΠΈΡ€ Windows 7 Ultimate 64-bit…

macOS

Π’ макоси ассоциации ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ duti. УстанавливаСтся ΠΎΠ½Π°Β  Ρ‡Π΅Ρ€Π΅Π· brew install duti. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

duti -s com.apple.TextEdit .txt "editor"

ИзмСнСния Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² силу сразу, sudo Π½Π΅ трСбуСтся. Π—Π΄Π΅ΡΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ «com.apple.TextEdit» β€” это Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «bundle id» Π½ΡƒΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АргумСнт «editor» β€” Ρ‚ΠΈΠΏ ассоциации: «editor» для рСдактирования, «viewer» для просмотра, «all» для всСго.

Найти «bundle id» ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ: Ссли Π΅ΡΡ‚ΡŒ «/Applications/Sublime Text.app» Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ вСрсии, Ρ‚ΠΎ Π±Π°Π½Π΄Π» Π°ΠΉΠ΄ΠΈ Ρƒ Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ «com.sublimetext.3», Π½Ρƒ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ:

> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° macOS Sierra.

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ скрипт для Windows (.bat)

@echo off

set XNVIEW=C:Program Files (x86)XnViewxnview.exe
set SUBLIME=C:Program FilesSublime Text 3sublime_text.exe
set FOOBAR=C:Program Files (x86)foobar2000foobar2000.exe

call :assoc_ext "%SUBLIME%" txt md js json css java sh yaml
call :assoc_ext "%XNVIEW%" png gif jpg jpeg tiff bmp ico
call :assoc_ext "%FOOBAR%" flac fla ape wav mp3 wma m4a ogg ac3

goto :eof

:assoc_ext
  set EXE=%1
  shift
  :loop
  if "%1" neq "" (
    ftype my_file_%1=%EXE% "%%1"
    assoc .%1=my_file_%1
    shift
    goto :loop
  )
goto :eof

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ скрипт для macOS (.sh)

#!/bin/bash

# this allows us terminate the whole process from within a function
trap "exit 1" TERM
export TERM_PID=$$

# check `duti` installed
command -v duti >/dev/null 2>&1 || 
  { echo >&2 "duti required: brew install duti"; exit 1; }

get_bundle_id() {
    osascript -e "id of app """ || kill -s TERM $TERM_PID;
}

assoc() {
    bundle_id=$1; shift
    role=$1; shift
    while [ -n "$1" ]; do
        echo "setting file assoc: $bundle_id .$1 $role"
        duti -s "$bundle_id" "." "$role"
        shift
    done
}

SUBLIME=$(get_bundle_id "Sublime Text")
TEXT_EDIT=$(get_bundle_id "TextEdit")
MPLAYERX=$(get_bundle_id "MPlayerX")

assoc "$SUBLIME" "editor" txt md js jse json reg bat ps1 cfg sh bash yaml
assoc "$MPLAYERX" "viewer" mkv mp4 avi mov webm
assoc "$MPLAYERX" "viewer" flac fla ape wav mp3 wma m4a ogg ac3

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com