29 Commits

Author SHA1 Message Date
8987dd4492 Bump version to 0.13.0 2017-04-27 19:49:05 +01:00
9049818b25 Add optional target window argument to newly added layout helpers 2017-04-27 19:48:15 +01:00
47ef3bd857 Merge pull request #75 from leesei/sort-list
feat: sort sessions and windows list
2017-04-27 19:32:01 +01:00
a9ca566c28 Merge pull request #73 from Yuki-Inoue/synchronize-helper-methods
Add synchronize helper methods
2017-04-27 19:23:22 +01:00
87e31a03c9 Merge pull request #58 from mlavi/fish2-0-0
Accommodate fish shell 2.0.0
2017-04-27 19:21:02 +01:00
7f3ec1cd5b Merge pull request #76 from xsteve/feature/fix-has-session
Work around a problem with tmux has-session:
2017-04-27 19:18:49 +01:00
9baadfbb1e Bump version to 0.12.3 2017-04-27 18:59:38 +01:00
2adc885bb8 Fix issue with using a tmux version compiled source
Resolves #79.

When tmux is compiled from source the version string is "master" which
the tmux-version command didn't deal with correctly.
2017-04-27 18:59:38 +01:00
7cc0fa2d0e Fix typo in help text of tmux-version command 2017-04-27 18:59:38 +01:00
Stefan Reichoer
e41b15c515 Work around a problem with tmux has-session:
tmux has-session does a prefix match and not an exact match.

When a session "ABC" does exist, the session "A" is also interpreted as "ABC"
Using tmux list-sessions fixes this problem
2016-10-28 13:07:17 +02:00
leesei
690a4465b0 feat: sort sessions and windows list
On branch sort-list
Changes to be committed:
	modified:   libexec/tmuxifier-list-sessions
	modified:   libexec/tmuxifier-list-windows
2016-08-19 23:14:08 +08:00
Yuki Inoue
9bcfbd3428 Add synchronize helper methods 2016-05-09 12:34:48 +09:00
7aeeaf31d1 Merge pull request #71 from Yuki-Inoue/balance-windows-layout-helpers
Add balance_window helper methods
2016-04-28 18:35:42 +01:00
ca6dcfaaf2 Merge pull request #72 from Yuki-Inoue/fix-ci-use-github
Fix tmux sourcecode url to github
2016-04-28 18:30:26 +01:00
Yuki Inoue
fdbb1704e0 Fix tmux sourcecode url to github
The sourceforge project of tmux seems to have been removed.  So,
wgetting from github releases instead of sourceforge.
2016-04-28 22:08:30 +09:00
Yuki Inoue
499c5abd83 Add balance_window helper methods 2016-04-28 15:17:05 +09:00
3563c3d975 Bump version to 0.12.2 2016-04-02 22:28:37 +01:00
3bfbc50918 Merge pull request #70 from blueyed/fix-load-session
Fixes for load_session with file in current dir
2016-04-02 22:26:23 +01:00
Daniel Hahler
3a8a43ccdc style: load_session: move return case up, removing indent 2016-04-02 22:38:40 +02:00
Daniel Hahler
a9a87992df load_session: prefer existing session instead of file in cwd
This also adds './' to a file used from the current working dir (in case
there is no session with that name), which is required for Bash's
`source` to use it (and not look for it in `$PATH`).

