37 Commits

Author SHA1 Message Date
908152bb57 Bump version to 0.7.2 2013-06-20 09:38:22 +01:00
a0365273d0 Minor formatting fixes 2013-06-20 09:38:00 +01:00
6c8777adc2 Merge pull request #19 from gryftir/master
split_hl, split_vl and clock functions
2013-06-20 01:36:45 -07:00
Lawrence Siebert
5e33aefa7d modified: lib/layout-helpers.sh
added split_hl and split_hl and split_vl which split with a count of
columns/lines instead of by percentage,  and clock which starts
clock-mode.  Comments for each added.
2013-06-19 23:35:13 -07:00
e15ae597e4 Bump version to 0.7.1 2013-06-18 09:13:41 +01:00
d982588302 Merge pull request #18 from fomichev/master
tmux set-option default-path
2013-06-18 01:11:42 -07:00
Stanislav Fomichev
0fc1f20af7 Fix typo 2013-06-18 11:11:22 +04:00
Stanislav Fomichev
8c2582a948 Add set_default_path option
This option lets user disable 'tmux set-option default-path' for
$session_root, like this:
	session_root "~/x/y/z"
	set_default_path=false
2013-06-18 11:10:48 +04:00
c1ecc0a7c8 Update LICENSE file to match license details in readme 2013-06-18 00:27:22 +01:00
85718b9a9e Update Todos section in readme 2013-06-18 00:24:51 +01:00
1b5c451e39 Remove "Heed My Warning" section from readme, it's no longer relevant 2013-06-18 00:24:36 +01:00
887bbc4fbc No need to attempt to syntax highlight shell command examples 2013-06-18 00:23:18 +01:00
103cf66ec3 Bump version to 0.7.0 2013-06-18 00:13:57 +01:00
f3797204fb Merge pull request #15 from jimeh/new-init-system
New init system
2013-06-17 16:11:56 -07:00
83b6b47f7c Update readme 2013-06-18 00:05:15 +01:00
fb5a775d98 Improve EDITOR checks 2013-06-17 13:39:13 +01:00
0359e09806 Merge branch 'master' into new-init-system 2013-06-17 13:36:09 +01:00
ee32ac25b8 Merge pull request #17 from peter-d/new-init-system-check
New init system check
2013-06-17 05:32:04 -07:00
peter-d
54561b9bbd fixed a typo 2013-06-17 14:25:24 +02:00
peter-d
a4e3edc4ca Fixed the path setup for tcsh 2013-06-17 14:24:32 +02:00
9f1a3621f0 Fix an error and tweak some styling in readme 2013-06-12 09:00:18 +01:00
831deec069 Update readme with details of new init system 2013-06-12 08:50:25 +01:00
536f625b5d Print correct help info for init command based on the shell used 2013-06-12 00:53:40 +01:00
9e8a5c3dc9 Separate init command output commands with ; fixing issues with tcsh 2013-06-12 00:48:48 +01:00
f0647b0326 Update init scripts 2013-06-12 00:31:51 +01:00
c9c3534f05 Improve init command's argument parsing 2013-06-12 00:08:44 +01:00
7a9c94ff6f Merge pull request #14 from raulbrito/patch-1
Update README.md
2013-06-06 11:43:16 -07:00
Raul Brito
0caf3a78f5 Update README.md 2013-06-06 20:31:26 +02:00
21c43be558 Merge branch 'master' into new-init-system 2013-06-03 09:50:38 +03:00
1a9dd4787d Improve argument handling of init command 2013-06-03 09:16:58 +03:00
4d486d48d0 Fix a typo 2013-06-02 21:30:56 +03:00
d94ccf560e Simplify internals of init command a bit 2013-06-02 21:29:38 +03:00
ed3fda5769 Update init command to use new help system 2013-06-02 21:25:19 +03:00
35832165ec Merge branch 'master' into new-init-system 2013-06-02 21:04:49 +03:00
7cc9228839 Add early version new tmuxifier-init command 2013-06-02 17:51:43 +03:00
7ab7586f74 Auto-set $TMUXIFIER to correct directory based on relative path 2013-06-02 17:43:41 +03:00
51ebf880dc Only add $TMUXIFIER/bin to $PATH if it is not in $PATH already 2013-06-02 17:42:31 +03:00
12 changed files with 192 additions and 48 deletions

