Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Tutorial: Touch Bar Erweiterungen ohne Zusatztools
Tutorial: Touch Bar Erweiterungen ohne Zusatztools
Caliguvara
10.12.19
15:28
Hallo zusammen,
Heute morgen habe ich mir durch Unachtsamkeit mein BetterTouchTool Preset zerschossen (Champion, der Tag fing gut an). Es lauft jetzt alles wieder,
ich habe mir aber mal Gedanken dazu gemacht, wie man denn einige Funktionen auch mit Hilfe von Bordmitteln erreichen kann. Und habe mal etwas mit den "Erweiterungen" für die Touch Bar gespielt.
Vielleicht kann ich mit diesem
How To
ja einigen etwas helfen die die Touch Bar dann vielleicht auch verstärkt nutzen, wer weiß 🙂
Was also alleine mit den abgebildeten Buttons geht:
AirPlay: schnell zwischen zwei Geräten hin und her wechseln.
AirPods🔋: Zeigt eine Notification mit dem Batteriezustand jedes Kopfhörers.
Like Song: setzt ein Herz an das aktuell gespielte Lied in Music. Damit Apple Music künftig bessere Vorschläge macht.
MTN: öffnet einen Tab mit MacTechNews.de
Sidecar: verbindet sich direkt mit einem iPad (warum Apple Sidecar nicht in der selben Gruppe wie den AirPlay Bildschirmen erscheinen lässt ist mir ein Rätsel)
Share Song: teilt den aktuellen Song via
Song.link
(nicht jeder meiner Kontakte hat Music)
VPN: besteht keine VPN Verbindung wird eine Verbindung via Tunnelblick aufgebaut - wird der Button betätigt, während ein Tunnel offen ist wird dieser geschlossen
Die Scripts für die Beispiele poste ich unten an!
Also, wie erstelle ich diese Funktionen?
1.
Mit dem Program
Automator
muss via ⌘N ein neues Dokument angelegt werden, welches vom Typ
Quick Action
sein muss.
2.
Die Funktionen können grade beim ersten Kontakt überwältigend sein 🙂 Um ein simples Apple Script ausführen zu lassen (darauf basieren alle der oben gegebenen Beispiele) gibt man einfach im Suchfeld "Run Apple Script" ein. Ein Doppelklick auf das Resultat fügt ein neues Script zum Ablauf rechts hinzu.
3.
Dann einfach das Platzhalter Script von Apple mit dem gewünschten eigenen Script ersetzen.
4.
Der Aktion ein eigenes Icon verpassen (ganz wichtig 😉). Dazu stehen die Standard Icons zur Auswahl, oder eigene icons (.png gehen perfekt). Tipp: wählt man ein Program im Programmeordner aus wird automatisch dessen Icon verwendet. Danke Apple! 👍🏽
5.
⌘S, dem Knopf einen Namen geben. Und fertig, das Fenster kann geschlossen werden.
Und jetzt? Wie bekomme ich die Dinger in die Touch Bar?
6.
In den Systemeinstellungen → Erweiterungen findet man ganz unten den Punkt "Touch Bar".
Da wählt man die gewünschten Aktionen aus, zieht sie in die richtige Reihenfolge.
7.
Mit dem Knopf "Touch Bar anpassen" unten rechts sollte man die Funktion "Quick Actions" ins Dock rechts in der Touch Bar legen. Damit diese immer schnell erreichbar sind.
Das wars 🙂 So mehr oder weniger einfach bekommt man eigene Apple Scripte (oder andere Funktionen) in die Touch Bar. Im Finder werden die Dateien übrigens in
Library → Services
abgespeichert.
Ich hoffe, der ein oder andere versteht die Erweiterungen der Touch Bar jetzt besser und findet sie für sich etwas nützlicher 😉 Als Erinnerung, ich stelle für
BetterTouchTool
ein ziemlich komplettes und kostenloses Catalina kompatibles
PHoeNiX Preset
zur Verfügung 🙂 Die angesprochenen Funktionen sind fast alle enthalten 😉
Anbei noch meine oben genannten Scripte. Achtung, in einigen müssen Minimale Änderungen gemacht werden (der Name der AirPods zB) 😉
AirPlay Switch
: ersetzt
YOUR_AIRPLAY_OUTPUT_HERE
durch den entsprechenden Receiver.
tell application "Music"
set AirPlayName to name of the first AirPlay device whose selected is true
if AirPlayName is "YOUR_AIRPLAY_OUTPUT_HERE" then
set current AirPlay devices to AirPlay device "Computer"
return "Music playing on Computer"
else
set current AirPlay devices to AirPlay device "YOUR_AIRPLAY_OUTPUT_HERE"
return "Music playing via AirPlay"
end if
end tell
AirPods🔋
: ersetzt
NAME_DEINER_AIRPODS
(4. Zeile) durch den Namen der AirPods.
ACHTUNG Das im Standardnamen Verwendete Apostroph (Beispiel: Caliguvara's AirPods) ist keines. Der Name der AirPods muss dann einmal in Systemeinstellungen → Bluetooth kopiert und dann im Script eingesetzt werden.
return checkStatus()
on checkStatus()
set LclAirPodsName to "NAME_DEINER_AIRPODS"
--ACHTUNG Das im Standardnamen Verwendete Apostroph (Beispiel: Caliguvara's AirPods) ist keines. Der Name der AirPods muss dann einmal in Systemeinstellungen → Bluetooth kopiert und dann im Script eingesetzt werden.
set myString to do shell script "system_profiler SPBluetoothDataType"
--initial check if AirPods are not even there
if myString does not contain LclAirPodsName then
display notification "Your AirPods are not connected." with title "AirPods Battery Check"
else
--find out if connected/disconnected
set AppleScript's text item delimiters to "name:"
set myList to the text items of myString --each item of mylist is now one of the devices
set numberOfDevices to count of myList
set counter to 1
repeat numberOfDevices times --loop through each devices checking for Connected string
if item counter of myList contains LclAirPodsName then
if item counter of myList contains "Connected: Yes" then
return checkBattery()
else if item counter of myList contains "Connected: No" then
display notification "Your AirPods are not connected." with title "AirPods Battery Check"
else
display notification "Error Parsing" with title "AirPods Battery Check" --this shouldn't happen
end if
end if
set counter to counter + 1
end repeat
end if
end checkStatus
on checkBattery()
set OUTPUT1 to do shell script "
OUTPUT1='';
BLUETOOTH_DEFAULTS=$(defaults read /Library/Preferences/com.apple.Bluetooth);
SYSTEM_PROFILER=$(system_profiler SPBluetoothDataType);
MAC_ADDR=$(grep -b2 \"Minor Type: Headphones\"<<<\"${SYSTEM_PROFILER}\"|awk '/Address/{print $3}');
CONNECTED=$(grep -ia6 \"${MAC_ADDR}\"<<<\"${SYSTEM_PROFILER}\"|awk '/Connected: Yes/{print 1}');
BLUETOOTH_DATA=$(grep -ia6 '\"'\"${MAC_ADDR}\"'\"'<<<\"${BLUETOOTH_DEFAULTS}\");
BATTERY_LEVELS=(\"BatteryPercentCombined\" \"HeadsetBattery\" \"BatteryPercentSingle\" \"BatteryPercentRight\");
if [[ \"${CONNECTED}\" ]];
then
for I in \"${BATTERY_LEVELS[@]}\";
do
declare -x \"${I}\"=\"$(awk -v pat=\"${I}\" '$0~pat{gsub (\";\",\"\"); print $3}'<<<\"${BLUETOOTH_DATA}\")\";
[[ ! -z \"${!I}\" ]] &&
OUTPUT1=\"${OUTPUT}$(awk '/BatteryPercent/{print substr($0)}'<<<\"${I}\")${!I}%\";
done;
printf \"%s\" \"${OUTPUT1}\";
fi"
set OUTPUT2 to do shell script "
OUTPUT2='';
BLUETOOTH_DEFAULTS=$(defaults read /Library/Preferences/com.apple.Bluetooth);
SYSTEM_PROFILER=$(system_profiler SPBluetoothDataType);
MAC_ADDR=$(grep -b2 \"Minor Type: Headphones\"<<<\"${SYSTEM_PROFILER}\"|awk '/Address/{print $3}');
CONNECTED=$(grep -ia6 \"${MAC_ADDR}\"<<<\"${SYSTEM_PROFILER}\"|awk '/Connected: Yes/{print 1}');
BLUETOOTH_DATA=$(grep -ia6 '\"'\"${MAC_ADDR}\"'\"'<<<\"${BLUETOOTH_DEFAULTS}\");
BATTERY_LEVELS=(\"BatteryPercentCombined\" \"HeadsetBattery\" \"BatteryPercentSingle\" \"BatteryPercentLeft\");
if [[ \"${CONNECTED}\" ]];
then
for I in \"${BATTERY_LEVELS[@]}\";
do
declare -x \"${I}\"=\"$(awk -v pat=\"${I}\" '$0~pat{gsub (\";\",\"\"); print $3}'<<<\"${BLUETOOTH_DATA}\")\";
[[ ! -z \"${!I}\" ]] &&
OUTPUT2=\"${OUTPUT}$(awk '/BatteryPercent/{print substr($0)}'<<<\"${I}\")${!I}%\";
done;
printf \"%s\" \"${OUTPUT2}\";
fi"
if OUTPUT1 is " " then
display notification "Your AirPods are not connected." with title "AirPods Battery Check"
else
set BatteryLevel to "L: " & word 2 of OUTPUT2 & "%" & "
" & "R:" & word 2 of OUTPUT1 & "%"
end if
if BatteryLevel is "L: " & "
" & "R: " then
display notification "Your AirPods are not connected." with title "AirPods Battery Check"
else
display notification BatteryLevel
end if
end checkBattery
--thanks to @yyuuiko for the base of the code!
--thanks to @GoldenChaos for the great problemsolving idea for Catalina!
Like Sing
tell application "Music"
try
if loved of current track is false and disliked of current track is false then
set loved of current track to true
end if
end try
end tell
MTN
tell application "Safari"
activate
tell window 1
set current tab to (make new tab with properties ({URL:"https://mactechnews.de"}))
end tell
end tell
Sidecar
: ersetzt
NAME_OF_YOUR_iPad
(erste Zeile) durch den Namen des iPads.
set iPadName to "NAME_OF_YOUR_iPad"
tell application "System Events"
tell process "SystemUIServer"
try
click (menu bar item 1 of menu bar 1 whose description contains "Displays")
click (menu item 1 of menu 1 of result whose title contains iPadName)
on error
display dialog "Cannot find any iPads available right now"
end try
end tell
end tell
Share Song
: das Script braucht die App
JSON Helper
aus dem Mac App Store als Hilfe. Wiegt nichts, kann vergessen werden, wird aber leider gebraucht ☹️
tell application "Music"
set theCurrentTrackProperties to get properties of current track
set theURL to "https://itunes.apple.com/search?term=" & name of theCurrentTrackProperties & " " & artist of theCurrentTrackProperties & "&limit=1"
end tell
tell application "JSON Helper"
set content to fetch JSON from theURL
set results to item 1 of results of content
set trackUrl to |trackViewUrl| of results
end tell
tell application "Safari"
activate
tell window 1
set current tab to (make new tab with properties ({URL:"https://song.link/" & trackUrl}))
end tell
end tell
--thanks to @cfstcyr for the base of the code!
VPN
: Als VPN App läuft hier
Tunnelblick
.
tell application "Tunnelblick"
set VPNstate to get state of configurations
if VPNstate contains "exiting" then
connect all
end if
if VPNstate contains "connected" then
disconnect all
end if
end tell
„Don't Panic.“
Hilfreich?
+7
Kommentare
Peter Eckel
10.12.19
15:37
Klasse, danke für die Anregungen!
„Ceterum censeo librum facierum esse delendum.“
Hilfreich?
+1
eMac Extreme
10.12.19
15:52
Caliguvara
Bin dieses Jahr erst auf ein MBP mit TouchBar umgestiegen, daher kommen mir deine Beiträge hier im Forum sehr gelegen, um mich damit mehr zu beschäftigen.
Du könntest dir überlegen, ob du deine Beiträge zur TouchBar und BetterTouchTool nicht in ein eigenes Journal auf MTN überführst.
Besten Dank für den Beitrag!
Hilfreich?
+1
Caliguvara
11.12.19
09:57
@
Peter
Gerne 🙂
@
eMac Extreme
So sehr mich die Idee auch reizt, ist das hier wohl doch der falsche Platz 😉 Meine Spielereien basieren nahezu ausschließlich auf BetterTouchTool, und auf dem Forum da (
) bin ich dann auch ziemlich aktiv (selbes Pseudo, selber Avatar 😉). Die großen Neuerungen stelle ich aber auch hier gerne immer wieder ein, wie neulich das Update meines oben verlinkten Presets 😉
„Don't Panic.“
Hilfreich?
+1
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Gescheitert: iPhones von Robotern statt Arbeite...
Das iPhone 16
Apples interne Einschätzung: Zwei Jahre Rücksta...
Leaks zum iPhone 16 Pro: Startpreis, Akkulaufze...
Mac mini M4: Reparaturhandbuch bestätigt austau...
iMac M4 angekündigt
Vor 30 Jahren: Apple holt Sanierer – kann das s...
Kurz: 5G-Netze noch mit sehr wenigen Nutzern ++...