Fixes https://github.com/jimeh/tmuxifier/issues/69.
2016-04-02 22:38:25 +02:00
5f4dd92d7f Merge pull request #66 from shalecraig/patch-1
Update link to iterm2
2016-01-26 23:09:54 +00:00
shale
bdaa272ca5 Update link to iterm2
iterm2 moved to gitlab from google project hosting.
2016-01-19 10:30:28 -08:00
dce4fb3ad2 Merge pull request #65 from bchretien/topic/window-rename
new_window: disable allow-rename if a window name was given
2015-12-20 23:38:43 +00:00
Benjamin Chrétien
6f8773133d new_window: disable allow-rename if a window name was given 2015-12-15 17:53:45 +01:00
92d188f9f5 Bump version to 0.12.1 2015-07-25 13:38:00 +01:00
8d1751daea Merge pull request #62 from jimeh/fix-issue-61
Fix issue #61
2015-07-25 13:35:24 +01:00
dafa938923 Add Tmux 2.0 to Travis-CI test environments 2015-07-25 13:27:12 +01:00
595269dd6a Make load-window within a session adhere to session_root setting
This should fix #61. Previously when you manually ran `tmuxifier
load-window` from within a session created by Tmuxifier, the
`session_root` path set in the session was ignored, and the new window
would be cd'd to `$HOME` unless the window configuration had
`window_root` set.
2015-07-25 13:24:02 +01:00
Mark Lavi
3c37e18987 Accommodate fish shell 2.0.0 2015-03-22 00:38:17 -07:00
10 changed files with 157 additions and 37 deletions

View File

@@ -4,10 +4,11 @@ env:
- TMUX_VERSION="1.7" - TMUX_VERSION="1.7"
- TMUX_VERSION="1.8" - TMUX_VERSION="1.8"
- TMUX_VERSION="1.9a" - TMUX_VERSION="1.9a"
- TMUX_VERSION="2.0"
before_install: before_install:
- sudo apt-get update - sudo apt-get update
- sudo apt-get install -y bc build-essential libevent-dev libncurses5-dev - sudo apt-get install -y bc build-essential libevent-dev libncurses5-dev
- wget http://downloads.sourceforge.net/tmux/tmux-${TMUX_VERSION}.tar.gz - wget https://github.com/tmux/tmux/releases/download/${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz
- tar -zxf tmux-${TMUX_VERSION}.tar.gz - tar -zxf tmux-${TMUX_VERSION}.tar.gz
- cd tmux-${TMUX_VERSION} - cd tmux-${TMUX_VERSION}
- ./configure && make && sudo make install - ./configure && make && sudo make install

View File

@@ -105,7 +105,7 @@ __In fish:__
And add the following to your `~/.config/fish/config.fish` or equivalent: And add the following to your `~/.config/fish/config.fish` or equivalent:
```bash ```bash
eval (tmuxifier init -) eval (tmuxifier init - fish)
``` ```
### Custom Tmux Arguments ### Custom Tmux Arguments
@@ -216,7 +216,7 @@ example:
- Setting the `TMUXIFIER_TMUX_ITERM_ATTACH` environment variable to `-CC` - Setting the `TMUXIFIER_TMUX_ITERM_ATTACH` environment variable to `-CC`
before calling the `load-session` command. before calling the `load-session` command.
[tmux integration]: https://code.google.com/p/iterm2/wiki/TmuxIntegration [tmux integration]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration
## Inspiration ## Inspiration

View File

@@ -11,7 +11,10 @@ end
# If `tmuxifier` is available, and `$TMUXIFIER_NO_COMPLETE` is not set, then # If `tmuxifier` is available, and `$TMUXIFIER_NO_COMPLETE` is not set, then
# load Tmuxifier shell completion. # load Tmuxifier shell completion.
if test -n (which tmuxifier); and test -z $TMUXIFIER_NO_COMPLETE if test -n (which tmuxifier); and test -z $TMUXIFIER_NO_COMPLETE
# fish shell 2.0.0 does not have the source alias
if [ (fish --version 2>| awk -F'version ' '{print $2}') = '2.0.0' ];
. "$TMUXIFIER/completion/tmuxifier.fish"
else
source "$TMUXIFIER/completion/tmuxifier.fish" source "$TMUXIFIER/completion/tmuxifier.fish"
end
end end

View File

@@ -22,6 +22,10 @@ new_window() {
if [ -n "$2" ]; then local command=("$2"); fi if [ -n "$2" ]; then local command=("$2"); fi
tmuxifier-tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}" tmuxifier-tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}"
# Disable renaming if a window name was given.
if [ -n "$1" ]; then tmuxifier-tmux set-option -t "$1" allow-rename off; fi
window="$(__get_current_window_index)" window="$(__get_current_window_index)"
__go_to_window_or_session_path __go_to_window_or_session_path
} }
@@ -101,6 +105,44 @@ select_pane() {
tmuxifier-tmux select-pane -t "$session:$window.$1" tmuxifier-tmux select-pane -t "$session:$window.$1"
} }
# Balance windows vertically with the "even-vertical" layout.
#
# Arguments:
# - $1: (optional) Window ID or name to operate on.
#
balance_windows_vertical() {
tmuxifier-tmux select-layout -t "$session:${1:-$window}" even-vertical
}
# Balance windows horizontally with the "even-horizontal" layout.
#
# Arguments:
# - $1: (optional) Window ID or name to operate on.
#
balance_windows_horizontal() {
tmuxifier-tmux select-layout -t "$session:${1:-$window}" even-horizontal
}
# Turn on synchronize-panes in a window.
#
# Arguments:
# - $1: (optional) Window ID or name to operate on.
#
synchronize_on() {
tmuxifier-tmux set-window-option -t "$session:${1:-$window}" \
synchronize-panes on
}
# Turn off synchronize-panes in a window.
#
# Arguments:
# - $1: (optional) Window ID or name to operate on.
#
synchronize_off() {
tmuxifier-tmux set-window-option -t "$session:${1:-$window}" \
synchronize-panes off
}
# Send/paste keys to the currently active pane/window. # Send/paste keys to the currently active pane/window.
# #
# Arguments: # Arguments:
@@ -185,12 +227,24 @@ load_window() {
# - $2: (optional) Override default window name. # - $2: (optional) Override default window name.
# #
load_session() { load_session() {
local file="$1" local file
if [ ! -f "$file" ]; then if [ "${1#*/}" = "$1" ]; then
# There's no slash in the path.
if [ -f "$TMUXIFIER_LAYOUT_PATH/$1.session.sh" ] || [ ! -f "$1" ]; then
file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh" file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh"
else
# bash's 'source' requires an slash in the filename to not use $PATH.
file="./$1"
fi
else
file="$1"
fi
if ! [ -f "$file" ]; then
echo "\"$1\" session layout not found." >&2
return 1
fi fi
if [ -f "$file" ]; then
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then
session="$2" session="$2"
else else
@@ -206,10 +260,6 @@ load_session() {
if [[ "$session_root" != "$HOME" ]]; then if [[ "$session_root" != "$HOME" ]]; then
session_root="$HOME" session_root="$HOME"
fi fi
else
echo "\"$1\" session layout not found." >&2
return 1
fi
} }
# Create a new session, returning 0 on success, 1 on failure. # Create a new session, returning 0 on success, 1 on failure.
@@ -233,7 +283,7 @@ initialize_session() {
tmuxifier-tmux start-server tmuxifier-tmux start-server
# Check if the named session already exists. # Check if the named session already exists.
if tmuxifier-tmux has-session -t "$session:" 2>/dev/null; then if tmuxifier-tmux list-sessions | grep -q "^$session:"; then
return 1 return 1
fi fi
@@ -261,6 +311,11 @@ initialize_session() {
-d -s "$session" "${session_args[@]}" -d -s "$session" "${session_args[@]}"
fi fi
if $set_default_path && [[ "$session_root" != "$HOME" ]]; then
tmuxifier-tmux setenv -t "$session:" \
TMUXIFIER_SESSION_ROOT "$session_root"
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.
@@ -331,9 +386,19 @@ __go_to_session() {
} }
__go_to_window_or_session_path() { __go_to_window_or_session_path() {
local window_or_session_root=${window_root-$session_root} local target_path
if [ -n "$window_or_session_root" ]; then
run_cmd "cd \"$window_or_session_root\"" if [ -n "$window_root" ]; then
target_path="$window_root"
elif [ -n "$TMUXIFIER_SESSION_ROOT" ]; then
target_path="$TMUXIFIER_SESSION_ROOT"
elif [ -n "$session_root" ]; then
target_path="$session_root"
fi
# local window_or_session_root=${window_root-$session_root}
if [ -n "$target_path" ]; then
run_cmd "cd \"$target_path\""
run_cmd "clear" run_cmd "clear"
fi fi
} }

View File

@@ -76,7 +76,12 @@ case "$shell" in
;; ;;
fish ) fish )
echo "set -gx TMUXIFIER \"$TMUXIFIER\";" echo "set -gx TMUXIFIER \"$TMUXIFIER\";"
# fish shell 2.0.0 does not have the source alias
if [[ $(fish --version 2>&1 | awk -F'version ' '{print $2}') = '2.0.0' ]]; then
echo ". \"\$TMUXIFIER/init.fish\";"
else
echo "source \"\$TMUXIFIER/init.fish\";" echo "source \"\$TMUXIFIER/init.fish\";"
fi
;; ;;
* ) * )
echo "export TMUXIFIER=\"$TMUXIFIER\";" echo "export TMUXIFIER=\"$TMUXIFIER\";"

View File

@@ -15,7 +15,7 @@ List all session layouts."
exit exit
fi fi
list=$(find -L "$TMUXIFIER_LAYOUT_PATH" -name "*.session.sh") list=$(find -L "$TMUXIFIER_LAYOUT_PATH" -name "*.session.sh" | sort)
for file in $list; do for file in $list; do
file=${file/$TMUXIFIER_LAYOUT_PATH\//} file=${file/$TMUXIFIER_LAYOUT_PATH\//}
echo "${file/.session.sh/}" echo "${file/.session.sh/}"

View File

@@ -15,7 +15,7 @@ List all window layouts."
exit exit
fi fi
list=$(find -L "$TMUXIFIER_LAYOUT_PATH" -name "*.window.sh") list=$(find -L "$TMUXIFIER_LAYOUT_PATH" -name "*.window.sh" | sort)
for file in $list; do for file in $list; do
file=${file/$TMUXIFIER_LAYOUT_PATH\//} file=${file/$TMUXIFIER_LAYOUT_PATH\//}
echo "${file/.window.sh/}" echo "${file/.window.sh/}"

View File

@@ -11,7 +11,7 @@ if calling-help "$@"; then
Outputs current Tmux version. If given optional target-version it outputs one Outputs current Tmux version. If given optional target-version it outputs one
of three possible characters indicating if the current Tmux version number is of three possible characters indicating if the current Tmux version number is
equal to, less than, or greater than the [target-version]. equal to, less than, or greater than the <target-version>.
The three possible outputs are \"=\", \"<\", and \">\"." The three possible outputs are \"=\", \"<\", and \">\"."
exit exit
@@ -44,7 +44,16 @@ vercomp () {
version=$(tmux -V) version=$(tmux -V)
version=${version/tmux /} version=${version/tmux /}
if [ -n "$1" ]; then if [ -z "$1" ]; then
echo "$version"
exit
fi
if [ "$version" == "master" ]; then
# When version string is "master", tmux was compiled from source, and we
# assume it's later than whatever the <target-version> is.
echo '>'
else
# Fix for "1.9a" version comparison, as vercomp() can only deal with # Fix for "1.9a" version comparison, as vercomp() can only deal with
# purely numeric version numbers. # purely numeric version numbers.
version=${version//+([a-zA-Z])/} version=${version//+([a-zA-Z])/}
@@ -55,6 +64,4 @@ if [ -n "$1" ]; then
1) echo '>';; 1) echo '>';;
2) echo '<';; 2) echo '<';;
esac esac
else
echo "$version"
fi fi

View File

@@ -13,4 +13,4 @@ Outputs Tmuxifier version."
exit exit
fi fi
echo "0.12.0" echo "0.13.0"

View File

@@ -23,6 +23,17 @@ unset window_root
restore run_cmd restore run_cmd
# When only $TMUXIFIER_SESSION_ROOT is set, runs cd to $TMUXIFIER_SESSION_ROOT
# path.
stub run_cmd
TMUXIFIER_SESSION_ROOT="/opt"
__go_to_window_or_session_path
assert 'stub_called_with_times run_cmd cd \"/opt\"' "1"
assert 'stub_called_with_times run_cmd clear' "1"
unset TMUXIFIER_SESSION_ROOT
restore run_cmd
# When only $session_root is set, runs cd to $session_root path. # When only $session_root is set, runs cd to $session_root path.
stub run_cmd stub run_cmd
session_root="/usr" session_root="/usr"
@@ -45,5 +56,33 @@ unset session_root
restore run_cmd restore run_cmd
# When $TMUXIFIER_SESSION_ROOT and $session_root are set, runs cd to
# $TMUXIFIER_SESSION_ROOT path.
stub run_cmd
TMUXIFIER_SESSION_ROOT="/opt"
session_root="/usr"
__go_to_window_or_session_path
assert 'stub_called_with_times run_cmd cd \"/opt\"' "1"
assert 'stub_called_with_times run_cmd clear' "1"
unset TMUXIFIER_SESSION_ROOT
unset session_root
restore run_cmd
# When $window_root, $TMUXIFIER_SESSION_ROOT, and $session_root are set, runs
# cd to $window_root path.
stub run_cmd
window_root="/tmp"
TMUXIFIER_SESSION_ROOT="/opt"
session_root="/usr"
__go_to_window_or_session_path
assert 'stub_called_with_times run_cmd cd \"/tmp\"' "1"
assert 'stub_called_with_times run_cmd clear' "1"
unset window_root
unset TMUXIFIER_SESSION_ROOT
unset session_root
restore run_cmd
# End of tests. # End of tests.
assert_end "__go_to_window_or_session_path()" assert_end "__go_to_window_or_session_path()"