ScreenCapture

[bash]スクリーンキャプチャの設定例(PlistBuddy)

スクリーンキャプチャの設定Plistbuddy.bash

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash -p
002#com.cocolog-nifty.quicktimer.icefloe
003#set -x
004#export PATH=/usr/bin:/bin:/usr/sbin:/sbin
005#################################################
006###管理者インストールしているか?チェック
007USER_WHOAMI=$(/usr/bin/whoami)
008/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
009###実行しているユーザー名
010CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
011/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
012###実行しているユーザー名
013HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
014/bin/echo "実行ユーザー(HOME): $HOME_USER"
015###logname
016LOGIN_NAME=$(/usr/bin/logname)
017/bin/echo "ログイン名(logname): $LOGIN_NAME"
018###UID
019USER_NAME=$(/usr/bin/id -un)
020/bin/echo "ユーザー名(id): $USER_NAME"
021###STAT
022STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
023/bin/echo "STAT_USR(console): $STAT_USR"
024#################################################
025###保存先
026STR_SAVE_DIR="/Users/${STAT_USR}/Pictures/ScreenCapture/ScreenCapture"
027/bin/mkdir -p "$STR_SAVE_DIR"
028/bin/chmod 750 "$STR_SAVE_DIR"
029#################################################
030###PLISTパス
031STR_PLIST_PATH="/Users/${STAT_USR}/Library/Preferences/com.apple.screencapture.plist"
032
033
034/bin/echo "設定・変更前の値"
035/usr/libexec/PlistBuddy -c "Print:last-selection:X" "$STR_PLIST_PATH"
036/usr/libexec/PlistBuddy -c "Print:last-selection:Y" "$STR_PLIST_PATH"
037/usr/libexec/PlistBuddy -c "Print:last-selection:Width" "$STR_PLIST_PATH"
038/usr/libexec/PlistBuddy -c "Print:last-selection:Height" "$STR_PLIST_PATH"
039/usr/libexec/PlistBuddy -c "Print:show-thumbnail" "$STR_PLIST_PATH"
040/usr/libexec/PlistBuddy -c "Print:last-selection-display" "$STR_PLIST_PATH"
041
042/usr/libexec/PlistBuddy -c "Print:target" "$STR_PLIST_PATH"
043/usr/libexec/PlistBuddy -c "Print:style" "$STR_PLIST_PATH"
044/usr/libexec/PlistBuddy -c "Print:name" "$STR_PLIST_PATH"
045/usr/libexec/PlistBuddy -c "Print:location-last" "$STR_PLIST_PATH"
046/usr/libexec/PlistBuddy -c "Print:location" "$STR_PLIST_PATH"
047
048/usr/libexec/PlistBuddy -c "Print:video" "$STR_PLIST_PATH"
049/usr/libexec/PlistBuddy -c "Print:show-thumbnail" "$STR_PLIST_PATH"
050/usr/libexec/PlistBuddy -c "Print:showsClicks" "$STR_PLIST_PATH"
051/usr/libexec/PlistBuddy -c "Print:showsCursor" "$STR_PLIST_PATH"
052/usr/libexec/PlistBuddy -c "Print:disable-shadow" "$STR_PLIST_PATH"
053
054/bin/echo "設定・変更開始"
055/usr/libexec/PlistBuddy -c "Set:last-selection:X 0" "$STR_PLIST_PATH"
056/usr/libexec/PlistBuddy -c "Set:last-selection:Y 0" "$STR_PLIST_PATH"
057/usr/libexec/PlistBuddy -c "Set:last-selection:Width 1280" "$STR_PLIST_PATH"
058/usr/libexec/PlistBuddy -c "Set:last-selection:Height 720" "$STR_PLIST_PATH"
059/usr/libexec/PlistBuddy -c "Set:show-thumbnail 0" "$STR_PLIST_PATH"
060/usr/libexec/PlistBuddy -c "Set:last-selection-display 0" "$STR_PLIST_PATH"
061
062/usr/libexec/PlistBuddy -c "Set:target 'file'" "$STR_PLIST_PATH"
063/usr/libexec/PlistBuddy -c "Set:style 'selection'" "$STR_PLIST_PATH"
064/usr/libexec/PlistBuddy -c "Set:name 'screen'" "$STR_PLIST_PATH"
065/usr/libexec/PlistBuddy -c "Set:location-last  '${STR_SAVE_DIR}'" "$STR_PLIST_PATH"
066/usr/libexec/PlistBuddy -c "Set:location '${STR_SAVE_DIR}'" "$STR_PLIST_PATH"
067
068/usr/libexec/PlistBuddy -c "Set:video false" "$STR_PLIST_PATH"
069/usr/libexec/PlistBuddy -c "Set:show-thumbnail false" "$STR_PLIST_PATH"
070/usr/libexec/PlistBuddy -c "Set:showsClicks true" "$STR_PLIST_PATH"
071/usr/libexec/PlistBuddy -c "Set:showsCursor true" "$STR_PLIST_PATH"
072/usr/libexec/PlistBuddy -c "Set:disable-shadow true" "$STR_PLIST_PATH"
073
074/bin/echo "設定・変更終了"
075/bin/echo "設定・変更後の値"
076/usr/libexec/PlistBuddy -c "Print:last-selection:X" "$STR_PLIST_PATH"
077/usr/libexec/PlistBuddy -c "Print:last-selection:Y" "$STR_PLIST_PATH"
078/usr/libexec/PlistBuddy -c "Print:last-selection:Width" "$STR_PLIST_PATH"
079/usr/libexec/PlistBuddy -c "Print:last-selection:Height" "$STR_PLIST_PATH"
080/usr/libexec/PlistBuddy -c "Print:show-thumbnail" "$STR_PLIST_PATH"
081/usr/libexec/PlistBuddy -c "Print:last-selection-display" "$STR_PLIST_PATH"
082
083/usr/libexec/PlistBuddy -c "Print:target" "$STR_PLIST_PATH"
084/usr/libexec/PlistBuddy -c "Print:style" "$STR_PLIST_PATH"
085/usr/libexec/PlistBuddy -c "Print:name" "$STR_PLIST_PATH"
086/usr/libexec/PlistBuddy -c "Print:location-last" "$STR_PLIST_PATH"
087/usr/libexec/PlistBuddy -c "Print:location" "$STR_PLIST_PATH"
088
089/usr/libexec/PlistBuddy -c "Print:video" "$STR_PLIST_PATH"
090/usr/libexec/PlistBuddy -c "Print:show-thumbnail" "$STR_PLIST_PATH"
091/usr/libexec/PlistBuddy -c "Print:showsClicks" "$STR_PLIST_PATH"
092/usr/libexec/PlistBuddy -c "Print:showsCursor" "$STR_PLIST_PATH"
093/usr/libexec/PlistBuddy -c "Print:disable-shadow" "$STR_PLIST_PATH"
094#保存
095/usr/libexec/PlistBuddy -c "Save" "$STR_PLIST_PATH"
096
097exit 0
AppleScriptで生成しました

