mirror of
				https://github.com/tmux-plugins/tmux-continuum.git
				synced 2025-11-04 00:07:32 +00:00 
			
		
		
		
	initial stab at systemd support for tmux-continuum
This commit is contained in:
		
				
					committed by
					
						
						Bruno Sutic
					
				
			
			
				
	
			
			
			
						parent
						
							15649e9d07
						
					
				
				
					commit
					05a4a827e5
				
			@@ -1,5 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set -x
 | 
			
		||||
 | 
			
		||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | 
			
		||||
 | 
			
		||||
source "$CURRENT_DIR/helpers.sh"
 | 
			
		||||
@@ -14,14 +16,22 @@ is_osx() {
 | 
			
		||||
	[ $(uname) == "Darwin" ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
is_systemd() {
 | 
			
		||||
	[ $(ps -o comm= -p1) == 'systemd' ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main() {
 | 
			
		||||
	if is_tmux_automatic_start_enabled; then
 | 
			
		||||
		if is_osx; then
 | 
			
		||||
			"$CURRENT_DIR/handle_tmux_automatic_start/osx_enable.sh"
 | 
			
		||||
		elif is_systemd; then
 | 
			
		||||
			"$CURRENT_DIR/handle_tmux_automatic_start/systemd_enable.sh"
 | 
			
		||||
		fi
 | 
			
		||||
	else
 | 
			
		||||
		if is_osx; then
 | 
			
		||||
			"$CURRENT_DIR/handle_tmux_automatic_start/osx_disable.sh"
 | 
			
		||||
		elif is_systemd; then
 | 
			
		||||
			"$CURRENT_DIR/handle_tmux_automatic_start/systemd_disable.sh"
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								scripts/handle_tmux_automatic_start/systemd_disable.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								scripts/handle_tmux_automatic_start/systemd_disable.sh
									
									
									
									
									
										Executable file
									
								
							@@ -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
 | 
			
		||||
							
								
								
									
										57
									
								
								scripts/handle_tmux_automatic_start/systemd_enable.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								scripts/handle_tmux_automatic_start/systemd_enable.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set -x
 | 
			
		||||
 | 
			
		||||
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=oneshot
 | 
			
		||||
	RemainAfterExit=True
 | 
			
		||||
	Environment=DISPLAY=:0
 | 
			
		||||
	ExecStart=/usr/bin/tmux ${systemd_tmux_server_start_cmd}
 | 
			
		||||
	ExecStartPost=/usr/bin/tmux run /home/peteches/.tmux/plugins/tmux-resurrect/scripts/restore.sh
 | 
			
		||||
 | 
			
		||||
	ExecStop=/home/peteches/.tmux/plugins/tmux-resurrect/scripts/save.sh
 | 
			
		||||
	ExecStop=/usr/bin/tmux kill-server
 | 
			
		||||
	KillMode=none
 | 
			
		||||
 | 
			
		||||
	[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}" "${systemd_tmux_default_server_start_cmd}" )"
 | 
			
		||||
	local tmux_start_script_path="${CURRENT_DIR}/linux_start_tmux.sh"
 | 
			
		||||
	local systemd_unit_file=$(template "${tmux_start_script_path}" "${options}")
 | 
			
		||||
	echo "$systemd_unit_file" > "${systemd_unit_file_path}"
 | 
			
		||||
	enable_tmux_unit_on_boot
 | 
			
		||||
}
 | 
			
		||||
main
 | 
			
		||||
@@ -32,3 +32,6 @@ status_script="#($CURRENT_DIR/scripts/continuum_status.sh)"
 | 
			
		||||
status_on_style_wrap_option="@continuum-status-on-wrap-style"   # example value: "#[fg=green]#{value}#[fg=white]"
 | 
			
		||||
status_off_style_wrap_option="@continuum-status-off-wrap-style" # example value: "#[fg=yellow,bold]#{value}#[fg=white,nobold]"
 | 
			
		||||
status_wrap_string="\#{value}"
 | 
			
		||||
 | 
			
		||||
systemd_service_name="tmux.service"
 | 
			
		||||
systemd_unit_file_path="$HOME/.config/systemd/user/${systemd_service_name}"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user