Alter how tmux handles the working directory to internally use file descriptors
rather than strings.

- Each session still has a current working directory.

- New sessions still get their working directory from the client that created
  them or its attached session if any.

- New windows are created by default in the session working directory.

- The -c flag to new, neww, splitw allows the working directory to be
  overridden.

- The -c flag to attach let's the session working directory be changed.

- The default-path option has been removed.

To get the equivalent to default-path '.', do:

        bind c neww -c $PWD

To get the equivalent of default-path '', do:

        bind c neww -c '#{pane_current_path}'

The equivalent of default-path '~' is left as an exercise for the reader.

This also changes the client identify protocol to be a set of messages rather
than one as well as some other changes that should make it easier to make
backwards-compatible protocol changes in future.
17 files changed
tree: 9fac1bc826683d2187e69c3e748da92a7db6a225
  1. .gitignore
  2. .mailmap
  3. CHANGES
  4. COPYING
  5. FAQ
  6. Makefile.am
  7. README
  8. SYNCING
  9. TODO
  10. arguments.c
  11. array.h
  12. attributes.c
  13. autogen.sh
  14. cfg.c
  15. client.c
  16. clock.c
  17. cmd-attach-session.c
  18. cmd-bind-key.c
  19. cmd-break-pane.c
  20. cmd-capture-pane.c
  21. cmd-choose-buffer.c
  22. cmd-choose-client.c
  23. cmd-choose-list.c
  24. cmd-choose-tree.c
  25. cmd-clear-history.c
  26. cmd-clock-mode.c
  27. cmd-command-prompt.c
  28. cmd-confirm-before.c
  29. cmd-copy-mode.c
  30. cmd-delete-buffer.c
  31. cmd-detach-client.c
  32. cmd-display-message.c
  33. cmd-display-panes.c
  34. cmd-find-window.c
  35. cmd-has-session.c
  36. cmd-if-shell.c
  37. cmd-join-pane.c
  38. cmd-kill-pane.c
  39. cmd-kill-server.c
  40. cmd-kill-session.c
  41. cmd-kill-window.c
  42. cmd-link-window.c
  43. cmd-list-buffers.c
  44. cmd-list-clients.c
  45. cmd-list-commands.c
  46. cmd-list-keys.c
  47. cmd-list-panes.c
  48. cmd-list-sessions.c
  49. cmd-list-windows.c
  50. cmd-list.c
  51. cmd-load-buffer.c
  52. cmd-lock-server.c
  53. cmd-move-window.c
  54. cmd-new-session.c
  55. cmd-new-window.c
  56. cmd-paste-buffer.c
  57. cmd-pipe-pane.c
  58. cmd-queue.c
  59. cmd-refresh-client.c
  60. cmd-rename-session.c
  61. cmd-rename-window.c
  62. cmd-resize-pane.c
  63. cmd-respawn-pane.c
  64. cmd-respawn-window.c
  65. cmd-rotate-window.c
  66. cmd-run-shell.c
  67. cmd-save-buffer.c
  68. cmd-select-layout.c
  69. cmd-select-pane.c
  70. cmd-select-window.c
  71. cmd-send-keys.c
  72. cmd-server-info.c
  73. cmd-set-buffer.c
  74. cmd-set-environment.c
  75. cmd-set-option.c
  76. cmd-show-environment.c
  77. cmd-show-messages.c
  78. cmd-show-options.c
  79. cmd-source-file.c
  80. cmd-split-window.c
  81. cmd-start-server.c
  82. cmd-string.c
  83. cmd-suspend-client.c
  84. cmd-swap-pane.c
  85. cmd-swap-window.c
  86. cmd-switch-client.c
  87. cmd-unbind-key.c
  88. cmd-unlink-window.c
  89. cmd-wait-for.c
  90. cmd.c
  91. colour.c
  92. compat.h
  93. compat/
  94. configure.ac
  95. control-notify.c
  96. control.c
  97. environ.c
  98. examples/
  99. format.c
  100. grid-cell.c
  101. grid-view.c
  102. grid.c
  103. input-keys.c
  104. input.c
  105. job.c
  106. key-bindings.c
  107. key-string.c
  108. layout-custom.c
  109. layout-set.c
  110. layout.c
  111. log.c
  112. mdoc2man.awk
  113. mode-key.c
  114. names.c
  115. notify.c
  116. options-table.c
  117. options.c
  118. osdep-aix.c
  119. osdep-darwin.c
  120. osdep-dragonfly.c
  121. osdep-freebsd.c
  122. osdep-hpux.c
  123. osdep-linux.c
  124. osdep-netbsd.c
  125. osdep-openbsd.c
  126. osdep-sunos.c
  127. osdep-unknown.c
  128. paste.c
  129. resize.c
  130. screen-redraw.c
  131. screen-write.c
  132. screen.c
  133. server-client.c
  134. server-fn.c
  135. server-window.c
  136. server.c
  137. session.c
  138. signal.c
  139. status.c
  140. tmux.1
  141. tmux.c
  142. tmux.h
  143. tools/
  144. tty-acs.c
  145. tty-keys.c
  146. tty-term.c
  147. tty.c
  148. utf8.c
  149. window-choose.c
  150. window-clock.c
  151. window-copy.c
  152. window.c
  153. www/
  154. xmalloc.c
  155. xterm-keys.c