| | コメント (0)

アプリケーションのWindowIDを指定してスクリーンキャプチャー


【スクリプトエディタで開く】 |

WindowIDでキャプチャー.scpt
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004
005com.cocolog-nifty.quicktimer.icefloe *)
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use scripting additions
009
010#サンプルはプレビュー
011tell application "Preview"
012   #Windowがないなら処理終了
013   set numCntWindow to (count of every window) as integer
014   if numCntWindow = 0 then
015      return "処理終了"
016   end if
017   tell front window
018      #RECT位置指定する場合の値
019      set listWindowBounds to bounds as list
020      #WindowIDの取得
021      set numWindowID to id as integer
022   end tell
023end tell
024
025#保存先ダウンロードフォルダ
026set aliasDownlordDirPath to (path to downloads folder from user domain) as alias
027set strDownlordDirPath to (POSIX path of aliasDownlordDirPath) as text
028#ファイル名用の日付時間
029set numTime to (time of (current date)) as integer
030set strHours to numTime div hours
031set strHours to (text -2 through -1 of ("00" & strHours)) as text
032set strMinutes to (numTime - (strHours) * hours) div minutes
033set strMinutes to (text -2 through -1 of ("00" & strMinutes)) as text
034set strSeconds to numTime mod minutes
035set strSeconds to (text -2 through -1 of ("00" & strSeconds)) as text
036set strTime to (strHours & strMinutes & strSeconds) as text
037#保存先パス
038set strSaveFilePath to ("" & strDownlordDirPath & strTime & ".tiff")
039
040#コマンド整形
041set strCommandText to ("/usr/sbin/screencapture  -xroC -t tiff  -l " & numWindowID & " \"" & strSaveFilePath & "\"") as text
042#コマンド実行
043log doZshShellScript(strCommandText)
044(*
045-c    クリップボードに転送
046-b    タッチバーのスクリーンショット
047-C    カーソルを含める
048-d    エラー表示
049-i    インタラクティブモード
050-m    メインモニターのみ
051-D    ディスプレイID指定
052-o    Windowのシャドウを入れない
053-p    デフォルト設定で実行
054-M    メールアプリに転送
055-P    QuickTimeプレイヤーに転送
056-I    メッセージアプリに転送
057-B    バンドルID指定して対象のアプリに転送
058-s    マウスで選択範囲指定するモード
059-S    Windowキャプチャーモード
060-J     スタイル指定 "selection","window","video".
061-t    ファイル保存時のフォーマット png,pdf, jpg, tiff
062-T    ディレイ
063-w    Window選択モード
064-W    インタラクティブWindowモード
065-x    消音
066-a    Widdowの上にあるダイアログ等を含まない
067-r    メタデータに解像度情報を含めない
068-l    WindowIDを指定してキャプチャーする
069-R  RECT位置情報指定でキャプチャ x,y,width,height.
070-v    VIDEOレコードィング
071-V    ビデオモードで何秒間撮影するか
072-G    ビデオモード時の音声入力ID
073-g    ビデオモード時の音声入力IDをデフォルトで
074-k    ビデオモードでクリックアクションを入れる
075-U インタラクティブモードでツールバーを入れる
076-u    実行後にUIを再表示
077*)
078
079##########################
080# 【通常】ZSH 実行
081to doZshShellScript(argCommandText)
082   set strCommandText to argCommandText as text
083   log "\r" & strCommandText & "\r"
084   set strExec to ("/bin/zsh -c '" & strCommandText & "'") as text
085   log "\r" & strExec & "\r"
086   ##########
087   #コマンド実行
088   try
089      log "コマンド開始"
090      set strResnponse to (do shell script strExec) as text
091      log "コマンド終了"
092   on error
093      return false
094   end try
095   return strResnponse
096end doZshShellScript
AppleScriptで生成しました

v

| | コメント (0)

【メモ・screencapture】com.apple.screenshot.launcherとcom.apple.screencaptureuiのUIエレメント(entire contents)


【スクリプトエディタで開く】 |

com.apple.screenshot.launcher起動.scpt
ソース
001
002tell application id "com.apple.screenshot.launcher"
003   launch
004   -->起動するだけで常駐しない screencaptureuiプロセスを起動させて即終了する
005   #   /System/Applications/Utilities/Screenshot.app
006end tell
007
008tell application id "com.apple.screencaptureui"
009   -->単体起動はしない   
010   #UIのみで実際は /usr/sbin/screencaptureが処理する
011   #   /System/Library/CoreServices/screencaptureui.app
012end tell
AppleScriptで生成しました

UI要素の取得は

【スクリプトエディタで開く】 |

com.apple.screenshot.launcher.scpt
ソース
001
002tell application id "com.apple.screenshot.launcher"
003   launch
004end tell
005
006#起動を待つ 1秒でエラーになるようなら増やしていく
007delay 1
008
009
010#   /System/Applications/Utilities/Screenshot.app
011
012tell application id "com.apple.screenshot.launcher"
013   tell application "System Events"
014      tell application process "Screenshot"
015         set listUIElement to entire contents as list
016         log listUIElement
017         --> screencaptureuiに処理を渡している?ので何もUI要素はない
018      end tell
019   end tell
020end tell
021
022
023
024#   /System/Library/CoreServices/screencaptureui.app
025tell application "System Events"
026   tell application process "screencaptureui"
027      set listUIElement to entire contents as list
028      log listUIElement
029   end tell
030end tell
031
032#   /System/Library/CoreServices/screencaptureui.app
033
034tell application id "com.apple.screenshot.launcher"
035   tell application "System Events"
036      tell application process "screencaptureui"
037         set listUIElement to entire contents as list
038         log listUIElement
039      end tell
040   end tell
041end tell
AppleScriptで生成しました

戻り値は

【スクリプトエディタで開く】 |

UI entire contents戻り値.scpt
ソース
001tell application "System Events"
002   tell application process "Screenshot"
003      set listUIElement to entire contents as list
004      {window "Window" of application process "screencaptureui", button 1 of window "Window" of application process "screencaptureui", checkbox "画面全体を取り込む" of window "Window" of application process "screencaptureui", checkbox "選択したウインドウを取り込む" of window "Window" of application process "screencaptureui", checkbox "選択部分を取り込む" of window "Window" of application process "screencaptureui", checkbox "画面全体を収録" of window "Window" of application process "screencaptureui", checkbox "選択部分を収録" of window "Window" of application process "screencaptureui", button "オプション" of window "Window" of application process "screencaptureui", button "5秒後に取り込む" of window "Window" of application process "screencaptureui"}
005      
006   end tell
007end tell
AppleScriptで生成しました

| | コメント (0)

[System Events]Books.appをページ順にスクリーンキャプチャーしていく

ブックのキャプチャー.scpt

AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# AppleのBooksをキャプチャした得に使用した
004#個人用 なのでコメントなし
005# com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use framework "ScreenCaptureKit"
011use framework "UniformTypeIdentifiers"
012use scripting additions
013
014property refMe : a reference to current application
015property strBundleID : "com.apple.iBooksX"
016
017(*
018tell application id strBundleID
019  activate
020  tell application "System Events"
021    tell application process "Books"
022      key down 63
023      key code 3
024      key up 63
025    end tell
026  end tell
027end tell
028
029*)
030
031set ocidScreenArray to refMe's NSScreen's screens()
032set ocidMainScreen to ocidScreenArray's firstObject()
033set ocidItemScreenRect to ocidMainScreen's frame()
034
035set listPoint to (item 1 of ocidItemScreenRect) as list
036set numX to (item 1 of listPoint) as integer
037set numY to (item 2 of listPoint) as integer
038
039set listSize to (item 2 of ocidItemScreenRect) as list
040set numW to (item 1 of listSize) as integer
041set numH to (item 2 of listSize) as integer
042
043set ocidPoint to refMe's NSPoint's NSMakePoint(numX, numY)
044set numX to ocidPoint's x()
045set numY to ocidPoint's y()
046set ocidSize to refMe's NSSize's NSMakeSize(numW, numH)
047set numW to ocidSize's width()
048set numH to ocidSize's height()
049#
050set strX to numX as text
051set strY to numY as text
052set strW to (numW - strX) as text
053set strH to (numH - numY) as text
054
055
056set strBinPath to "/usr/sbin/screencapture"
057
058
059####################
060###保存先
061set appFileManager to refMe's NSFileManager's defaultManager()
062set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSPicturesDirectory) inDomains:(refMe's NSUserDomainMask))
063set ocidPicturesDirPathURL to ocidURLsArray's firstObject()
064set ocidSaveDirPathURL to ocidPicturesDirPathURL's URLByAppendingPathComponent:("ScreenCaptureWF") isDirectory:(true)
065##フォルダを作る
066set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
067ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
068set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
069
070set strZero to ("0000") as text
071repeat with iteCntNo from 1 to 110 by 1
072  #ナンバリングゼロサプレス
073  set strCntNo to iteCntNo as text
074  set strAddZero to (strZero & strCntNo) as text
075  set strItemNo to (text -4 through -1 of strAddZero) as text
076
077
078  set strFileName to ("" & strBundleID & "-" & strItemNo & ".png") as text
079  set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName))
080  set strSaveFilePath to ocidSaveFilePathURL's |path| as text
081  set strCommandText to ("\"" & strBinPath & "\"  -R  " & strX & "," & strY & "," & strW & "," & strH & " -rxt png \"" & strSaveFilePath & "\"") as string
082  set refResponse to doZshShellScript(strCommandText)
083  if refResponse is false then
084    exit repeat
085  end if
086  delay 2
087  tell application id strBundleID
088    activate
089    tell application "System Events"
090      tell application process "Books"
091
092        key code 123
093
094      end tell
095    end tell
096  end tell
097  delay 2
098
099
100end repeat
101
102
103
104
105##########################
106# 【N】ZSH 実行
107to doZshShellScript(argCommandText)
108  set strCommandText to argCommandText as text
109  log "コマンド開始\r" & strCommandText & "\r"
110  set strExec to ("/bin/zsh -c '" & strCommandText & "' > /dev/null") as text
111  ##########
112  #コマンド実行
113  try
114    set strResnponse to (do shell script strExec) as text
115    log "コマンド終了"
116  on error
117    return false
118  end try
119  return strResnponse
120end doZshShellScript
121
122
123
124##############################
125### 今の日付日間 テキスト
126##############################
127to doGetDateNo(argDateFormat)
128  ####日付情報の取得
129  set ocidDate to current application's NSDate's |date|()
130  ###日付のフォーマットを定義
131  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
132  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
133  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
134  ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
135  ocidNSDateFormatter's setDateFormat:(argDateFormat)
136  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
137  set strDateAndTime to ocidDateAndTime as text
138  return strDateAndTime
139end doGetDateNo
AppleScriptで生成しました

