Wanneer mensen nadenken over privacy op het internet, komt de 'incognito'-modus in Chrome en andere browsers als eerste in gedachten. Velen denken dat dit voldoende is om websites te weerhouden van het volgen van hen, maar dat is niet het geval.

Ik heb de taak voor bestandassociaties geautomatiseerd, dat wil zeggen de keuze van het programma dat een bestand vanuit de Explorer/Finder opent. En ik deel het.

Eerst het probleem. Bestanden met de juiste extensies worden vaak standaard niet door iets geopend, en als ze geopend worden, dan door iets als iTunes. Onder Windows gaan de vereiste associaties soms helemaal verloren bij de installatie (of zelfs het verwijderen) van programma's: je verwijdert soms GIMP, maar ico-bestanden zijn overgegaan van de gebruikelijke afbeeldingsviewer naar de standaard Foto Galerij. Waarom? Waarom? Het is onbekend... En als je een nieuwe editor gevonden hebt of om andere redenen een nieuwe installatie hebt? En als er meer computers zijn? Kortom, met de muis klikken in dialogen is niet echt een plezier.

In plaats daarvan heb ik twee bestanden op Dropbox opgeslagen en nu kan ik de computerwereld in een bijna onmiddellijke staat terugbrengen. Wat heb ik al die jaren gewacht... Hier is een recept voor Windows en macOS.

Windows

In de Windows-console cmd.exe doe je dit in twee stappen:

ftype my_file_txt="C:\Windows\notepad.exe" "%1"
assoc .txt=my_file_txt

De wijzigingen worden onmiddellijk van kracht. Hoewel de associatie voor een specifieke gebruiker wordt ingesteld, moeten deze commando's om de een of andere reden als administrator worden uitgevoerd. En vergeet niet het percentage-teken te verdubbelen (%%1) bij het uitvoeren vanuit een .bat-bestand. De magische wereld van Windows 7 Ultimate 64-bit...

macOS

In macOS kunnen associaties gemakkelijk worden ingesteld met de utility duti. Het wordt geïnstalleerd via brew install duti. Voorbeeld van gebruik:

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

De wijzigingen worden onmiddellijk van kracht, sudo is niet vereist. Hier is het argument "com.apple.TextEdit" — dat is de zogenaamde "bundle id" van het programma dat we nodig hebben. Het argument "editor" is het type associatie: "editor" voor bewerking, "viewer" voor bekijken, "all" voor alles.

Je kunt de "bundle id" als volgt vinden: als je de derde versie van "\/Applications\/Sublime Text.app" hebt, dan is de bundle id "com.sublimetext.3", of een andere:

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

Gecontroleerd op macOS Sierra.

Eindscript voor Windows (.bat)

@echo off

set XNVIEW=C:\Program Files (x86)\XnView\xnview.exe
set SUBLIME=C:\Program Files\Sublime Text 3\sublime_text.exe
set FOOBAR=C:\Program Files (x86)\foobar2000\foobar2000.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

Eindscript voor 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 "${1}"" || 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" ".${1}" "$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

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster