39 Commits

Author SHA1 Message Date
48b5150b0d Bump version to 0.11.5 2014-07-21 16:08:22 +01:00
38932bf33e Fix issue where EDITOR contains flags 2014-07-21 16:07:33 +01:00
2aa549ff70 Bump version to 0.11.4 2014-05-25 00:17:14 +01:00
6f0fdba121 Remove all argument handling from tmuxifier-tmux
It's meant to be a wrapper for tmux, allowing additional arguments to be
passed. Hence having the wrapper itself intercept -h as previously, or
--help as removed in this commit prevents the wrapper from working
properly.
2014-05-25 00:15:29 +01:00
a1e6972434 Bump version to 0.11.3 2014-05-25 00:12:22 +01:00
7443dd74f8 Fix #45 - tmuxifier-tmux should not treat -h flag as output help 2014-05-25 00:12:17 +01:00
e08ee38927 Bump version to 0.11.2 2014-05-15 14:10:53 +01:00
8416e63094 Merge pull request #38 from fritzgrabo/source-missing-utility-functions
Source missing utility functions in tmuxifier-tmux
2014-05-15 14:06:13 +01:00
Fritz Grabo
fe1ac9d2f9 Source missing utility functions in tmuxifier-tmux 2014-05-15 14:22:34 +02:00
87c38ae818 Bump version to 0.11.1 2014-05-14 00:11:38 +01:00
3a74ff3a60 Minor tweaks and updates to a few help messages 2014-05-14 00:08:09 +01:00
7df4a33a7d Fix typo in readme 2014-05-13 23:56:43 +01:00
255fe78572 Bump version to 0.11.0 2014-05-13 23:47:35 +01:00
a5426d4e12 Add some comments, if for nothing else, then for educational purposes 2014-05-13 23:47:35 +01:00
5850c15d87 Check for minimum required Tmux version (fixed #37) 2014-05-13 23:47:34 +01:00
4ccf61f692 Merge pull request #36 from MrAlexLau/master
Correct typo in window template, fixes #35.
2014-05-03 08:09:01 +01:00
mralexlau
44c443efe4 Correct typo in window template, fixes #35. 2014-05-02 16:19:18 -05:00
72cfab20a0 Fix typo in fish examples 2014-02-28 11:14:42 +00:00
33f26bca56 Wrap long line 2014-02-27 23:41:11 +00:00
90caa0d362 Fix typo in code comment 2014-02-27 23:40:48 +00:00
0aa0e43949 Improve custom tmux arguments section
Don't ask why there was no header, cause it's beyond me >_<
2014-02-27 22:46:00 +00:00
2a09683851 Bump version to 0.10.0
The 0.9.2 bump should have been 0.10.0. Support for fish shell was
added, hence a minor version bump is needed, not a patch.
2014-02-27 22:36:40 +00:00
5b3f4d8488 Bump version to 0.9.2 2014-02-27 22:34:23 +00:00
36c702cb88 Improve TMUXIFIER_TMUX_OPTS section 2014-02-27 22:33:39 +00:00
50f84b1586 Improve Update section, slightly, just slightly :) 2014-02-27 22:33:05 +00:00
feed17581a Mention fish shell where sensible 2014-02-27 22:32:23 +00:00
91722a4895 Update copyright year 2014-02-27 22:31:55 +00:00
cd7ae2ebce Merge pull request #32 from trekdemo/fish_support
Full fish shell support
2014-02-27 22:23:47 +00:00
Gergő Sulymosi
a9479df7c1 Update README with fish related stuff 2014-02-27 23:03:09 +01:00
Gergő Sulymosi
84de3da9ac Initialization under fish 2014-02-27 23:02:54 +01:00
7f8840eac9 Bump version to 0.9.1 2014-02-25 00:35:13 +00:00
0653074570 Fix issue #28, default-path error with Tmux 1.9
When using Tmux 1.9 and later the "-c" argument is given to the
"new-session" command to set the session's root/default path. When using
Tmux 1.8.x and earlier, the old "default-path" session option method is
used instead.
2014-02-25 00:30:34 +00:00
5047f596af Merge pull request #31 from trekdemo/fish_completion
Add completion for fish shell
2014-02-24 22:41:45 +00:00
Gergő Sulymosi
f2c5e9bb66 Add completion for fish shell 2014-02-24 10:06:01 +01:00
ae96c17580 Merge pull request #29 from matthias-guenther/installation-fix-for-zsh
Problems with zsh installation
2014-02-11 09:28:49 +00:00
Matthias Guenther
f5c4361268 Add /home/wikimatze variable 2014-02-04 20:28:48 +01:00
Matthias Guenther
8a9174c1c5 Fixing the export path option for bash and zsh in the README 2014-02-04 18:23:21 +01:00
3dfa166041 Bump version to 0.9.0 2014-01-29 08:12:42 +00:00
e231f2d642 Enable passing custom arguments to tmux
Custom arguments can now be passed to tmux by setting the
TMUXIFIER_TMUX_OPTS environment variable.
2014-01-29 08:11:20 +00:00
17 changed files with 235 additions and 43 deletions

View File

@@ -1,4 +1,4 @@
Copyright (c) 2013 Jim Myhrberg. Copyright (c) 2014 Jim Myhrberg.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -5,7 +5,7 @@ and pane configurations with ease.
In short, Tmuxifier allows you to easily create, edit, and load "layout" In short, Tmuxifier allows you to easily create, edit, and load "layout"
files, which are simple shell scripts where you use the `tmux` command and files, which are simple shell scripts where you use the `tmux` command and
helper commands provided by tmuxifier to manage Tmux sessions and windows helper commands provided by `tmuxifier` to manage Tmux sessions and windows
### Window Layouts ### Window Layouts
@@ -54,13 +54,13 @@ Clone the repo to your machine:
git clone https://github.com/jimeh/tmuxifier.git ~/.tmuxifier git clone https://github.com/jimeh/tmuxifier.git ~/.tmuxifier
Then add `~/.tmuxifier/bin` to your PATH to make the `tmuxifier` executable Then add `$HOME/.tmuxifier/bin` to your PATH to make the `tmuxifier` executable
available to you: available to you:
__In bash & zsh:__ __In bash & zsh:__
```bash ```bash
export PATH="~/.tmuxifier/bin:$PATH" export PATH="$HOME/.tmuxifier/bin:$PATH"
``` ```
__In tcsh:__ __In tcsh:__
@@ -69,6 +69,12 @@ __In tcsh:__
set path = ( "~/.tmuxifier/bin" $path ) set path = ( "~/.tmuxifier/bin" $path )
``` ```
__In fish:__
```bash
set -gx PATH "~/.tmuxifier/bin" $PATH
```
### Custom Installation Path ### Custom Installation Path
To install Tmuxifier somewhere else than the suggested `~/.tmuxifier`, simply To install Tmuxifier somewhere else than the suggested `~/.tmuxifier`, simply
@@ -94,10 +100,37 @@ Add the following to your `~/.cshrc`, `~/.tcshrc` or equivalent:
eval `tmuxifier init -` eval `tmuxifier init -`
``` ```
__In fish:__
And add the following to your `~/.config/fish/config.fish` or equivalent:
```bash
eval (tmuxifier init -)
```
### Custom Tmux Arguments
If you need to pass custom arguments to `tmux` itself, you can do so by
setting the `TMUXIFIER_TMUX_OPTS` environment variable. For example to set
custom arguments globally:
```bash
export TMUXIFIER_TMUX_OPTS="-L my-awesome-socket-name"
eval "$(tmuxifier init -)"
```
And/or specify dynamically when calling `tmuxifier`:
```bash
TMUXIFIER_TMUX_OPTS="-L other-socket" tmuxifier load-session welcome
```
## Updating ## Updating
cd ~/.tmuxifier ```bash
git pull cd ~/.tmuxifier # or where you've cloned tmuxifier to
git pull
```
## Usage ## Usage
@@ -162,8 +195,8 @@ export TMUXIFIER_LAYOUT_PATH="$HOME/.tmux-layouts"
### Disable Shell-Completion ### Disable Shell-Completion
Tmuxifier comes with shell-completion for bash, zsh and tcsh. If for any Tmuxifier comes with shell-completion for bash, zsh, tcsh, and fish. If for
reason you need to disable it, just set `$TMUXIFIER_NO_COMPLETE`. any reason you need to disable it, just set `$TMUXIFIER_NO_COMPLETE`.
```bash ```bash
export TMUXIFIER_NO_COMPLETE=1 export TMUXIFIER_NO_COMPLETE=1
@@ -202,7 +235,7 @@ it does set itself apart in a number of ways:
(The MIT license) (The MIT license)
Copyright (c) 2013 Jim Myhrberg. Copyright (c) 2014 Jim Myhrberg.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -21,16 +21,28 @@ abs_dirname() {
} }
if [ -z "${TMUXIFIER}" ]; then if [ -z "${TMUXIFIER}" ]; then
# Set TMUXIFIER relative to the "tmuxifier" executable.
export TMUXIFIER="$(dirname "$(abs_dirname "$0")")" export TMUXIFIER="$(dirname "$(abs_dirname "$0")")"
else else
# Strip any trailing slash (/) characters from TMUXIFIER variable.
export TMUXIFIER="${TMUXIFIER%/}" export TMUXIFIER="${TMUXIFIER%/}"
fi fi
# Load tmuxifier environment variables. # Load tmuxifier environment variables.
source "$TMUXIFIER/lib/env.sh" source "$TMUXIFIER/lib/env.sh"
# Add tmuxifier's internal commands to PATH.
export PATH="$TMUXIFIER/libexec:$PATH" export PATH="$TMUXIFIER/libexec:$PATH"
# Check Tmux version.
export TMUXIFIER_MIN_TMUX_VERSION="1.6"
if [ "$(tmuxifier-tmux-version "$TMUXIFIER_MIN_TMUX_VERSION")" == "<" ]; then
echo -e "ERROR: Tmuxifier requires Tmux v${TMUXIFIER_MIN_TMUX_VERSION}" \
"or newer. You have v$(tmuxifier-tmux-version)." >&2
exit 1
fi
# Parse given command
command="$1" command="$1"
case "$command" in case "$command" in
"" | "-h" | "--help" ) "" | "-h" | "--help" )

36
completion/tmuxifier.fish Normal file
View File

@@ -0,0 +1,36 @@
set -l cmd_load_session 'load-session s'
set -l cmd_load_window 'load-window w'
set -l cmd_list 'list l'
set -l cmd_list_sessions 'list-sessions ls'
set -l cmd_list_windows 'list-windows lw'
set -l cmd_new_session 'new-session ns'
set -l cmd_new_window 'new-window nw'
set -l cmd_edit_session 'edit-session es'
set -l cmd_edit_window 'edit-window ew'
set -l cmd_commands 'commands'
set -l cmd_version 'version'
set -l cmd_help 'help'
complete -c tmuxifier -x
# Commands
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_load_session -d 'Load the specified session layout.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_load_window -d 'Load the specified window layout into current session.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_list -d 'List all session and window layouts.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_list_sessions -d 'List session layouts.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_list_windows -d 'List window layouts.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_new_session -d 'Create new session layout and open it with $EDITOR.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_new_window -d 'Create new window layout and open it with $EDITOR.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_edit_session -d 'Edit specified session layout with $EDITOR.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_edit_window -d 'Edit specified window layout with $EDITOR.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_commands -d 'List all tmuxifier commands.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_version -d 'Print Tmuxifier version.'
complete -c tmuxifier -n '__fish_use_subcommand' -a $cmd_help -d 'Show this message.'
# Complete subcommands
complete -c tmuxifier -x -n "__fish_seen_subcommand_from $cmd_load_session" -a '(tmuxifier list-sessions)' -d 'session-template'
complete -c tmuxifier -x -n "__fish_seen_subcommand_from $cmd_load_window" -a '(tmuxifier list-windows)' -d 'window-template'
complete -c tmuxifier -x -n "__fish_seen_subcommand_from $cmd_edit_session" -a '(tmuxifier list-sessions)' -d 'session-template'
complete -c tmuxifier -x -n "__fish_seen_subcommand_from $cmd_edit_window" -a '(tmuxifier list-windows)' -d 'window-template'