|

[PlistBuddy]com.apple.screencaptureの設定 更新

mobileconfigで設定していた値
com.apple.screencapture.mobileconfig

サンプルコード

サンプルソース(参考)
行番号ソース
001<key>show-thumbnail</key>
002<false/>
AppleScriptで生成しました


無効になった
しぶしぶPlistBuddyで再設定

Setting.com.apple.screencapture.bash

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash -p
002#com.cocolog-nifty.quicktimer.icefloe
003#set -x
004#export PATH=/usr/bin:/bin:/usr/sbin:/sbin
005#################################################
006###管理者インストールしているか?チェック
007USER_WHOAMI=$(/usr/bin/whoami)
008/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
009###実行しているユーザー名
010CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
011/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
012###実行しているユーザー名
013HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
014/bin/echo "実行ユーザー(HOME): $HOME_USER"
015###logname
016LOGIN_NAME=$(/usr/bin/logname)
017/bin/echo "ログイン名(logname): $LOGIN_NAME"
018###UID
019USER_NAME=$(/usr/bin/id -un)
020/bin/echo "ユーザー名(id): $USER_NAME"
021###STAT
022STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
023/bin/echo "STAT_USR(console): $STAT_USR"
024#################################################
025###保存先
026STR_SAVE_DIR="/Users/${STAT_USR}/Pictures/ScreenCapture/ScreenCapture"
027/bin/mkdir -p "$STR_SAVE_DIR"
028/bin/chmod 750 "$STR_SAVE_DIR"
029#################################################
030###PLISTパス
031STR_PLIST_PATH="/Users/${STAT_USR}/Library/Preferences/com.apple.screencapture.plist"
032#################################################
033###
034/usr/libexec/PlistBuddy -c "Set:video  false" "$STR_PLIST_PATH"
035/usr/libexec/PlistBuddy -c "Set:show-thumbnail  false" "$STR_PLIST_PATH"
036/usr/libexec/PlistBuddy -c "Set:include-date  false" "$STR_PLIST_PATH"
037
038/usr/libexec/PlistBuddy -c "Set:isCursor  true" "$STR_PLIST_PATH"
039/usr/libexec/PlistBuddy -c "Set:showsClicks  true" "$STR_PLIST_PATH"
040/usr/libexec/PlistBuddy -c "Set:showsCursor  true" "$STR_PLIST_PATH"
041/usr/libexec/PlistBuddy -c "Set:disable-shadow  true" "$STR_PLIST_PATH"
042/usr/libexec/PlistBuddy -c "Set:save-selections  true" "$STR_PLIST_PATH"
043
044
045/usr/libexec/PlistBuddy -c "Set:target  'file'" "$STR_PLIST_PATH"
046/usr/libexec/PlistBuddy -c "Set:style  'selection'" "$STR_PLIST_PATH"
047/usr/libexec/PlistBuddy -c "Set:type  'png'" "$STR_PLIST_PATH"
048/usr/libexec/PlistBuddy -c "Set:name  'screen'" "$STR_PLIST_PATH"
049/usr/libexec/PlistBuddy -c "Set:location  '$STR_SAVE_DIR'" "$STR_PLIST_PATH"
050/usr/libexec/PlistBuddy -c "Set:location-last  '$STR_SAVE_DIR'" "$STR_PLIST_PATH"
051
052/usr/libexec/PlistBuddy -c "Set:last-selection-display  0" "$STR_PLIST_PATH"
053
054##Set時はKeyのclassは指定されているので指定するとUnrecognized Integer Formatが出る
055/usr/libexec/PlistBuddy -c "Set:last-selection:X  0" "$STR_PLIST_PATH"
056/usr/libexec/PlistBuddy -c "Set:last-selection:Y  0" "$STR_PLIST_PATH"
057/usr/libexec/PlistBuddy -c "Set:last-selection:Height  720" "$STR_PLIST_PATH"
058/usr/libexec/PlistBuddy -c "Set:last-selection:Width  1280" "$STR_PLIST_PATH"
059
060/usr/libexec/PlistBuddy -c "Save" "$STR_PLIST_PATH"
061exit 0
AppleScriptで生成しました

