• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Applescript Safari beenden

Crunch_1995

Erdapfel
Registriert
28.04.14
Beiträge
4
Hallo, ich habe eine Frage. Hoffentlich kann einer von euch mir diese beantworten. :)

Ich bin vor ein paar Tagen von Firefox auf Safari umgestiegen, und vermisse die Einstellung "Verlauf beim Beenden löschen"
Ich habe mir jetzt ein Programm geschrieben, das das macht, allerdings benutzt es einen anderen Tastaturbefehl als cmd q. Was ich mir jetzt vorstelle, ist ein kleines Script, das prüft, ob Safari das aktive Fenster ist, dann einfach mein kleines (schon geschriebenes) Skript ausführt und ansonsten einfach nur cmd + q drückt. Ich will quasi den normalen Befehl xyz beenden überschreiben. Im normalen Fall wird das Programm einfach beendet, bei Safari halt zuerst der Verlauf gelöscht, dann Safari beendet.

Ich bin ein totaler Anfänger und ehrlich gesagt schon ziemlich zufrieden, dass ich es geschafft habe, das Script zu schreiben. Momentan liegt es auf cmd + ß bei mir.

Deshalb die Frage, gibt es einen Applescript Befehl, der prüft, ob das aktive Fenster Safari ist? Dann könnte man ja einfach eine Abfrage machen, ist das aktive Fenster Safari, dann startet das Script, ansonsten drückt das Script einfach cmd q.

Dann kann ich mir das Script einfach auf cmd + ß legen und jedes Programm damit beenden :) Das wäre halt perfekt, weil Safari dann keine Extrawurst bekommt, wie es jetzt bei mir der Fall ist.

Ich kopiere den Text des Scriptes mal hier unten rein, das sagt euch vermutlich mehr ;) Das wie gesagt der Code, der von Automator gestartet wird. Vielen Dank schonmal für eure Antworten - Sollten denn welche kommen ;)

Code:
on run {input, parameters}
   
    tell application "System Events"
    if (process "Safari") exists then
        keystroke "2" using {command down, option down}
        do shell script "
/usr/bin/python <<END
import sys
import time
from Quartz.CoreGraphics import *
def mouseEvent(type, posx, posy):
          theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft)
          CGEventPost(kCGHIDEventTap, theEvent)
def mousemove(posx,posy):
          mouseEvent(kCGEventMouseMoved, posx,posy);
def mouseclick(posx,posy):
          mouseEvent(kCGEventLeftMouseDown, posx,posy);
          mouseEvent(kCGEventLeftMouseUp, posx,posy);
ourEvent = CGEventCreate(None);
currentpos=CGEventGetLocation(ourEvent);             # Save current mouse position
for x in range(0, " & 1 & "):
          mouseclick(" & 500 & "," & 600 & ");
mousemove(int(currentpos.x),int(currentpos.y));      # Restore mouse position
END"
       
        keystroke "a" using command down
        key code 51 using command down
        keystroke "2" using {command down, option down}
        keystroke "q" using command down
    else
        quit me
    end if
end tell
   
    return input
end run
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

mir fallen da zwei Möglichkeiten ein:
Du könntest einen "HotKey-Launcher" nehmen, welcher direkt AppleScript ausführen und Tastaturkürzel direkt für ein bestimmtes Programm festlegen kann. Spontan fallen mir da Butler oder BetterTouchTool ein. Damit müssten sich auch cmd-q überschreiben lassen.

Die andere Option wäre ein LaunchAgent, welcher überprüft, ob ein Safari Verlauf existiert und diesen ggfs. löscht.
Da gibt es auch schon was "fertiges" hier: Safari Cleaner

Gruß
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Hallo,

dein Skript ist zu kompliziert ;) Das wäre ein Vorschlag von mir:

Code:
-- Safari in den Vordergrund:
tell application "Safari" to activate
tell application "System Events"
    tell process "Safari"
        -- wenn "Verlauf löschen" existiert ...
        if enabled of menu item "Verlauf löschen …" of menu "Verlauf" of menu bar 1 then
            set c to count windows
            -- ... dann "Verlauf löschen" anklicken
            click menu item "Verlauf löschen …" of menu "Verlauf" of menu bar 1
            -- warten bis Bestätigungsfenster auftaucht
            repeat until (count windows) > c
                delay 0.5
            end repeat
            -- Enter drücken
            key code 52
        end if
    end tell
end tell
-- Safari beenden
tell application "Safari" to quit

Bei einem Automator-Ablauf kannst du wählen, wann der Dienst verfügbar sein soll. Dazu musst oberhalb der Aktionen auswählen "Dienst empfängt: - in: Safari". Der Dienst (und der Shortcut) sollte dann nur in Safari funktionieren, für alle anderen Programme gilt die ursprüngliche Funktion.