forked from colonelpanic/dotfiles
177 lines
6.0 KiB
Bash
177 lines
6.0 KiB
Bash
is_osx || return
|
|
|
|
function set_global_osx_ssh_port {
|
|
set_osx_ssh_port $1 /System/Library/LaunchDaemons/ssh.plist
|
|
}
|
|
|
|
function set_osx_ssh_port {
|
|
sudo sed -i -n "/SockServiceName/{p;n;s/>.*</>$1</;};p" $2; echo "SSH Port $1. Restart service for changes to take effect."
|
|
}
|
|
|
|
function enable_access_for_assistive_devices {
|
|
local bundle_identifier=$(/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' "$1/Contents/Info.plist")
|
|
local where_clause="where service='kTCCServiceAccessibility' and client='$bundle_identifier'"
|
|
local search_string="SELECT * from access ${where_clause};"
|
|
local values_string="VALUES('kTCCServiceAccessibility','$bundle_identifier',0,1,1,NULL)"
|
|
if test -z $(sudo sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' $search_string);
|
|
then
|
|
local sql_string="INSERT INTO access $values_string;"
|
|
else
|
|
local sql_string="UPDATE access set allowed = 1 ${where_clause};"
|
|
fi
|
|
echo $sql_string
|
|
sudo sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' $sql_string
|
|
}
|
|
|
|
function as_user {
|
|
local user="$1"
|
|
local user_pid=$(ps -axj | awk "/^$user / {print \$2;exit}")
|
|
local command="sudo /bin/launchctl bsexec $user_pid sudo -u '$user' $2"
|
|
echo "$command"
|
|
eval $command
|
|
}
|
|
|
|
function as_current_user {
|
|
as_user "$(whoami)" "$*"
|
|
}
|
|
|
|
function reload_user_agent {
|
|
as_current_user /bin/launchctl unload "$1"
|
|
as_current_user /bin/launchctl load "$1"
|
|
}
|
|
|
|
function reload_all_user_agents {
|
|
sudo -v
|
|
for agent in $(find -f ~/Library/LaunchAgents); do
|
|
reload_user_agent $agent
|
|
done
|
|
}
|
|
|
|
function reload_root_agent {
|
|
as_user 'root' "/bin/launchctl unload '$1'"
|
|
as_user 'root' "/bin/launchctl load '$1'"
|
|
}
|
|
|
|
function brew_for_multiple_users() {
|
|
sudo chgrp -R admin /usr/local
|
|
sudo chmod -R g+w /usr/local
|
|
sudo chgrp -R admin /Library/Caches/Homebrew
|
|
sudo chmod -R g+w /Library/Caches/Homebrew
|
|
}
|
|
|
|
function swap_audio() {
|
|
test -z $(SwitchAudioSource -c | grep HDMI) && SwitchAudioSource -s HDMI || SwitchAudioSource -s "Built-in Output"
|
|
}
|
|
|
|
function ss() {
|
|
osascript -e "tell application \"/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app\" to activate"
|
|
}
|
|
|
|
function set_modifier_keys_for_vendor_product_id() {
|
|
local mapping="<dict><key>HIDKeyboardModifierMappingSrc</key><integer>$2</integer><key>HIDKeyboardModifierMappingDst</key><integer>$3</integer></dict>"
|
|
echo $mapping
|
|
defaults -currentHost write -g com.apple.keyboard.modifiermapping.$1-0 -array-add "$mapping"
|
|
}
|
|
|
|
function set_modifier_keys_on_all_keyboards() {
|
|
for vendor_product_id in $(get_keyboard_vendor_id_product_id_pairs | tr " " "-"); do
|
|
set_modifier_keys_for_vendor_product_id $vendor_product_id 0 2; echo $vendor_product_id;
|
|
done;
|
|
}
|
|
|
|
function get_keyboard_vendor_id_product_id_pairs() {
|
|
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product | gawk 'BEGIN { RS = "class IOHIDKeyboard" } match($0, /VendorID. = ([0-9]*)/, arr) { printf arr[1]} match($0, /ProductID. = ([0-9]*)/, arr) { printf " %s\n", arr[1]} '
|
|
}
|
|
|
|
function set_osx_hostname() {
|
|
local new_hostname="${1-imalison}"
|
|
sudo scutil --set ComputerName $new_hostname
|
|
sudo scutil --set HostName $new_hostname
|
|
sudo scutil --set LocalHostName $new_hostname
|
|
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string $new_hostname
|
|
}
|
|
|
|
function get_bundle_identifier() {
|
|
defaults read "$1/Contents/Info" CFBundleIdentifier
|
|
}
|
|
|
|
_BUDDY="/usr/libexec/PlistBuddy"
|
|
_PLIST="$HOME/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist"
|
|
|
|
function create_filename_rule {
|
|
$_BUDDY -c "Add LSHandlers:0 dict" $_PLIST
|
|
$_BUDDY -c "Add LSHandlers:0:LSHandlerRoleAll string $1" $_PLIST
|
|
$_BUDDY -c "Add LSHandlers:0:LSHandlerContentTag string $2" $_PLIST
|
|
$_BUDDY -c "Add LSHandlers:0:LSHandlerContentTagClass string public.filename-extension" $_PLIST
|
|
$_BUDDY -c "Add LSHandlers:0:LSHandlerPreferredVersions dict" $_PLIST
|
|
$_BUDDY -c "Add LSHandlers:0:LSHandlerPreferredVersions:LSHandlerRoleAll string -" $_PLIST
|
|
}
|
|
|
|
function set_application_for_file_extension() {
|
|
local PLIST="$HOME/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist"
|
|
|
|
# the key to match with the desired value
|
|
KEY="LSHandlerContentType"
|
|
|
|
# the value for which we'll replace the handler
|
|
VALUE="${1-public.plain-text}"
|
|
|
|
# the new handler for all roles
|
|
HANDLER="${2}"
|
|
|
|
$_BUDDY -c 'Print "LSHandlers"' $_PLIST >/dev/null 2>&1
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "There is no LSHandlers entry in $_PLIST" >&2
|
|
exit 1
|
|
fi
|
|
|
|
declare -i I=0
|
|
while [ true ] ; do
|
|
$_BUDDY -c "Print LSHandlers:$I" $_PLIST >/dev/null 2>&1
|
|
[[ $? -eq 0 ]] || { echo "Finished, no $VALUE found, setting it to $HANDLER" ; create_entry ; exit ; }
|
|
|
|
OUT="$( $_BUDDY -c "Print 'LSHandlers:$I:$KEY'" $_PLIST 2>/dev/null )"
|
|
if [[ $? -ne 0 ]] ; then
|
|
I=$I+1
|
|
continue
|
|
fi
|
|
|
|
CONTENT=$( echo "$OUT" )
|
|
if [[ $CONTENT = $VALUE ]] ; then
|
|
echo "Replacing $CONTENT handler with $HANDLER"
|
|
$_BUDDY -c "Delete 'LSHandlers:$I'" $_PLIST
|
|
create_entry
|
|
exit
|
|
else
|
|
I=$I+1
|
|
fi
|
|
done
|
|
}
|
|
|
|
function reload_preferences {
|
|
killall -u $(whoami) cfprefsd
|
|
}
|
|
|
|
function disable_proxy(){
|
|
sudo networksetup -setsocksfirewallproxystate Wi-Fi off
|
|
sudo networksetup -setsocksfirewallproxystate Ethernet off
|
|
echo "SOCKS proxy disabled."
|
|
}
|
|
|
|
function socks_proxy {
|
|
trap disable_proxy EXIT
|
|
sudo networksetup -setsocksfirewallproxy Wi-Fi 127.0.0.1 9999
|
|
sudo networksetup -setsocksfirewallproxy Ethernet 127.0.0.1 9999
|
|
sudo networksetup -setsocksfirewallproxystate Wi-Fi on
|
|
sudo networksetup -setsocksfirewallproxystate Ethernet on
|
|
echo "SOCKS proxy enabled."
|
|
echo "Tunneling..."
|
|
echo "$@"
|
|
ssh -CND 9999 "$@"
|
|
}
|
|
|
|
function clear_dock {
|
|
defaults write com.apple.dock persistent-apps -array
|
|
}
|
|
|