View File

@@ -1,4 +1,4 @@
Copyright (c) 2012 Jim Myhrberg. Copyright (c) 2013 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

@@ -1,6 +1,6 @@
# Tmuxifier # Tmuxifier
Tmuxify your Tmux. Create, edit, mangage and load complex Tmux session, window Tmuxify your Tmux. Create, edit, manage and load complex Tmux session, window
and pane configurations with ease. 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"
@@ -42,9 +42,7 @@ select_pane 0
You can then load that window layout into a new window in the You can then load that window layout into a new window in the
current tmux session using: current tmux session using:
```bash
tmuxifier load-window example tmuxifier load-window example
```
Which will yield a Tmux window looking like this: Which will yield a Tmux window looking like this:
@@ -54,29 +52,53 @@ Which will yield a Tmux window looking like this:
Clone the repo to your machine: Clone the repo to your machine:
```bash
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
available to you:
__In bash & zsh:__
```bash
export PATH="~/.tmuxifier/bin:$PATH"
``` ```
### bash & zsh __In tcsh:__
```tcsh
set path = ( "~/.tmuxifier/bin" $path )
```
### Custom Installation Path
To install Tmuxifier somewhere else than the suggested `~/.tmuxifier`, simply
clone the repository to your custom location, and ensure the `bin` folder is
added to your PATH making the `tmuxifier` executable available to you.
## Setup
__In bash & zsh:__
And add the following to your `~/.profile`, `~/.bash_profile`, `~/.zshrc` or And add the following to your `~/.profile`, `~/.bash_profile`, `~/.zshrc` or
equivalent: equivalent:
```bash ```bash
[[ -s "$HOME/.tmuxifier/init.sh" ]] && source "$HOME/.tmuxifier/init.sh" eval "$(tmuxifier init -)"
``` ```
### tcsh __In tcsh:__
Add the following to your `~/.cshrc`, `~/.tcshrc` or equivalent: Add the following to your `~/.cshrc`, `~/.tcshrc` or equivalent:
```tcsh ```tcsh
if ( -s "$HOME/.tmuxifier/init.sh" ) then eval `tmuxifier init -`
source "$HOME/.tmuxifier/init.sh"
endif
``` ```
## Updating
cd ~/.tmuxifier
git pull
## Usage ## Usage
*__Note:__ This section needs expanding upon.* *__Note:__ This section needs expanding upon.*
@@ -129,17 +151,6 @@ in it.
## Configure & Customize ## Configure & Customize
### Custom Installaton Path
To install Tmuxifier to a custom path, clone the repository to your desired
path and set `$TMUXIFIER` to that path, additionally loading `init.sh` or
`init.tcsh` from that same path.
```bash
export TMUXIFIER="$HOME/.dotfiles/tmuxifier"
[[ -s "$TMUXIFIER/init.sh" ]] && source "$TMUXIFIER/init.sh"
```
### Custom Layouts Path ### Custom Layouts Path
You can customize the layouts directory used by Tmuxifier by setting You can customize the layouts directory used by Tmuxifier by setting
@@ -182,19 +193,10 @@ it does set itself apart in a number of ways:
[tmuxinator]: https://github.com/aziz/tmuxinator [tmuxinator]: https://github.com/aziz/tmuxinator
[rbenv]: https://github.com/sstephenson/rbenv [rbenv]: https://github.com/sstephenson/rbenv
## Heed My Warning
Tmuxifier is pretty much an alpha product hacked together over a weekend at
this point. Documentation is sketchy at best, and things might drastically
change and/or break.
But if that doesn't put you off, please enjoy Tmuxifier :)
## Todos ## Todos
* Improve Readme, specially Usage section. * Improve Readme, specially Usage section.
* Expand `help` command with details for most commands, rather than just the * Write up a detailed reference for all available layout helper functions.
essential ones.
## License ## License