|

[screencapture]スクリーンキャプチャーを取得する(バンドルID指定) 少しなおした が…途中

全画面表示中のアプリで画面の矩形があわない
色々しらべてはいる…ので途中
スクリーンキャプチャーを取得する(バンドルID指定).scpt

AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "ScreenCaptureKit"
010use framework "AppKit"
011use scripting additions
012property refMe : a reference to current application
013set appFileManager to refMe's NSFileManager's defaultManager()
014
015set strBinPath to ("/usr/sbin/screencapture") as text
016set strName to (name of current application) as text
017if strName is "osascript" then
018  tell application "Finder" to activate
019else
020  tell current application to activate
021end if
022
023###起動中のアプリケーションのバンドルIDの収集
024set appWorkspace to refMe's NSWorkspace's sharedWorkspace()
025set ocidAppArray to appWorkspace's runningApplications()
026log className() of ocidAppArray as text
027#収集用のARRAY
028set ocidBundleIDArrayM to refMe's NSMutableArray's alloc()'s init()
029#バンドルIDの収集
030repeat with itemRunAppArray in ocidAppArray
031  set ocidBundleID to itemRunAppArray's bundleIdentifier()
032  if ocidBundleID  (missing value) then
033    set ocidBundleURL to itemRunAppArray's bundleURL()
034    set strExtensionName to (ocidBundleURL's pathExtension()) as text
035    if strExtensionName is "app" then
036      set strAddBundleID to ocidBundleID as text
037      (ocidBundleIDArrayM's addObject:(strAddBundleID))
038    end if
039  end if
040end repeat
041#ソート
042set ocidSortedArray to ocidBundleIDArrayM's sortedArrayUsingSelector:("localizedStandardCompare:")
043set listBundleID to ocidSortedArray as list
044###ダイアログ
045set strName to (name of current application) as text
046if strName is "osascript" then
047  tell application "Finder" to activate
048else
049  tell current application to activate
050end if
051try
052  set listResponse to (choose from list listBundleID with title "選んでください" with prompt "キャプチャーを取るアプリを選んでください\r前面のウィンドウをキャプチャーします" default items (item 1 of listBundleID) OK button name "OK" cancel button name "キャンセル" without multiple selections allowed and empty selection allowed) as list
053on error
054  log "エラーしました"
055  return "エラーしました"
056end try
057if (item 1 of listResponse) is false then
058  return "キャンセルしました"
059end if
060log listResponse
061set strBundleID to (item 1 of listResponse) as text
062delay 1
063####################
064###保存先
065set strSaveDirPath to ("~/Pictures/ScreenCapture/ScreenCapture") as string
066set ocidSaveDirPathStr to refMe's NSString's stringWithString:(strSaveDirPath)
067set ocidSaveDirPath to ocidSaveDirPathStr's stringByStandardizingPath()
068set boolDirExists to appFileManager's fileExistsAtPath:(ocidSaveDirPath) isDirectory:(true)
069if boolDirExists is true then
070  set ocidSaveDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveDirPath) isDirectory:(true)
071else if boolDirExists is false then
072  ##フォルダを作る
073  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSPicturesDirectory) inDomains:(refMe's NSUserDomainMask))
074  set ocidPicturesDirPathURL to ocidURLsArray's firstObject()
075  set ocidSaveDirPathURL to ocidPicturesDirPathURL's URLByAppendingPathComponent:("ScreenCapture/ScreenCapture") isDirectory:(true)
076  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
077  ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
078  set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
079end if
080
081####################
082### レクトアングル 矩形を取得
083try
084  tell application id strBundleID
085    set intCntWindow to (count of every window) as integer
086  end tell
087on error
088  tell application id strBundleID
089    set strAppName to name as text
090    tell application "System Events"
091      tell application process strAppName
092        set intCntWindow to (count of every window) as integer
093      end tell
094    end tell
095  end tell
096end try
097if intCntWindow = 0 then
098  log "プロファイル選択画面のWindowは取得できない"
099  tell application "System Events"
100    tell application process strAppName
101      set intCntWindow to (count of every window) as integer
102      if intCntWindow = 0 then
103        return "本当にウィンドウがない"
104      else
105        set listWinPos to position of front window as list
106        set listWinSize to size of front window as list
107        ##get rect
108        set numX to (item 1 of listWinPos) as number
109        set numY to (item 2 of listWinPos) as number
110        set numW to (item 1 of listWinSize) as number
111        set numH to (item 2 of listWinSize) as number
112      end if
113    end tell
114  end tell
115  ###################
116  set strDateNO to doGetDateNo("yyyyMMdd_HHmmss")
117  set strFileName to ("" & strBundleID & "-" & strDateNO & ".png") as text
118  set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:(false))
119  set strSaveFilePath to ocidSaveFilePathURL's |path| as text
120  
121  set strCommandText to ("\"" & strBinPath & "\" -R " & numX & "," & numY & "," & numW & "," & numH & " -rxt png \"" & strSaveFilePath & "\"") as string
122  
123  log "\r" & strCommandText & "\r"
124  set strExec to ("/bin/zsh -c '" & strCommandText & "'") as text
125  try
126    do shell script strExec
127  on error
128    log "コマンドがエラーで終了しました"
129  end try
130  ###################
131  
132else
133  ###################
134  
135  repeat with itemWindowNo from 1 to (intCntWindow) by 1
136    
137    tell application id strBundleID
138      set strAppName to name as text
139      tell application "System Events"
140        tell application process strAppName
141          tell window itemWindowNo
142            # try
143            #   set listBounds to bounds as list
144            # on error
145            set listPosition to position as list
146            set listSize to size as list
147            set listBounds to {(item 1 of listPosition), (item 2 of listPosition), (item 1 of listSize), (item 2 of listSize)} as list
148            #   end try
149          end tell
150        end tell
151      end tell
152    end tell
153    ### bounds to rect
154    set numX to (item 1 of listBounds)
155    set numY to (item 2 of listBounds)
156    set numW to (item 3 of listBounds) - (item 1 of listBounds)
157    set numH to (item 4 of listBounds) - (item 2 of listBounds)
158    ###################
159    set strDateNO to doGetDateNo("yyyyMMdd_HHmmss")
160    set strFileName to ("" & strBundleID & "-" & itemWindowNo & "-" & strDateNO & ".png") as text
161    set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:(false))
162    set strSaveFilePath to ocidSaveFilePathURL's |path| as text
163    
164    set strCommandText to ("\"" & strBinPath & "\" -R " & numX & "," & numY & "," & numW & "," & numH & " -rxt png \"" & strSaveFilePath & "\"") as string
165    
166    log "\r" & strCommandText & "\r"
167    set strExec to ("/bin/zsh -c '" & strCommandText & "'") as text
168    try
169      do shell script strExec
170    on error
171      log "コマンドがエラーで終了しました"
172    end try
173    ###################
174  end repeat
175  
176  
177end if
178
179
180
181set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
182set ocidDirPath to ocidSaveDirPathURL's |path|
183set boolDone to appSharedWorkspace's selectFile:(ocidDirPath) inFileViewerRootedAtPath:(ocidDirPath)
184return
185
186
187##############################
188### 今の日付日間 テキスト
189##############################
190to doGetDateNo(argDateFormat)
191  ####日付情報の取得
192  set ocidDate to current application's NSDate's |date|()
193  ###日付のフォーマットを定義
194  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
195  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
196  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
197  ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
198  ocidNSDateFormatter's setDateFormat:(argDateFormat)
199  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
200  set strDateAndTime to ocidDateAndTime as text
201  return strDateAndTime
202end doGetDateNo
AppleScriptで生成しました

