16 Commits

Author SHA1 Message Date
98b50afb37 Bump version to 0.1.3 2012-04-30 02:18:57 +01:00
99bd6a9bd5 Improve error output from edit-session and edit-window commands 2012-04-30 02:15:50 +01:00
5a0e4c912c Remove useless piece of code left from "borrowing" it from rbenv 2012-04-30 02:15:22 +01:00
178bbdecff Make better use of conditional operators and quote vars properly 2012-04-30 02:14:52 +01:00
1fc854dbdd Move internal runtime functions to layout-helpers.sh file 2012-04-30 02:12:01 +01:00
addb754ac7 Use new tmuxifier-resolve-command-path everywhere 2012-04-30 02:10:43 +01:00
3063c6f1f3 Correctly resolve aliases in help command.
This resolves issue #1.
2012-04-30 02:08:40 +01:00
7d2c9aa49f Bump version to 0.1.2 2012-04-26 08:52:02 +01:00
b65355a35a Boolean logic is hard (and buggy? wtf?)
Fixed a bug with alias resolution not working, for reasons that are
currently beyond my understanding of shell scripting it would seem.
2012-04-26 08:51:49 +01:00
8e21664439 Bump version to 0.1.1 2012-04-26 08:29:39 +01:00
d4dfe39037 Improve how return value of certain commands are checked 2012-04-26 02:41:13 +01:00
b0b8d29d27 Make tmuxifier-alias return 1 when no alias is matched 2012-04-26 02:28:03 +01:00
855c522cf0 Avoid exiting with a cleaner syntax for commands that might fail 2012-04-26 02:22:40 +01:00
0d3cfb2494 Improve new_window helper function's internals 2012-04-26 02:10:30 +01:00
60e92c35e8 Improve readme formatting 2012-04-26 00:40:45 +01:00
1e50f0c2c3 Expand usage section in readme 2012-04-26 00:38:03 +01:00
14 changed files with 108 additions and 68 deletions

View File

@@ -65,7 +65,7 @@ And add the following to your `~/.profile`, `~/.bash_profile` or equivalent:
*__Note:__ This section needs expanding upon.*
For a quick reference on available commands, please run:
For a quick reference on available commands and their aliases, please run:
tmuxifier help
@@ -74,6 +74,41 @@ window and session layout files. New layout files are populated with examples
and comments explaining what things do. Also, having a look at the
[examples][] directory will also give you a good idea.
### Window Layouts
First off you'll want to define a window layout:
tmuxifier new-window my-awesome-window
This will create a new layout file called `my-awesome-window.window.sh` in
your `$TMUXIFIER_LAYOUT_PATH`, and open it with the editor defined in
`$EDITOR`. Customize it as you wish, and save.
You can now load *my-awesome-window* with the following command:
tmuxifier load-window my-awesome-window
You should now have a new Tmux window open created from your custom and
awesome window layout.
### Session Layouts
To create your first session layout, run:
tmuxifier new-session my-awesome-session
Same deal as with creating a new window, except the filename ends with
`.session.sh` instead of `.window.sh`, and the file's pre-populated content
looks different. To have your awesome window loaded, add `load_window
"my-awesome-window"` to the session layout next to existing examples.
To load the session layout simply run:
tmuxifier load-session my-awesome-session
You'll now have a new Tmux session with your previously defined awesome window
in it.
[examples]: https://github.com/jimeh/tmuxifier/tree/master/examples
## Configure & Customize
@@ -168,4 +203,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -24,15 +24,7 @@ case "$command" in
;;
* )
command_path="$(command -v "tmuxifier-$command" || true)"
# Attempt to resolve aliases
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
command_path="$(command -v "tmuxifier-$resolved" || true)"
fi
fi
! command_path="$(tmuxifier-resolve-command-path "$command")"
if [ -z "$command_path" ]; then
echo "tmuxifier: no such command '$command'" >&2

View File

@@ -10,7 +10,7 @@ export PATH="$TMUXIFIER/bin:$PATH"
# If `tmuxifier` is available, and `$TMUXIFIER_NO_COMPLETE` is not set, then
# load tmuxifier shell completion.
if [ ! -z $(command -v "tmuxifier") ] && [ -z "$TMUXIFIER_NO_COMPLETE" ]; then
if [ -n "$(command -v "tmuxifier")" ] && [ -z "$TMUXIFIER_NO_COMPLETE" ]; then
if [ -n "$BASH_VERSION" ]; then
source "$TMUXIFIER/completion/tmuxifier.bash"
elif [ -n "$ZSH_VERSION" ]; then

View File

@@ -13,16 +13,17 @@
# - $2: (optional) Shell command to execute when window is created.
#
new_window() {
if [ ! -z "$1" ]; then
if [ -n "$1" ]; then
window="$1"
fi
if [ ! -z "$2" ]; then
local command="\"$2\""
local command=()
if [ -n "$2" ]; then
command+=("$2")
fi
if [ ! -z "$window" ]; then
local winarg="-n \"$window\""
if [ -n "$window" ]; then
local winarg=(-n "$window")
fi
eval "tmux new-window -t \"$session:\" $winarg $command"
tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}"
}
# Select a specific window.
@@ -113,7 +114,7 @@ window_root() {
# fi
#
initialize_session() {
if [ ! -z "$1" ]; then
if [ -n "$1" ]; then
session="$1"
fi
@@ -126,7 +127,7 @@ initialize_session() {
env TMUX= tmux new-session -d -s "$session"
# Set default-path for session
if [ ! -z "$session_root" ] && [ -d "$session_root" ]; then
if [ -n "$session_root" ] && [ -d "$session_root" ]; then
cd "$session_root"
tmux set-option -t "$session" default-path "$session_root" 1>/dev/null
fi
@@ -156,8 +157,32 @@ initialize_session() {
# created, the session already exists, and we'll need to specifically switch
# to it here.
finalize_and_go_to_session() {
tmux kill-window -t "$session:99" 2>/dev/null || true
! tmux kill-window -t "$session:99" 2>/dev/null
if [[ "$(tmuxifier-current-session)" != "$session" ]]; then
__go_to_session
fi
}
#
# Internal functions
#
# Expands given path.
#
# Example:
#
# $ __expand_path "~/Projects"
# /Users/jimeh/Projects
#
__expand_path() {
echo $(eval echo "$@")
}
__go_to_session() {
if [ -z "$TMUX" ]; then
tmux -u attach-session -t "$session"
else
tmux -u switch-client -t "$session"
fi
}

View File

@@ -30,4 +30,6 @@ case "$1" in
"list-win" | "lsw" )
echo "list-windows"
;;
* )
exit 1
esac

View File

@@ -7,7 +7,7 @@ shopt -s nullglob
{ for path in ${PATH//:/$'\n'}; do
for command in "${path}/tmuxifier-"*; do
command="${command##*tmuxifier-}"
echo ${command##sh-}
echo "$command"
done
done
} | sort | uniq

View File

@@ -18,17 +18,9 @@ if [ -z "$command" ]; then
exit 1
fi
command_path="$(command -v "tmuxifier-$command" || true)"
! command_path="$(tmuxifier-resolve-command-path "$command")"
# Attempt to resolve aliases
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
command_path="$(command -v "tmuxifier-$resolved" || true)"
fi
fi
if [ ! -z "$command_path" ] && has-completions "$command_path"; then
if [ -n "$command_path" ] && has-completions "$command_path"; then
shift
exec "$command_path" --complete "$@"
fi

View File

@@ -2,7 +2,7 @@
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
if [ ! -z $TMUX ]; then
if [ -n "$TMUX" ]; then
for item in $(tmux list-sessions -F "#{?session_attached,1,0}:#S"); do
if [[ "$item" == "1:"* ]]; then
echo ${item/1:/}

View File

@@ -22,7 +22,7 @@ if [ ! -f "$layout_file" ]; then
echo "tmuxifier: session layout '$layout_name' does not exist." >&2
echo "" >&2
echo "You can create it with:" >&2
echo " tmuxifier new-session $layout_name" >&2
echo " tmuxifier new-session '$layout_name'" >&2
exit 1
fi

View File

@@ -22,7 +22,7 @@ if [ ! -f "$layout_file" ]; then
echo "tmuxifier: window layout '$layout_name' does not exist." >&2
echo "" >&2
echo "You can create it with:" >&2
echo " tmuxifier new-window $layout_name" >&2
echo " tmuxifier new-window '$layout_name'" >&2
exit 1
fi

View File

@@ -9,14 +9,12 @@ if [ "$1" == "--complete" ]; then
fi
command="$1"
command_path="$(command -v "tmuxifier-$command" || true)"
# Attempt to resolve aliases
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
# Ensure we have the correct command name in case an alias was given.
if [ -n "$command" ]; then
! resolved="$(tmuxifier-alias "$command")"
if [ -n "$resolved" ]; then
command="$resolved"
command_path="$(command -v "tmuxifier-$command" || true)"
fi
fi
@@ -111,14 +109,16 @@ Aliases: list-win, lsw
List all window layouts."
;;
* )
if [ ! -z "$command_path" ]; then
! command_path="$(tmuxifier-resolve-command-path "$command")"
if [ -n "$command_path" ]; then
echo "Sorry, the '$command' command isn't documented yet."
echo
echo "You can view the command's source here:"
echo "$command_path"
echo
else
echo "tmuxifier: no such command '$command'"
echo "tmuxifier: no such command '$command'" >&2
exit 1
fi
;;
esac

View File

@@ -0,0 +1,19 @@
#! /usr/bin/env bash
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
if [ -n "$1" ]; then
! command_path="$(command -v "tmuxifier-$1")"
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$1")"
if [ -n "$resolved" ]; then
! command_path="$(command -v "tmuxifier-$resolved")"
fi
fi
fi
if [ -n "$command_path" ]; then
echo "$command_path"
else
exit 1
fi

View File

@@ -2,4 +2,4 @@
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
echo "0.1.0"
echo "0.1.3"

View File

@@ -10,27 +10,3 @@ session_root="$HOME"
# Load layout helper functions.
source "$TMUXIFIER/lib/layout-helpers.sh"
#
# Internal functions
#
# Expands given path.
#
# Example:
#
# $ __expand_path "~/Projects"
# /Users/jimeh/Projects
#
__expand_path() {
echo $(eval echo "$@")
}
__go_to_session() {
if [ -z $TMUX ]; then
tmux -u attach-session -t "$session"
else
tmux -u switch-client -t "$session"
fi
}