View File

@@ -2,8 +2,26 @@
set -e set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x [ -n "$TMUXIFIER_DEBUG" ] && set -x
resolve_link() {
$(type -p greadlink readlink | head -1) $1
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
pwd
cd "$cwd"
}
if [ -z "${TMUXIFIER}" ]; then if [ -z "${TMUXIFIER}" ]; then
export TMUXIFIER="${HOME}/.tmuxifier" export TMUXIFIER="$(dirname "$(abs_dirname "$0")")"
else else
export TMUXIFIER="${TMUXIFIER%/}" export TMUXIFIER="${TMUXIFIER%/}"
fi fi

View File

@@ -1,4 +1,4 @@
# Set tmuxifier root path. # Set/fix Tmuxifier root path if needed.
if [ -z "${TMUXIFIER}" ]; then if [ -z "${TMUXIFIER}" ]; then
export TMUXIFIER="${HOME}/.tmuxifier" export TMUXIFIER="${HOME}/.tmuxifier"
else else
@@ -6,10 +6,12 @@ else
fi fi
# Add `bin` directroy to `$PATH`. # Add `bin` directroy to `$PATH`.
if [[ ":$PATH:" != *":$TMUXIFIER/bin:"* ]]; then
export PATH="$TMUXIFIER/bin:$PATH" export PATH="$TMUXIFIER/bin:$PATH"
fi
# 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 [ -n "$(command -v "tmuxifier")" ] && [ -z "$TMUXIFIER_NO_COMPLETE" ]; then if [ -n "$(command -v "tmuxifier")" ] && [ -z "$TMUXIFIER_NO_COMPLETE" ]; then
if [ -n "$BASH_VERSION" ]; then if [ -n "$BASH_VERSION" ]; then
source "$TMUXIFIER/completion/tmuxifier.bash" source "$TMUXIFIER/completion/tmuxifier.bash"

View File

@@ -1,13 +1,15 @@
# Set tmuxifier root path. # Set Tmuxifier root path if needed.
if ( ! $?TMUXIFIER ) then if ( ! $?TMUXIFIER ) then
setenv TMUXIFIER "${HOME}/.tmuxifier" setenv TMUXIFIER "${HOME}/.tmuxifier"
endif endif
# Add `bin` directroy to `$PATH`. # Add `bin` directroy to `$path` if needed.
if ( ! (" $path " =~ "* $TMUXIFIER/bin *" ) ) then
set path = ( $TMUXIFIER/bin $path ) set path = ( $TMUXIFIER/bin $path )
endif
# 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 ( ! $?TMUXIFIER_NO_COMPLETE ) then if ( ! $?TMUXIFIER_NO_COMPLETE ) then
which tmuxifier > /dev/null && source "$TMUXIFIER/completion/tmuxifier.tcsh" which tmuxifier > /dev/null && source "$TMUXIFIER/completion/tmuxifier.tcsh"
endif endif

View File