|

Screencapture まとめ

カテゴリ
AppleScript ScreenCapture



事前設定(絶対条件)
許可しないとスクリーンキャプチャーは取れない
(デスクトップ画像のみアクセスできる=ログイン画面のキャプチャ取れるのと同じ理由)
Screen2_20240204133301


A:画面のみ(画像)
B:画面のみ(動画)
C:画面と音声(動画)


1:手動で取得する(キーボードショートカット利用)
2:スクリーンショット.app(com.apple.screenshot.launcher)を利用する
3:サードバーティから出ているアプリケーションを利用する
4:ショートカット(Shortcuts.app)を利用する
5:オートメーター(Automator.app)を利用する
6:screencaptureコマンドを利用する
7:ScreenCaptureKitを利用する
8:アプリケーション専用の機能拡張等を利用する

1:手動で取得する(キーボードショートカット利用)
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-09e818.html
2:スクリーンショット.app(com.apple.screenshot.launcher)を利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-e84f24.html
3:サードバーティから出ているアプリケーションを利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-16b2cd.html
4:ショートカット(Shortcuts.app)を利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-cb272a.html
5:オートメーター(Automator.app)を利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-972c8a.html
6:screencaptureコマンドを利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-1857ff.html
7:ScreenCaptureKitを利用する
Capturing screen content in macOS
8:アプリケーション専用の機能拡張等を利用する
Google Chrome & Microsoft Edge
https://chromewebstore.google.com/search/キャプチャ?hl=ja
Safari
https://apps.apple.com/ja/story/id1377753262
FireFox
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-2e80ba.html



設定
1:スクリーンショット.app(com.apple.screenshot.launcher)を利用する
2:com.apple.screencapture.plistの設定を変更する
2−1:defaults,PlistBuddyを利用する
2−2:Applescript等を利用して設定する
3:Mobileconfigを使用する

1:スクリーンショット.app(com.apple.screenshot.launcher)を利用する
スクリーンショット.app(com.apple.screenshot.launcher)を利用する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-e84f24.html
2:com.apple.screencapture.plistの設定を変更する
2−1:defaults,PlistBuddyを利用する

[bash]スクリーンキャプチャの設定例(defaults)
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-7db2ba.html
[bash]スクリーンキャプチャの設定例(PlistBuddy)
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-0a3844.html
2−2:Applescript等を利用して設定する
[com.apple.screencapture]スクリーンキャプチャの設定例(defaults)
https://quicktimer.cocolog-nifty.com/icefloe/2023/02/post-414c9a.html
[plist]スクリーンキャプチャの設定例(com.apple.screencapture)
https://quicktimer.cocolog-nifty.com/icefloe/2023/02/post-d3ea34.html
3:Mobileconfigを使用する
[mobileconfig]スクリーンキャプチャの設定例(com.apple.screencapture)
https://quicktimer.cocolog-nifty.com/icefloe/2023/02/post-0e372a.html



