diff options
-rw-r--r-- | FAQ | 45 | ||||
-rw-r--r-- | Makefile.am | 6 | ||||
-rw-r--r-- | README (renamed from NOTES) | 28 | ||||
-rw-r--r-- | SYNCING | 2 | ||||
-rw-r--r-- | TODO | 57 | ||||
-rw-r--r-- | cmd-queue.c | 2 | ||||
-rw-r--r-- | cmd-server-info.c | 3 | ||||
-rw-r--r-- | cmd-wait-for.c | 2 | ||||
-rw-r--r-- | compat/getopt.c | 2 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | examples/tmux-zoom.sh | 57 | ||||
-rw-r--r-- | examples/tmux.vim | 14 | ||||
-rw-r--r-- | osdep-darwin.c | 27 | ||||
-rw-r--r-- | server-client.c | 1 | ||||
-rw-r--r-- | tmux.1 | 4 | ||||
-rw-r--r-- | tty-term.c | 3 | ||||
-rw-r--r-- | www/index.html.in | 98 |
17 files changed, 103 insertions, 253 deletions
@@ -326,51 +326,6 @@ lock(1) or vlock(1)) by using the following: bind x set lock-command '/usr/bin/vlock' \; lock-client \; set lock-command 'tput civis && read -s -n1' -* How can I open a new window in the same directory as the current window? - -One option is to just run "TMUX= tmux" in the window. However, this only works if no -command is running, so that you can input the command. - -A workaround is to let tmux know about the current path through an environment -variable. To do so, use the following command: - - [ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD - -Which sets TMUXPWD_i (where i is the number of the current window) to the path -of the current directory. This command can be added to PS1, for example: - - PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\h$ ' - -When a new window is created, the shell should be asked to change -directory. You can define a new binding (for example, if using GNU bash): - - bind-key C-c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"' - -This solution will work even if a command is currently running in the terminal, -but it will not work from a window that has just been swapped with another -because TMUXPWD_i will not be updated after a swap. However, once a new prompt -is displayed, TMUXPWD_i is updated properly. - -* tmux doesn't start with "daemon failed" - -tmux shows something similar to this when started: - - fatal: server_start: daemon failed: No such file or directory - fatal: main_dispatch: imsg_read failed - -A possible reason is that /dev/null is not a character device or is otherwise -inaccessible. - -Check with: - - file /dev/null - ls -l /dev/null - -If it is not a character device or has incorrect permissions, it can typically -be recreated with: - - cd /dev && rm null && ./MAKEDEV null - * vim displays reverse video instead of italics, while less displays italics (or just regular text) instead of reverse. What's wrong? diff --git a/Makefile.am b/Makefile.am index bb2f4dac..2ce54b1a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,7 +6,7 @@ dist_man1_MANS = tmux.1 # Distribution tarball options. EXTRA_DIST = \ - CHANGES FAQ NOTES TODO examples compat \ + CHANGES FAQ README TODO examples compat \ array.h compat.h tmux.h osdep-*.c dist-hook: grep "^#found_debug=" configure @@ -26,13 +26,15 @@ endif if IS_GCC CFLAGS += -std=gnu99 if IS_DEBUG -CFLAGS += -g -ggdb -O0 +CFLAGS += -O0 -g CFLAGS += -Wno-long-long -Wall -W -Wnested-externs -Wformat=2 CFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations CFLAGS += -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare CFLAGS += -Wundef -Wbad-function-cast -Winline -Wcast-align CFLAGS += -Wdeclaration-after-statement CPPFLAGS += -DDEBUG +else +CFLAGS += -O2 endif if IS_GCC4 CPPFLAGS += -iquote. -I/usr/local/include @@ -16,15 +16,16 @@ To build tmux from a release tarball, do: $ ./configure && make $ sudo make install -To get and build the latest version control checkout: +To get and build the latest from version control: - $ git clone git://tmux.git.sourceforge.net/gitroot/tmux/tmux + $ git clone git://git.code.sf.net/p/tmux/tmux-code tmux $ cd tmux $ sh autogen.sh $ ./configure && make For more information see https://sourceforge.net/scm/?type=git&group_id=200378 -and http://git-scm.com. +and http://git-scm.com. Patches should be sent by email to the mailing list at +tmux-users@lists.sourceforge.net. For documentation on using tmux, see the tmux.1 manpage. It can be viewed from the source tree with: @@ -34,25 +35,13 @@ the source tree with: Some common questions are answered in the FAQ file and a more extensive (but slightly out of date) guide is available in the OpenBSD FAQ at http://www.openbsd.org/faq/faq7.html#tmux. A rough todo list is in the TODO -file. - -A Vim syntax file is available in the examples directory. To install it: - -- Drop the file in the syntax directory into runtimepath (such as - ~/.vim/syntax/tmux.vim). -- Make the filetype recognisable by adding the following to filetype.vim - (~/.vim/filetype.vim): - - augroup filetypedetect - au BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux - augroup END - -- Switch on syntax highlighting by adding "syntax enable" to .vimrc. +file and some example configurations and a Vim syntax file are in the examples +directory. For debugging, running tmux with -v or -vv will generate server and client log files in the current directory. -tmux mailing lists are available. The visit: +tmux mailing lists are available. Visit: https://sourceforge.net/mail/?group_id=200378 @@ -64,8 +53,7 @@ welcome. Please send by email to: This file and the CHANGES, FAQ and TODO files are licensed under the ISC license. Files under examples/ remain copyright their authors unless otherwise stated in the file but permission has been received to distribute them with -tmux. All other files have a license and copyright notice at their -start. +tmux. All other files have a license and copyright notice at their start. -- Nicholas Marriott <nicm@users.sf.net> @@ -138,7 +138,7 @@ Release tmux for next version don't have debugging enabled, otherwise make(1) aborts when preparing the distribution. -2. Update and commit NOTES and CHANGES. The former should be checked for +2. Update and commit README and CHANGES. The former should be checked for anything outdated and updated with a list of things that might break upgrades and the latter should mention all the major changes since the last version. @@ -30,40 +30,30 @@ TMUX UI ISSUES to avoid quoting - make command sequences more usable: don't require space after ;, handle errors better -- attach should have a flag to create session if it doesn't exist - choice and more mode would be better per client than per window? - hooks to which commands may be attached, for example: tmux add-hook "new-session" if-shell "[ -e $HOME/.tmux-session.conf ]" source-file $HOME/.tmux-session.conf - way to set socket path from config file -- what about utmp etc? can tmux update it like screen? setgid? - warts on current naming: - display-time but message-fg/bg/attr - list-* vs show-* - server-info - up-pane/down-pane/swap-pane -U/swap-pane -D vs next-*/previous-* - split-window -> split-pane?? -- a way for force-width/height to apply to only one pane (how?) -- command to list what is actually running in each window with command line, - pid (need some adaption of the osdep code) - some way to force a screen to use the entire terminal even if it is forced to be smaller by other clients. pan smaller terminal? (like screen F) -- idea of a "view" onto a window, need base x/y offsets for redraw -- handle resize better in copy mode -- way to copy stuff that is off screen due to resize - commands should be able to succeed or fail and have || or && for command lists -- some way to KEEP a command running continually and just use its LAST line of +- some way to keep a command running continually and just use its last line of output - UTF-8 to a non-UTF-8 terminal should not be able to balls up the terminal - www/ruby-addressable; make regress - support esc-esc to quit in modes - fix ctrl+F1-F4 output. to what? - better utf8 support: window names, prompt input, message display -- session history for client and last-session command -- option to change status line colour when current window is in a mode? - option to move copy mode indicator into status line -- list-buffer/show-buffer should display UTF-8 - selection behaviour closer to vi in vi mode - live update: server started with -U connects to server, requests sessions and windows, receives fds @@ -76,14 +66,11 @@ TMUX UI ISSUES - better session sharing: create-socket command to create socket somewhere (-r flag for readonly) - multiline status line (no?) -- flag for absolute pane size to resize-pane -- sanity check input to socket - support title stack, both internally and externally http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions -- command to show status line information briefly when it is off - some way to pad # stuff with spaces, #!2T maybe - a binding to "scroll down and exit at bottom" copy mode -- some way to pass keystrokes in copy mode through to underlying window +- some way to pass keystrokes in copy mode through to underlying window. why? - last window update time and # replacement for it for display-message - find-window across sessions - other ways to make session handling easier? - ' and " should be parsed the same (eg "\e" vs '\e') in config and command @@ -92,44 +79,29 @@ TMUX UI ISSUES - audit of escape sequence support vs xterm - support binding keys to mouse (mouse-select-pane -> mouse-keys or something, mouse click == select-pane -t %%, mouse scroll up == copy-mode) -- something for -t "last window in session" so a session can be used as a stack -- synchronous commands - client sends cmd and blocks, neww/splitw saves client - ptr then when program inside died, sends MSG_SOMETHING with wait status to - client - bind commands to key sequences? -- make it so ALL keys go through a table, first an implicit table in which C-b is the only default binding to a command that says "next key from $othertable" and so on. means -n can go away as well - monitor, bell etc should monitor /all/ panes in the window not just one - a history of commands that can be reversed (reverse member of each command, - and a buffer) info() when changing to same window + and a buffer) +- info() when changing to same window - way to add dest for break-pane; maybe some easier way to unbreak-pane - case insensitive searching - incremental searching in copy mode. - configurable borders and empty space filler for when panes < window? - mouse-select-pane will screw up with !MODE_MOUSE_STANDARD (it sets the flag on w/o checking the others before calling tty_update_mode) -- multiple keys could be done with tables, ie have prefixes go and instead - bind -n ^A prefix-table "default" - where prefix-table sets command lookup table and sets prefix flag, then next - key is looked up in that table - pass shell commands as argv rather than strings, allow them to be specified in commands without quotes -- numeric prefix in copy mode should be paste buffer for C-w - named buffers and allow gaps in the stack -- get rid of separate UTF-8 cell stuff: add 1 byte to cell and store BMP as - uint16_t+3 bits of flags. anything <=0xffff is Unicode, higher are used to - build tree of combined characters/non-BMP (LRU dropped when full) -- entry in FAQ about what to do when someone does mkdir /tmp/tmux-1000 - monitor-activity is broken in several ways with multiple clients - monitor-activity should be more powerful (eg set a region) - maybe a way to put pane names instead of window names in status line - support for borderless panes -- run-shell/if-shell should support status_replace stuff -- wait-pane command or another way to make it synchronous/wait for command to - finish +- wait-for command 20130222153957.GY6782@yelena.nicm.ath.cx - last-pane across sessions -- attach should take a pane and select it as well as attaching - panes should have names like windows - command-prompt doesn't work if made read-only. why? - option to quote format eg #{session_name:quoted} @@ -144,16 +116,14 @@ TMUX UI ISSUES - way to tag a layout as a number/name - optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx - support multibyte key strings -- allow commands to be executed when certaing patterns in a screen +- allow commands to be executed when certain patterns in a screen are clicked on with the mouse - flag to make next/previous commands skip a window - way to do tmux command/run-shell from mode keys - send command to all windows -- choose-pane command - - Augment choose-tree to do this? TA to investigate. -- choose-mode and copy-mode are very similar. Perhaps make choose-mode a - subset of copy-mode in that it inherits key-bindings and other traits but - not all. +- choose-pane command (augment choose-tree to do this?) +- choose-mode and copy-mode are very similar. Perhaps make choose-mode a subset + of copy-mode in that it inherits key-bindings and other traits but not all - add -c for new-session like new-window - flag to choose-* for sort order (eg sort windows/sessions/clients by last used time) - perhaps using formats (but what about numeric sort)? @@ -167,6 +137,10 @@ TMUX UI ISSUES should support hints, layout sets should just be a special case of custom layouts, and we should support panes that are not attached to a cell at all. this could be the time to introduce panelink to replace layout_cell +- run-shell/if-shell should support formats +- attach should take a pane and select it as well as attaching +- attach should have a flag to create session if it doesn't exist. or better + new a flag to attach it TERMINAL ISSUES ================ @@ -175,10 +149,7 @@ TERMINAL ISSUES - clear window title on exit (see using xterm title stack) - get it passing all the vttest tests that don't require resizing the terminal - support for bce -- use screen-256color when started on 256 colour terminal?? -- if-shell/run-shell should block further command execution in the same command -- possibly support rxvt-unicode extended mouse input (1015) -- wrap/no wrap esc seq DEC CSI ? 7 h/l +- use screen-256color when started on 256 colour terminal? * We need a tmux terminfo entry to document the extensions we are using in upstream terminfo. Must NOT change (only add or remove) anything from TERM=screen so we can fallback! diff --git a/cmd-queue.c b/cmd-queue.c index 8bcc9192..6ea6f468 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -1,4 +1,4 @@ -/* $OpenBSD$ */ +/* $Id$ */ /* * Copyright (c) 2013 Nicholas Marriott <nicm@users.sourceforge.net> diff --git a/cmd-server-info.c b/cmd-server-info.c index 1e9bf29d..8eba172a 100644 --- a/cmd-server-info.c +++ b/cmd-server-info.c @@ -65,7 +65,8 @@ cmd_server_info_exec(unused struct cmd *self, struct cmd_q *cmdq) tim = ctime(&start_time); *strchr(tim, '\n') = '\0'; - cmdq_print(cmdq, "pid %ld, started %s", (long) getpid(), tim); + cmdq_print(cmdq, + "tmux " VERSION ", pid %ld, started %s", (long) getpid(), tim); cmdq_print(cmdq, "socket path %s, debug level %d", socket_path, debug_level); if (uname(&un) >= 0) { diff --git a/cmd-wait-for.c b/cmd-wait-for.c index 3a8d8ea4..d40ba49e 100644 --- a/cmd-wait-for.c +++ b/cmd-wait-for.c @@ -1,4 +1,4 @@ -/* $OpenBSD$ */ +/* $Id$ */ /* * Copyright (c) 2013 Nicholas Marriott <nicm@users.sourceforge.net> diff --git a/compat/getopt.c b/compat/getopt.c index 3a532372..38c317cc 100644 --- a/compat/getopt.c +++ b/compat/getopt.c @@ -67,6 +67,8 @@ BSDgetopt(int nargc, char *const *nargv, const char *ostr) return (-1); } if (place[1] && *++place == '-') { /* found "--" */ + if (place[1]) + return (BADCH); ++BSDoptind; place = EMSG; return (-1); diff --git a/configure.ac b/configure.ac index 84aec0fb..9e060df7 100644 --- a/configure.ac +++ b/configure.ac @@ -53,8 +53,11 @@ AM_CONDITIONAL(IS_DEBUG, test "x$found_debug" = xyes) AC_ARG_ENABLE( static, AC_HELP_STRING(--enable-static, create a static build), - [LDFLAGS="$LDFLAGS -static"] + found_static=$enable_static ) +if test "x$found_static" = xyes; then + LDFLAGS="$LDFLAGS -static" +fi # Is this gcc? AM_CONDITIONAL(IS_GCC, test "x$GCC" = xyes) diff --git a/examples/tmux-zoom.sh b/examples/tmux-zoom.sh deleted file mode 100644 index 3a604564..00000000 --- a/examples/tmux-zoom.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2012 Juan Ignacio Pumarino, jipumarino@gmail.com -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE 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. - -# Instructions -# ------------ -# -# 1. Install this script and give it execute permission somewhere in your PATH. -# For example: -# -# $ mkdir -p ~/bin -# $ wget https://raw.github.com/jipumarino/tmux-zoom/master/tmux-zoom.sh -O ~/bin/tmux-zoom.sh -# $ chmod +x ~/bin/tmux-zoom.sh -# -# 2. Add a shortcut in your ~/.tmux.conf file: -# -# bind C-k run "tmux-zoom.sh" -# -# 3. When using this shortcut, the current tmux pane will open in a new window by itself. -# Running it again in the zoomed window will return it to its original pane. You can have -# as many zoomed windows as you want. - -current=$(tmux display-message -p '#W-#I-#P') -list=$(tmux list-window) - -[[ "$current" =~ ^(.*)-([0-9]+)-([0-9]+) ]] -current_window=${BASH_REMATCH[1]} -current_pane=${BASH_REMATCH[2]}-${BASH_REMATCH[3]} -new_zoom_window=ZOOM-$current_pane - -if [[ $current_window =~ ZOOM-([0-9]+)-([0-9+]) ]]; then - old_zoom_window=ZOOM-${BASH_REMATCH[1]}-${BASH_REMATCH[2]} - tmux select-window -t ${BASH_REMATCH[1]} \; select-pane -t ${BASH_REMATCH[2]} \; swap-pane -s $old_zoom_window.1 \; kill-window -t $old_zoom_window -elif [[ $list =~ $new_zoom_window ]]; then - tmux select-window -t $new_zoom_window -else - tmux new-window -d -n $new_zoom_window \; swap-pane -s $new_zoom_window.1 \; select-window -t $new_zoom_window -fi diff --git a/examples/tmux.vim b/examples/tmux.vim index f1a98be4..076115c1 100644 --- a/examples/tmux.vim +++ b/examples/tmux.vim @@ -3,6 +3,20 @@ " Maintainer: Tiago Cunha <tcunha@users.sourceforge.net> " Last Change: $Date: 2010-07-27 18:29:07 $ " License: This file is placed in the public domain. +" +" To install this file: +" +" - Drop the file in the syntax directory into runtimepath (such as +" ~/.vim/syntax/tmux.vim). +" - Make the filetype recognisable by adding the following to filetype.vim +" (~/.vim/filetype.vim): +" +" augroup filetypedetect +" au BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux +" augroup END +" +" - Switch on syntax highlighting by adding "syntax enable" to .vimrc. +" if version < 600 syntax clear diff --git a/osdep-darwin.c b/osdep-darwin.c index b112fa7c..23de9d52 100644 --- a/osdep-darwin.c +++ b/osdep-darwin.c @@ -17,7 +17,6 @@ */ #include <sys/types.h> -#include <sys/sysctl.h> #include <event.h> #include <libproc.h> @@ -34,26 +33,24 @@ struct event_base *osdep_event_init(void); char * osdep_get_name(int fd, unused char *tty) { - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, 0 }; - size_t size; - struct kinfo_proc kp; - - if ((mib[3] = tcgetpgrp(fd)) == -1) - return (NULL); + struct proc_bsdshortinfo bsdinfo; + pid_t pgrp; + int ret; - size = sizeof kp; - if (sysctl(mib, 4, &kp, &size, NULL, 0) == -1) - return (NULL); - if (*kp.kp_proc.p_comm == '\0') + if ((pgrp = tcgetpgrp(fd)) == -1) return (NULL); - return (strdup(kp.kp_proc.p_comm)); + ret = proc_pidinfo(pgrp, PROC_PIDT_SHORTBSDINFO, 0, + &bsdinfo, sizeof bsdinfo); + if (ret == sizeof bsdinfo && *bsdinfo.pbsi_comm != '\0') + return (strdup(bsdinfo.pbsi_comm)); + return (NULL); } char * osdep_get_cwd(int fd) { - static char wd[PATH_MAX]; + static char wd[PATH_MAX]; struct proc_vnodepathinfo pathinfo; pid_t pgrp; int ret; @@ -61,8 +58,8 @@ osdep_get_cwd(int fd) if ((pgrp = tcgetpgrp(fd)) == -1) return (NULL); - ret = proc_pidinfo( - pgrp, PROC_PIDVNODEPATHINFO, 0, &pathinfo, sizeof pathinfo); + ret = proc_pidinfo(pgrp, PROC_PIDVNODEPATHINFO, 0, + &pathinfo, sizeof pathinfo); if (ret == sizeof pathinfo) { strlcpy(wd, pathinfo.pvi_cdir.vip_path, sizeof wd); return (wd); diff --git a/server-client.c b/server-client.c index 377f9ae9..77e6de78 100644 --- a/server-client.c +++ b/server-client.c @@ -21,7 +21,6 @@ #include <event.h> #include <fcntl.h> -#include <paths.h> #include <stdlib.h> #include <string.h> #include <time.h> @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: December 4 2011 $ +.Dd $Mdocdate: March 25 2013 $ .Dt TMUX 1 .Os .Sh NAME @@ -23,7 +23,7 @@ .Sh SYNOPSIS .Nm tmux .Bk -words -.Op Fl 28lCquv +.Op Fl 28lCquvV .Op Fl c Ar shell-command .Op Fl f Ar file .Op Fl L Ar socket-name @@ -389,7 +389,8 @@ tty_term_find(char *name, int fd, const char *overrides, char **cause) tty_term_override(term, overrides); /* Delete curses data. */ -#if !defined(__FreeBSD_version) || __FreeBSD_version >= 700000 +#if !defined(NCURSES_VERSION_MAJOR) || NCURSES_VERSION_MAJOR > 5 || \ + (NCURSES_VERSION_MAJOR == 5 && NCURSES_VERSION_MINOR > 6) del_curterm(cur_term); #endif diff --git a/www/index.html.in b/www/index.html.in index 36bc44c0..5e0276e8 100644 --- a/www/index.html.in +++ b/www/index.html.in @@ -12,79 +12,53 @@ <p id="upper-left-title">tmux</p> <ul id="left-menu"> <li><a href="http://downloads.sourceforge.net/tmux/tmux-%%VERSION%%.tar.gz">Download</a></li> - <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/NOTES">Release Notes</a></li> + <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README">README</a></li> <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=tmux&sektion=1">Manual Page</a></li> <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/FAQ">FAQ</a></li> - <li><a href="http://www.openbsd.org/faq/faq7.html#tmux">tmux in the OpenBSD FAQ</a></li> - <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/examples/">Examples</a></li> - <li> </li> - <li class="menu-headings">Source Code</li> - <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/">SourceForge</a></li> - <li><a href="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/tmux/">OpenBSD</a></li> - <li> </li> - <li class="menu-headings">Support</li> - <li><a href="https://lists.sourceforge.net/lists/listinfo/tmux-users">tmux-users</a></li> - <li><a href="https://lists.sourceforge.net/lists/listinfo/tmux-cvs">tmux-cvs</a></li> - <li>IRC: #tmux on Freenode</li> - <li><a href="http://sf.net/projects/tmux">SourceForge Project Page</a></li> + <li><a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/">Source Code</a></li> + <li><a href="http://sf.net/projects/tmux">SourceForge Page</a></li> + <li><a href="https://lists.sourceforge.net/lists/listinfo/tmux-users">Mailing List</a></li> + <li><a href="irc://irc.freenode.net/tmux">IRC Channel</a></li> </ul> </div> <div id="main-content-wrapper"> -<p>tmux is a terminal multiplexer: it enables a number of terminals (or -windows), each running a separate program, to be created, accessed, and -controlled from a single screen. tmux may be detached from a screen and -continue running in the background, then later reattached.</p> +<p><b>tmux is a terminal multiplexer</b></p> -<p>The -<a href="http://downloads.sourceforge.net/tmux/tmux-%%VERSION%%.tar.gz"> -latest release is tmux %%VERSION%%</a> or -<a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/"> -get the development version from git.</a></p> - -<p>tmux uses a client-server model. The server holds multiple sessions and each -window is an independent entity which may be freely linked to multiple sessions, -moved between sessions and otherwise manipulated. Each session may be attached -to (display and accept keyboard input from) multiple clients.</p> +<p><b>What is a terminal multiplexer?</b> It lets you switch easily between +several programs in one terminal, detach them (they keep running in the +background) and reattach them to a different terminal. And do a lot more. See +<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=tmux&sektion=1"> +the manual</a>.</p> -<p>tmux is intended to be a modern, BSD-licensed alternative to programs such -as GNU screen. Major features include:</p> - -<ul> -<li>A powerful, consistent, well-documented and easily scriptable command -interface.</li> -<li>A window may be split horizontally and vertically into panes.</li> -<li>Panes can be freely moved and resized, or arranged into preset -layouts. </li> -<li>Support for UTF-8 and 256-colour terminals.</li> -<li>Copy and paste with multiple buffers.</li> -<li>Interactive menus to select windows, sessions or clients.</li> -<li>Change the current window by searching for text in the target.</li> -<li>Terminal locking, manually or after a timeout.</li> -<li>A clean, easily extended, BSD-licensed codebase, under active -development.</li> -</ul> +<p><b><a href="http://downloads.sourceforge.net/tmux/tmux-%%VERSION%%.tar.gz"> +Download tmux %%VERSION%%</a></b> or +<a href="https://sourceforge.net/p/tmux/tmux-code/ci/master/tree/"> +get the development version.</a> +tmux is hosted on +<a href="http://sf.net/projects/tmux">SourceForge</a> +and needs +<a href="http://www.monkey.org/~provos/libevent/">libevent</a> +and +<a href="http://invisible-island.net/ncurses/">ncurses</a> +.</p> -<p>tmux is part of the <a href="http://www.openbsd.org">OpenBSD</a> base -system. The portable version is hosted on <a href="http://sf.net/projects/tmux"> -SourceForge</a> and runs on Linux, FreeBSD, NetBSD, Solaris and AIX. -It depends on <a href="http://www.monkey.org/~provos/libevent/">libevent 1.4 or 2.0</a> and a -terminfo implementation (normally <a href="http://invisible-island.net/ncurses/">ncurses</a>).</p> +<p>For support contact the +<a href="mailto:tmux-users@lists.sf.net">tmux-users@lists.sf.net</a> +mailing list or IRC channel +<a href="irc://irc.freenode.net/tmux">#tmux on freenode</a>.</p> -<p>A few people have written programs which can be used with tmux: -<a href="https://github.com/dominikh/tmux-ruby">tmux-ruby</a>, -<a href="https://github.com/aziz/tmuxinator">tmuxinator</a>, -<a href="https://github.com/lmartinking/tmux-applets">tmux-applets</a> and -<a href="https://github.com/remiprev/teamocil">teamocil</a>. -There is a -<a href="http://pragprog.com/book/bhtmux/tmux">book on tmux</a> by Brian P Hogan.</p> +<p>There are some programs to use with tmux +<a href="https://github.com/search?q=tmux&type=Repositories&ref=simplesearch"> +on GitHub</a> and a +<a href="http://pragprog.com/book/bhtmux/tmux">book on tmux</a>.</p> - <div id="screenshots"> - <a href="tmux3.png"><img src="small-tmux3.png" alt="Screenshot"/></a> - <a href="tmux4.png"><img src="small-tmux4.png" alt="Screenshot"/></a> - <a href="tmux5.png"><img src="small-tmux5.png" alt="Screenshot"/></a> - </div> +<div id="screenshots"> + <a href="tmux3.png"><img src="small-tmux3.png" alt="Screenshot"/></a> + <a href="tmux4.png"><img src="small-tmux4.png" alt="Screenshot"/></a> + <a href="tmux5.png"><img src="small-tmux5.png" alt="Screenshot"/></a> +</div> </div> - </div> + </div> </body> </html> |