@@ -45,6 +45,38 @@ split_h() {
__go_to_window_or_session_path __go_to_window_or_session_path
} }
# Split current window/pane vertically by line count.
#
# Arguments:
# - $1: (optional) Number of lines the new pane will use.
# - $2: (optional) Target pane ID to split in current window.
#
split_vl() {
if [ -n "$1" ]; then local count=(-l "$1"); fi
tmux split-window -t "$session:$window.$2" -v "${count[@]}"
__go_to_window_or_session_path
}
# Split current window/pane horizontally by column count.
#
# Arguments:
# - $1: (optional) Number of columns the new pane will use.
# - $2: (optional) Target pane ID to split in current window.
#
split_hl() {
if [ -n "$1" ]; then local count=(-l "$1"); fi
tmux split-window -t "$session:$window.$2" -h "${count[@]}"
__go_to_window_or_session_path
}
# Run clock mode.
#
# Arguments:
# - $1: (optional) Target pane ID in which to run
clock() {
tmux clock-mode -t "$session:$window.$1"
}
# Select a specific window. # Select a specific window.
# #
# Arguments: # Arguments:
@@ -84,7 +116,7 @@ run_cmd() {
send_keys "C-m" "$2" send_keys "C-m" "$2"
} }
# Cusomize session root path. Default is `$HOME`. # Customize session root path. Default is `$HOME`.
# #
# Arguments: # Arguments:
# - $1: Directory path to use for session root. # - $1: Directory path to use for session root.
@@ -138,6 +170,7 @@ load_session() {
local file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh" local file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh"
if [ -f "$file" ]; then if [ -f "$file" ]; then
session="$1" session="$1"
set_default_path=true
source "$file" source "$file"
session= session=
@@ -178,7 +211,8 @@ initialize_session() {
# Set default-path for session # Set default-path for session
if [ -n "$session_root" ] && [ -d "$session_root" ]; then if [ -n "$session_root" ] && [ -d "$session_root" ]; then
cd "$session_root" cd "$session_root"
tmux set-option -t "$session:" default-path "$session_root" 1>/dev/null
$set_default_path && tmux set-option -t "$session:" default-path "$session_root" 1>/dev/null
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

View File

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

View File

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

74
libexec/tmuxifier-init Executable file
View File

@@ -0,0 +1,74 @@
#! /usr/bin/env bash
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
# Set shell to first argument that is not "-", "-h" or "--help".
for arg in "$@"; do
if [ "$arg" != "-" ] &&[ "$arg" != "-h" ] && [ "$arg" != "--help" ]; then
shell="$arg"
fi
done
if [ -z "$shell" ]; then
shell="$(basename "$SHELL")"
fi
case "$shell" in
bash )
profile='~/.bash_profile'
;;
zsh )
profile='~/.zshrc'
;;
ksh )
profile='~/.profile'
;;
csh )
profile='~/.cshrc'
;;
tcsh )
profile='~/.tcshrc'
;;
* )
profile='shell init file'
;;
esac
# Provide tmuxifier help
if [[ " $@ " == *" --help "* ]]; then
echo "usage: tmuxifier init -
Load Tmuxifier by adding the following to your ${profile}:
"
case "$shell" in
csh | tcsh )
echo " eval \`tmuxifier init -\`
"
;;
* )
echo " eval \"\$(tmuxifier init -)\"
"
;;
esac
echo "You might also need to add Tmuxifier's bin directory to your PATH."
exit
fi
# Print help if "-" argument is not given
if [[ " $@ " != *" - "* ]]; then
echo "$(tmuxifier-help init $@)" >&2
exit 1
fi
case "$shell" in
csh | tcsh )
echo "setenv TMUXIFIER \"$TMUXIFIER\";"
echo "source \"\$TMUXIFIER/init.tcsh\";"
;;
* )
echo "export TMUXIFIER=\"$TMUXIFIER\";"
echo "source \"\$TMUXIFIER/init.sh\";"
;;
esac

View File

@@ -46,7 +46,7 @@ fi
content="$(cat "$template")" content="$(cat "$template")"
echo "${content//\{\{SESSION_NAME\}\}/$layout_name}" > "$layout_file" echo "${content//\{\{SESSION_NAME\}\}/$layout_name}" > "$layout_file"
if [ ! -z "$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 "

View File

@@ -46,7 +46,7 @@ fi
content="$(cat "$template")" content="$(cat "$template")"
echo "${content//\{\{WINDOW_NAME\}\}/$layout_name}" > "$layout_file" echo "${content//\{\{WINDOW_NAME\}\}/$layout_name}" > "$layout_file"
if [ ! -z "$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 "

View File

@@ -13,4 +13,4 @@ Outputs Tmuxifier version."
exit exit
fi fi
echo "0.6.1" echo "0.7.2"