自動化
1:AppleScript>SystemEventでキーボードショートカットを実行させる
2:AppleScript>do shell scriptからscreencaptureコマンドを実行させる
3:Shortcuts Eventsでショートカット(shortcut)を実行させる
4:Automator.appで処理する
5:bashやzsh,Pythonからscreencaptureコマンドを利用する
5:
1:AppleScript>SystemEventでキーボードショートカットを実行させる
SystemEventでキーボードショートカットを実行させる
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-d69bd2.html
2:AppleScript>do shell scriptからscreencaptureコマンドを実行させる
https://quicktimer.cocolog-nifty.com/icefloe/2023/11/post-f35432.html
3:Shortcuts Eventsでショートカット(shortcut)を実行させる
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-7e6f96.html
4:Automator.appで処理する
5:bashやzsh,Pythonからscreencaptureコマンドを利用する



留意点
[screencapture]error "could not create image from window"が出る場合


便利ツール
Backdrop デスクトップにあるファイルやフォルダを全部一時的に非表示にする
https://apps.apple.com/jp/app/backdrop/id411461952?mt=12
ScreenBrush デスクトップに色々書き込める 有料700円でフル機能使える
https://apps.apple.com/jp/app/screenbrush/id1233965871
カーソルツールがあると便利

|

[screencapture]全てのWIndowIDをスクリーンキャプチャーする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use framework "Cocoa"
use scripting additions


property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
set appSharedApp to refMe's NSApplication's sharedApplication()


set strBinPath to "/usr/sbin/screencapture"


####################
###保存先
set strSaveDirPath to ("~/Pictures/ScreenCapture/ScreenCapture") as string
set ocidSaveDirPathStr to refMe's NSString's stringWithString:(strSaveDirPath)
set ocidSaveDirPath to ocidSaveDirPathStr's stringByStandardizingPath()
set ocidSaveDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveDirPath) isDirectory:(true)
##フォルダを作る
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)

####################
###ウィンドウIDを取得
set ocidAllWindowArray to refMe's NSWindowNumberListAllApplications
set ocidWindowNoArray to refMe's NSWindow's windowNumbersWithOptions:(ocidAllWindowArray)

####ウィンドウIDの数だけ繰り返し
repeat with itemWindowID in ocidWindowNoArray
  set strWindowID to itemWindowID as text
  ####
  set strDateNO to doGetDateNo("yyyyMMdd_HHmmss")
  set strFileName to ("" & strWindowID & "-" & strDateNO & ".png") as text
  set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName))
  set strSaveFilePath to ocidSaveFilePathURL's |path| as text
  
  set strCommandText to ("\"" & strBinPath & "\" -o -l " & strWindowID & " -rxt png \"" & strSaveFilePath & "\"") as string
do shell script strCommandText
  
  
end repeat




set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
set ocidDirPath to ocidSaveDirPathURL's |path|
set boolDone to appSharedWorkspace's selectFile:(ocidDirPath) inFileViewerRootedAtPath:(ocidDirPath)

return
##############################
### 今の日付日間 テキスト
##############################
to doGetDateNo(argDateFormat)
  ####日付情報の取得
  set ocidDate to current application's NSDate's |date|()
  ###日付のフォーマットを定義
  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
ocidNSDateFormatter's setDateFormat:(argDateFormat)
  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
  set strDateAndTime to ocidDateAndTime as text
return strDateAndTime
end doGetDateNo

|

SystemEventでキーボードショートカットを実行させる


【スクリプトエディタで開く】|

tell application "Finder"
  tell application "System Events"
    tell application process "Finder"
keystroke "#" using {shift down, command down}
    end tell
  end tell
end tell


|

[/usr/sbin/screencapture]ウィンド指定(全ウィンドウ)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "ScreenCaptureKit"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()

set strBinPath to "/usr/sbin/screencapture"


####################
###保存先
set strSaveDirPath to ("~/Pictures/ScreenCapture/ScreenCapture") as string
set ocidSaveDirPathStr to refMe's NSString's stringWithString:(strSaveDirPath)
set ocidSaveDirPath to ocidSaveDirPathStr's stringByStandardizingPath()
set ocidSaveDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveDirPath) isDirectory:(true)
##フォルダを作る
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)

####################
###
set listWindowApp to {} as list
tell application "System Events"
  set listApplication to every application process as list
end tell
repeat with itemApplication in listApplication
  tell application "System Events"
    tell itemApplication
      ## set strAppID to (id) as text
      ## set objApp to (name)as text
      set strBundleID to (bundle identifier) as text
      set boolBackGround to (background only) as boolean
    end tell
  end tell
  if strBundleID is (missing value) then
log "バンドルIDなし"
  else
    if boolBackGround is true then
log "バックグラウンドプロセス"
    else
      tell application id strBundleID
        try
          ###Windowの数を数えて
          set numCntWindow to (count of every window) as integer
          if numCntWindow ≥ 1 then
##WindowがあるバンドルIDをリストにしていく
copy strBundleID to end of listWindowApp
          end if
        end try
      end tell
    end if
  end if