17
init.fish Normal file
View File

@@ -0,0 +1,17 @@
# Set/fix Tmuxifier root path if needed.
if test -z $TMUXIFIER
set -gx TMUXIFIER "$HOME/.tmuxifier"
end
# Add `bin` directroy to `$PATH`.
if not contains "$TMUXIFIER/bin" $PATH
set -gx PATH "$TMUXIFIER/bin" $PATH
end
# If `tmuxifier` is available, and `$TMUXIFIER_NO_COMPLETE` is not set, then
# load Tmuxifier shell completion.
if test -n (which tmuxifier); and test -z $TMUXIFIER_NO_COMPLETE
source "$TMUXIFIER/completion/tmuxifier.fish"
end

View File

@@ -6,6 +6,11 @@
# otherwise more complex means. # otherwise more complex means.
# #
# Alias tmux to tmuxifier-tmux wrapper.
tmux() {
tmuxifier-tmux "$@"
}
# Create a new window. # Create a new window.
# #
# Arguments: # Arguments:
@@ -17,7 +22,7 @@ new_window() {
if [ -n "$2" ]; then local command=("$2"); fi if [ -n "$2" ]; then local command=("$2"); fi
if [ -n "$window" ]; then local winarg=(-n "$window"); fi if [ -n "$window" ]; then local winarg=(-n "$window"); fi
tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}" tmuxifier-tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -29,7 +34,7 @@ new_window() {
# #
split_v() { split_v() {
if [ -n "$1" ]; then local percentage=(-p "$1"); fi if [ -n "$1" ]; then local percentage=(-p "$1"); fi
tmux split-window -t "$session:$window.$2" -v "${percentage[@]}" tmuxifier-tmux split-window -t "$session:$window.$2" -v "${percentage[@]}"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -41,7 +46,7 @@ split_v() {
# #
split_h() { split_h() {
if [ -n "$1" ]; then local percentage=(-p "$1"); fi if [ -n "$1" ]; then local percentage=(-p "$1"); fi
tmux split-window -t "$session:$window.$2" -h "${percentage[@]}" tmuxifier-tmux split-window -t "$session:$window.$2" -h "${percentage[@]}"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -53,7 +58,7 @@ split_h() {
# #
split_vl() { split_vl() {
if [ -n "$1" ]; then local count=(-l "$1"); fi if [ -n "$1" ]; then local count=(-l "$1"); fi
tmux split-window -t "$session:$window.$2" -v "${count[@]}" tmuxifier-tmux split-window -t "$session:$window.$2" -v "${count[@]}"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -65,7 +70,7 @@ split_vl() {
# #
split_hl() { split_hl() {
if [ -n "$1" ]; then local count=(-l "$1"); fi if [ -n "$1" ]; then local count=(-l "$1"); fi
tmux split-window -t "$session:$window.$2" -h "${count[@]}" tmuxifier-tmux split-window -t "$session:$window.$2" -h "${count[@]}"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -74,7 +79,7 @@ split_hl() {
# Arguments: # Arguments:
# - $1: (optional) Target pane ID in which to run # - $1: (optional) Target pane ID in which to run
clock() { clock() {
tmux clock-mode -t "$session:$window.$1" tmuxifier-tmux clock-mode -t "$session:$window.$1"
} }
# Select a specific window. # Select a specific window.
@@ -83,7 +88,7 @@ clock() {
# - $1: Window ID or name to select. # - $1: Window ID or name to select.
# #
select_window() { select_window() {
tmux select-window -t "$session:$1" tmuxifier-tmux select-window -t "$session:$1"
} }
# Select a specific pane in the current window. # Select a specific pane in the current window.
@@ -92,7 +97,7 @@ select_window() {
# - $1: Pane ID to select. # - $1: Pane ID to select.
# #
select_pane() { select_pane() {
tmux select-pane -t "$session:$window.$1" tmuxifier-tmux select-pane -t "$session:$window.$1"
} }
# Send/paste keys to the currently active pane/window. # Send/paste keys to the currently active pane/window.
@@ -102,7 +107,7 @@ select_pane() {
# - $2: (optional) Target pane ID to send input to. # - $2: (optional) Target pane ID to send input to.
# #
send_keys() { send_keys() {
tmux send-keys -t "$session:$window.$2" "$1" tmuxifier-tmux send-keys -t "$session:$window.$2" "$1"
} }
# Runs a shell command in the currently active pane/window. # Runs a shell command in the currently active pane/window.
@@ -224,25 +229,37 @@ initialize_session() {
fi fi
# Ensure tmux server is running for has-session check. # Ensure tmux server is running for has-session check.
tmux start-server tmuxifier-tmux start-server
# Check if the named session already exists. # Check if the named session already exists.
if ! tmux has-session -t "$session:" 2>/dev/null; then if ! tmuxifier-tmux has-session -t "$session:" 2>/dev/null; then
# Create the new session. if [ "$(tmuxifier-tmux-version "1.9")" == "<" ]; then
env TMUX="" tmux new-session -d -s "$session" # Tmux 1.8 and earlier.
# Set default-path for session # Create the new session.
if [ -n "$session_root" ] && [ -d "$session_root" ]; then env TMUX="" tmuxifier-tmux new-session -d -s "$session"
cd "$session_root"
$set_default_path && tmux set-option -t "$session:" default-path "$session_root" 1>/dev/null # Set default-path for session
if [ -n "$session_root" ] && [ -d "$session_root" ]; then
cd "$session_root"
$set_default_path && tmuxifier-tmux \
set-option -t "$session:" \
default-path "$session_root" 1>/dev/null
fi
else
# Tmux 1.9 and later.
if $set_default_path; then local session_args=(-c "$session_root"); fi
env TMUX="" tmuxifier-tmux new-session \
-d -s "$session" "${session_args[@]}"
fi fi
# In order to ensure only specified windows are created, we move the # In order to ensure only specified windows are created, we move the
# default window to position 999, and later remove it with the # default window to position 999, and later remove it with the
# `finalize_and_go_to_session` function. # `finalize_and_go_to_session` function.
local first_window_index=$(__get_first_window_index) local first_window_index=$(__get_first_window_index)
tmux move-window -s "$session:$first_window_index" -t "$session:999" tmuxifier-tmux move-window \
-s "$session:$first_window_index" -t "$session:999"
# Session created, return ok exit status. # Session created, return ok exit status.
return 0 return 0
@@ -253,16 +270,16 @@ initialize_session() {
# Finalize session creation and then switch to it if needed. # Finalize session creation and then switch to it if needed.
# #
# When the session is created, it leaves a unused window in position #99, this # When the session is created, it leaves a unused window in position #999,
# is the default window which was created with the session, but it's also a # this is the default window which was created with the session, but it's also
# window that was not explicitly created. Hence we kill it. # a window that was not explicitly created. Hence we kill it.
# #
# If the session was created, we've already been switched to it. If it was not # If the session was created, we've already been switched to it. If it was not
# created, the session already exists, and we'll need to specifically switch # created, the session already exists, and we'll need to specifically switch
# to it here. # to it here.
# #
finalize_and_go_to_session() { finalize_and_go_to_session() {
! tmux kill-window -t "$session:999" 2>/dev/null ! tmuxifier-tmux kill-window -t "$session:999" 2>/dev/null
if [[ "$(tmuxifier-current-session)" != "$session" ]]; then if [[ "$(tmuxifier-current-session)" != "$session" ]]; then
__go_to_session __go_to_session
fi fi
@@ -285,8 +302,9 @@ __expand_path() {
} }
__get_first_window_index() { __get_first_window_index() {
local index local index=$(tmuxifier-tmux list-windows -t "$session:" \
index=$(tmux list-windows -t "$session:" -F "#{window_index}" 2>/dev/null) -F "#{window_index}" 2>/dev/null)
if [ -n "$index" ]; then if [ -n "$index" ]; then
echo "$index" | head -1 echo "$index" | head -1
else else
@@ -296,9 +314,9 @@ __get_first_window_index() {
__go_to_session() { __go_to_session() {
if [ -z "$TMUX" ]; then if [ -z "$TMUX" ]; then
tmux -u attach-session -t "$session:" tmuxifier-tmux -u attach-session -t "$session:"
else else
tmux -u switch-client -t "$session:" tmuxifier-tmux -u switch-client -t "$session:"
fi fi
} }

View File

@@ -14,7 +14,7 @@ Outputs the name of the current Tmux session."
fi fi
if [ -n "$TMUX" ]; then if [ -n "$TMUX" ]; then
for item in $(tmux list-pane -F "#{session_name}");do for item in $(tmuxifier-tmux list-pane -F "#{session_name}");do
echo $item echo $item
exit 0 exit 0
done done

View File

@@ -38,7 +38,7 @@ if [ ! -f "$layout_file" ]; then
fi fi
if [ -n "$EDITOR" ]; then if [ -n "$EDITOR" ]; then
exec "$EDITOR" "$layout_file" exec $EDITOR "$layout_file"
else else
echo "'\$EDITOR' is not set. Please manually open the layout for editing:" echo "'\$EDITOR' is not set. Please manually open the layout for editing:"
echo "$layout_file" echo "$layout_file"

View File

@@ -38,7 +38,7 @@ if [ ! -f "$layout_file" ]; then
fi fi
if [ -n "$EDITOR" ]; then if [ -n "$EDITOR" ]; then
exec "$EDITOR" "$layout_file" exec $EDITOR "$layout_file"
else else
echo "'\$EDITOR' is not set. Please manually open the layout for editing:" echo "'\$EDITOR' is not set. Please manually open the layout for editing:"
echo "$layout_file" echo "$layout_file"

View File

@@ -35,7 +35,7 @@ Some useful tmuxifier commands are:
new-window nw Create new window layout and open it with \$EDITOR. new-window nw Create new window layout and open it with \$EDITOR.
edit-session es Edit specified session layout with \$EDITOR. edit-session es Edit specified session layout with \$EDITOR.
edit-window ew Edit specified window layout with \$EDITOR. edit-window ew Edit specified window layout with \$EDITOR.
commands List all tmuxifier commands. commands List all tmuxifier commands (including internal).
version Print Tmuxifier version. version Print Tmuxifier version.
help Show this message. help Show this message.

View File

@@ -29,6 +29,9 @@ case "$shell" in
tcsh ) tcsh )
profile='~/.tcshrc' profile='~/.tcshrc'
;; ;;
fish )
profile='~/.config/fish/config.fish'
;;
* ) * )
profile='shell init file' profile='shell init file'
;; ;;
@@ -44,6 +47,10 @@ Load Tmuxifier by adding the following to your ${profile}:
case "$shell" in case "$shell" in
csh | tcsh ) csh | tcsh )
echo " eval \`tmuxifier init -\` echo " eval \`tmuxifier init -\`
"
;;
fish )
echo " eval (tmuxifier init -)
" "
;; ;;
* ) * )
@@ -67,6 +74,10 @@ case "$shell" in
echo "setenv TMUXIFIER \"$TMUXIFIER\";" echo "setenv TMUXIFIER \"$TMUXIFIER\";"
echo "source \"\$TMUXIFIER/init.tcsh\";" echo "source \"\$TMUXIFIER/init.tcsh\";"
;; ;;
fish )
echo "set -gx TMUXIFIER \"$TMUXIFIER\";"
echo "source \"\$TMUXIFIER/init.fish\";"
;;
* ) * )
echo "export TMUXIFIER=\"$TMUXIFIER\";" echo "export TMUXIFIER=\"$TMUXIFIER\";"
echo "source \"\$TMUXIFIER/init.sh\";" echo "source \"\$TMUXIFIER/init.sh\";"

View File

@@ -47,7 +47,7 @@ content="$(cat "$template")"
echo "${content//\{\{SESSION_NAME\}\}/$layout_name}" > "$layout_file" echo "${content//\{\{SESSION_NAME\}\}/$layout_name}" > "$layout_file"
if [ -n "$EDITOR" ]; then if [ -n "$EDITOR" ]; then
exec "$EDITOR" "$layout_file" exec $EDITOR "$layout_file"
else else
echo "Layout file has been created, but '\$EDITOR' is not set. Please " echo "Layout file has been created, but '\$EDITOR' is not set. Please "
echo "manually open the layout for editing:" echo "manually open the layout for editing:"

View File

@@ -47,7 +47,7 @@ content="$(cat "$template")"
echo "${content//\{\{WINDOW_NAME\}\}/$layout_name}" > "$layout_file" echo "${content//\{\{WINDOW_NAME\}\}/$layout_name}" > "$layout_file"
if [ -n "$EDITOR" ]; then if [ -n "$EDITOR" ]; then
exec "$EDITOR" "$layout_file" exec $EDITOR "$layout_file"
else else
echo "Layout file has been created, but '\$EDITOR' is not set. Please " echo "Layout file has been created, but '\$EDITOR' is not set. Please "
echo "manually open the layout for editing:" echo "manually open the layout for editing:"

5
libexec/tmuxifier-tmux Executable file
View File

@@ -0,0 +1,5 @@
#! /usr/bin/env bash
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
tmux $TMUXIFIER_TMUX_OPTS "$@"

60
libexec/tmuxifier-tmux-version Executable file
View File

@@ -0,0 +1,60 @@
#! /usr/bin/env bash
shopt -s extglob
[ -n "$TMUXIFIER_DEBUG" ] && set -x
# Load internal utility functions.
source "$TMUXIFIER/lib/util.sh"
# Provide tmuxifier help
if calling-help "$@"; then
echo "usage: tmuxifier tmux-version [target-version]
Outputs current Tmux version. If given optional target-version it outputs one
of three possible characters indicating if the current Tmux version number is
equal to, less than, or greater than the [target-version].
The three possible outputs are \"=\", \"<\", and \">\"."
exit
fi
# The vercomp() function is shamelessly ripped/borrowed from the following
# StackOverflow answer: http://stackoverflow.com/a/4025065/42146
vercomp () {
if [[ $1 == $2 ]]; then return 0; fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do ver1[i]=0; done
for ((i=0; i<${#ver1[@]}; i++)); do
# fill empty fields in ver2 with zeros
if [[ -z ${ver2[i]} ]]; then ver2[i]=0; fi
if ((10#${ver1[i]} > 10#${ver2[i]})); then
return 1
elif ((10#${ver1[i]} < 10#${ver2[i]})); then
return 2
fi
done
return 0
}
version=$(tmux -V)
version=${version/tmux /}
if [ -n "$1" ]; then
# Fix for "1.9a" version comparison, as vercomp() can only deal with
# purely numeric version numbers.
version=${version//+([a-zA-Z])/}
vercomp "$version" "$1"
case $? in
0) echo '=';;
1) echo '>';;
2) echo '<';;
esac
else
echo "$version"
fi

View File

@@ -13,4 +13,4 @@ Outputs Tmuxifier version."
exit exit
fi fi
echo "0.8.1" echo "0.11.5"

View File

@@ -16,7 +16,7 @@ new_window "{{WINDOW_NAME}}"
# Paste text # Paste text
#send_keys "top" # paste into active pane #send_keys "top" # paste into active pane
#send_keys "date" 1 # paste into active pane #send_keys "date" 1 # paste into pane 1
# Set active pane. # Set active pane.
#select_pane 0 #select_pane 0