Добавлены конфиги tmux и zsh
This commit is contained in:
@@ -0,0 +1 @@
|
||||
docs/automatic_start.md
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/../variables.sh"
|
||||
|
||||
main() {
|
||||
rm "$osx_auto_start_file_path" > /dev/null 2>&1
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/../helpers.sh"
|
||||
source "$CURRENT_DIR/../variables.sh"
|
||||
|
||||
template() {
|
||||
local tmux_start_script="$1"
|
||||
local is_fullscreen="$2"
|
||||
|
||||
local fullscreen_tag=""
|
||||
if [ "$is_fullscreen" == "true" ]; then
|
||||
# newline and spacing so tag is aligned with other tags in template
|
||||
fullscreen_tag=$'\n <string>fullscreen</string>'
|
||||
fi
|
||||
|
||||
local content
|
||||
read -r -d '' content <<-EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>${osx_auto_start_file_name}</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>${tmux_start_script}</string>$fullscreen_tag
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
EOF
|
||||
echo "$content"
|
||||
}
|
||||
|
||||
get_iterm_or_teminal_option_value() {
|
||||
local options="$1"
|
||||
if [[ "$options" =~ "iterm" ]]; then
|
||||
echo "iterm"
|
||||
else
|
||||
# Terminal.app is the default console app
|
||||
echo "terminal"
|
||||
fi
|
||||
}
|
||||
|
||||
get_fullscreen_option_value() {
|
||||
local options="$1"
|
||||
if [[ "$options" =~ "fullscreen" ]]; then
|
||||
echo "true"
|
||||
else
|
||||
echo "false"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local options="$(get_tmux_option "$auto_start_config_option" "$auto_start_config_default")"
|
||||
local iterm_or_terminal_value="$(get_iterm_or_teminal_option_value "$options")"
|
||||
local fullscreen_option_value="$(get_fullscreen_option_value "$options")"
|
||||
local tmux_start_script_path="${CURRENT_DIR}/osx_${iterm_or_terminal_value}_start_tmux.sh"
|
||||
|
||||
local launchd_plist_file_content="$(template "$tmux_start_script_path" "$fullscreen_option_value")"
|
||||
echo "$launchd_plist_file_content" > "$osx_auto_start_file_path"
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# for "true full screen" call the script with "fullscreen" as the first argument
|
||||
TRUE_FULL_SCREEN="$1"
|
||||
|
||||
start_iterm_and_run_tmux() {
|
||||
osascript <<-EOF
|
||||
tell application "iTerm"
|
||||
activate
|
||||
|
||||
# open iterm window
|
||||
try
|
||||
set _session to current session of current terminal
|
||||
on error
|
||||
set _term to (make new terminal)
|
||||
tell _term
|
||||
launch session "Tmux"
|
||||
set _session to current session
|
||||
end tell
|
||||
end try
|
||||
|
||||
# start tmux
|
||||
tell _session
|
||||
write text "tmux"
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
resize_window_to_full_screen() {
|
||||
osascript <<-EOF
|
||||
tell application "iTerm"
|
||||
set winID to id of window 1
|
||||
tell i term application "Finder"
|
||||
set desktopSize to bounds of window of desktop
|
||||
end tell
|
||||
set bounds of window id winID to desktopSize
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
resize_to_true_full_screen() {
|
||||
osascript <<-EOF
|
||||
tell application "iTerm"
|
||||
# wait for iTerm to start
|
||||
delay 1
|
||||
activate
|
||||
# short wait for iTerm to gain focus
|
||||
delay 0.1
|
||||
# Command + Enter for fullscreen
|
||||
tell i term application "System Events"
|
||||
key code 36 using {command down}
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
main() {
|
||||
start_iterm_and_run_tmux
|
||||
if [ "$TRUE_FULL_SCREEN" == "fullscreen" ]; then
|
||||
resize_to_true_full_screen
|
||||
else
|
||||
resize_window_to_full_screen
|
||||
fi
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# for "true full screen" call the script with "fullscreen" as the first argument
|
||||
TRUE_FULL_SCREEN="$1"
|
||||
|
||||
start_terminal_and_run_tmux() {
|
||||
osascript <<-EOF
|
||||
tell application "Terminal"
|
||||
if not (exists window 1) then reopen
|
||||
activate
|
||||
set winID to id of window 1
|
||||
do script "tmux" in window id winID
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
resize_window_to_full_screen() {
|
||||
osascript <<-EOF
|
||||
tell application "Terminal"
|
||||
set winID to id of window 1
|
||||
tell application "Finder"
|
||||
set desktopSize to bounds of window of desktop
|
||||
end tell
|
||||
set bounds of window id winID to desktopSize
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
resize_to_true_full_screen() {
|
||||
osascript <<-EOF
|
||||
tell application "Terminal"
|
||||
# waiting for Terminal.app to start
|
||||
delay 1
|
||||
activate
|
||||
# short wait for Terminal to gain focus
|
||||
delay 0.1
|
||||
tell application "System Events"
|
||||
keystroke "f" using {control down, command down}
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
main() {
|
||||
start_terminal_and_run_tmux
|
||||
if [ "$TRUE_FULL_SCREEN" == "fullscreen" ]; then
|
||||
resize_to_true_full_screen
|
||||
else
|
||||
resize_window_to_full_screen
|
||||
fi
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$CURRENT_DIR/../variables.sh"
|
||||
|
||||
main() {
|
||||
systemctl --user disable ${systemd_service_name}
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR="$( dirname ${BASH_SOURCE[0]} )"
|
||||
|
||||
source "$CURRENT_DIR/../helpers.sh"
|
||||
source "$CURRENT_DIR/../variables.sh"
|
||||
|
||||
template() {
|
||||
local tmux_start_script="$1"
|
||||
shift
|
||||
local options="$@"
|
||||
local content=""
|
||||
|
||||
read -r -d '' content <<-EOF
|
||||
[Unit]
|
||||
Description=tmux default session (detached)
|
||||
Documentation=man:tmux(1)
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
Environment=DISPLAY=:0
|
||||
ExecStart=/usr/bin/tmux ${systemd_tmux_server_start_cmd}
|
||||
|
||||
ExecStop=${HOME}/.tmux/plugins/tmux-resurrect/scripts/save.sh
|
||||
ExecStop=/usr/bin/tmux kill-server
|
||||
KillMode=none
|
||||
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
echo "$content"
|
||||
}
|
||||
|
||||
systemd_tmux_is_enabled() {
|
||||
systemctl --user is_enabled $(basename "${systemd_unit_file_path}") >/dev/null 2>&1
|
||||
}
|
||||
|
||||
enable_tmux_unit_on_boot() {
|
||||
if ! systemd_tmux_is_enabled; then
|
||||
systemctl --user enable ${systemd_service_name}
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local options="$(get_tmux_option "$auto_start_config_option" "${auto_start_config_default}")"
|
||||
local systemd_tmux_server_start_cmd="$(get_tmux_option "${systemd_tmux_server_start_cmd_option}" "${systemd_tmux_server_start_cmd_default}" )"
|
||||
local tmux_start_script_path="${CURRENT_DIR}/linux_start_tmux.sh"
|
||||
local systemd_unit_file=$(template "${tmux_start_script_path}" "${options}")
|
||||
mkdir -p "$(dirname ${systemd_unit_file_path})"
|
||||
echo "$systemd_unit_file" > "${systemd_unit_file_path}"
|
||||
enable_tmux_unit_on_boot
|
||||
}
|
||||
main
|
||||
Reference in New Issue
Block a user