end repeat

###################################
log listWindowApp
###ダイアログ
set strName to (name of current application) as text
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
try
  set listResponse to (choose from list listWindowApp with title "選んでください" with prompt "キャプチャーを取るアプリを選んでください\r前面のウィンドウをキャプチャーします" default items (item 1 of listWindowApp) OK button name "OK" cancel button name "キャンセル" without multiple selections allowed and empty selection allowed) as list
on error
log "エラーしました"
return "エラーしました"
end try
if (item 1 of listResponse) is false then
return "キャンセルしました"
end if
###選んだバンドルID
set strBundleID to (item 1 of listResponse) as text
####ウィンドウIDを取得
tell application id strBundleID
  set listWindowID to (id of every window) as list
end tell

####Windowの数だけ繰り返し
repeat with itemWindowID in listWindowID
  ####
  set strDateNO to doGetDateNo("yyyyMMdd_HHmmss")
  set strFileName to ("" & strBundleID & "." & itemWindowID & "-" & strDateNO & ".png") as text
  set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName))
  set strSaveFilePath to ocidSaveFilePathURL's |path| as text
  ####Chromeアプリだとエラーになる
  try
    set strCommandText to ("\"" & strBinPath & "\" -o -l " & itemWindowID & " -rxt png \"" & strSaveFilePath & "\"") as string
do shell script strCommandText
  end try
end repeat




set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
set ocidDirPath to ocidSaveDirPathURL's |path|
set boolDone to appSharedWorkspace's selectFile:(ocidDirPath) inFileViewerRootedAtPath:(ocidDirPath)

return
##############################
### 今の日付日間 テキスト
##############################
to doGetDateNo(argDateFormat)
  ####日付情報の取得
  set ocidDate to current application's NSDate's |date|()
  ###日付のフォーマットを定義
  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
ocidNSDateFormatter's setDateFormat:(argDateFormat)
  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
  set strDateAndTime to ocidDateAndTime as text
return strDateAndTime
end doGetDateNo

|

より以前の記事一覧

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat 2024 Acrobat AddOn Acrobat Annotation Acrobat AppleScript Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat GentechAI Acrobat JS Acrobat JS Word Search Acrobat Maintenance Acrobat Manifest Acrobat Menu Acrobat Merge Acrobat Open Acrobat PDFPage Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat Print Acrobat Python Acrobat Reader Acrobat Reader Localized Acrobat Reference Acrobat Registered Products Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat URL List Mac Acrobat URL List Windows Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin ConfigCode Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin NetWork Admin Permission Admin Pkg Admin Power Management Admin Printer Admin Printer Basic Admin Printer Custompapers Admin SetUp Admin SMB Admin softwareupdate Admin Support Admin System Information Admin TCC Admin Tools Admin Umask Admin Users Admin Volumes Admin XProtect Adobe Adobe AUSST Adobe Bridge Adobe Documents Adobe FDKO Adobe Fonts Adobe Reference Adobe RemoteUpdateManager Adobe Sap Code AppKit Apple AppleScript AppleScript Duplicate AppleScript entire contents AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Video Applications AppStore Archive Archive Keka Attributes Automator BackUp Barcode Barcode Decode Barcode QR Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome Chromedriver CIImage CityCode CloudStorage Color Color NSColor Color NSColorList com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Desktop Position Device Diff Disk do shell script Dock Dock Launchpad DropBox Droplet eMail Encode % Encode Decode Encode HTML Entity Encode UTF8 Error EXIFData exiftool ffmpeg File File Name Finder Finder Window Firefox Folder FolderAction Font List FontCollections Fonts Fonts Asset_Font Fonts ATS Fonts Emoji Fonts Maintenance Fonts Morisawa Fonts Python Fonts Variable Foxit GIF github Guide HTML Icon Icon Assets.car Illustrator Image Events ImageOptim Input Dictionary iPhone iWork Javascript Jedit Ω Json Label Language Link locationd lsappinfo m3u8 Mail Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Microsoft Fonts Microsoft Office Microsoft Office Link Microsoft OneDrive Microsoft Teams Mouse Music Node Notes NSArray NSArray Sort NSAttributedString NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSGraphicsContext Crop NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMetadataItem NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSet NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSUbiquitous NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth PDF PDF Image2PDF PDF MakePDF PDF nUP PDF Pymupdf PDF Pypdf PDFContext PDFDisplayBox PDFImageRep PDFKit PDFKit Annotation PDFKit AnnotationWidget PDFKit DocumentPermissions PDFKit OCR PDFKit Outline PDFKit Start PDFPage PDFPage Rotation PDFView perl Photoshop PlistBuddy pluginkit plutil postalcode PostScript PowerShell prefPane Preview Python Python eyed3 Python pip QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver Script Editor Script Menu SF Symbols character id SF Symbols Entity Shortcuts Shortcuts Events sips Skype Slack Sound Spotlight sqlite StandardAdditions StationSearch Subtitles LRC Subtitles SRT Subtitles VTT Swift swiftDialog System Events System Settings TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom Weather webarchive webp Wifi Windows XML XML EPUB XML HTML XML LSSharedFileList XML LSSharedFileList sfl2 XML LSSharedFileList sfl3 XML objectsForXQuery XML OPML XML Plist XML Plist System Events XML RSS XML savedSearch XML SVG XML TTML XML webloc XML xmllint XML XMP YouTube Zero Padding zoom