summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/cmd-new-session.c
AgeCommit message (Collapse)Author
2019-06-03Add new-session -X and attach-session -x to send SIGHUP to parent whenNicholas Marriott
detaching (like detach-client -P). From Colin Watson in GitHub issue 1773.
2019-06-01If only one of -x or -y is given, use the calculated size for theNicholas Marriott
other. Pointed out by Ben Boeckel.
2019-05-17Initialize default size variables, from Thomas Adam.Nicholas Marriott
2019-04-26Merge hooks into options and make each one an array option. This allowsNicholas Marriott
multiple commands to be easily bound to one hook. set-hook and show-hooks remain but they are now variants of set-option and show-options. show-options now has a -H flag to show hooks (by default they are not shown).
2019-04-17Break new window and pane creation common code from various commands andNicholas Marriott
window.c into a separate file spawn.c.
2019-03-12Fix resizing of control clients, should be ignored until SIZECHANGED flag set.Nicholas Marriott
2018-10-18Support for windows larger than visible on the attached client. This hasNicholas Marriott
been a limitation for a long time. There are two new options, window-size and default-size, and a new command, resize-window. The force-width and force-height options and the session_width and session_height formats have been removed. The new window-size option tells tmux how to work out the size of windows: largest means it picks the size of the largest session, smallest the smallest session (similar to the old behaviour) and manual means that it does not automatically resize windows. The default is currently largest but this may change. aggressive-resize modifies the choice of session for largest and smallest as it did before. If a window is in a session attached to a client that is too small, only part of the window is shown. tmux attempts to keep the cursor visible, so the part of the window displayed is changed as the cursor moves (with a small delay, to try and avoid excess redrawing when applications redraw status lines or similar that are not currently visible). The offset of the visible portion of the window is shown in status-right. Drawing windows which are larger than the client is not as efficient as those which fit, particularly when the cursor moves, so it is recommended to avoid using this on slow machines or networks (set window-size to smallest or manual). The resize-window command can be used to resize a window manually. If it is used, the window-size option is automatically set to manual for the window (undo this with "setw -u window-size"). resize-window works in a similar way to resize-pane (-U -D -L -R -x -y flags) but also has -a and -A flags. -a sets the window to the size of the smallest client (what it would be if window-size was smallest) and -A the largest. For the same behaviour as force-width or force-height, use resize-window -x or -y, and "setw -u window-size" to revert to automatic sizing.. If the global window-size option is set to manual, the default-size option is used for new windows. If -x or -y is used with new-session, that sets the default-size option for the new session. The maximum size of a window is 10000x10000. But expect applications to complain and much higher memory use if making a window excessively big. The minimum size is the size required for the current layout including borders. The refresh-client command can be used to pan around a window, -U -D -L -R moves up, down, left or right and -c returns to automatic cursor tracking. The position is reset when the current window is changed.
2018-06-08Tweak previous - check for a NULL client and simplify manual text.Nicholas Marriott
2018-06-08Add -x- and -y- to use client size, from Stefan Assmann in GitHub issue 1372.Nicholas Marriott
2018-05-24Make server_client_get_cwd used (almost) everywhere we need to work outNicholas Marriott
the cwd, and do not fall back to "." as it is pretty useless. GitHub issue 1331.
2018-03-01Expand formats in window and session names.Nicholas Marriott
2017-08-30Pass flags into cmd_find_from_* to fix prefer-unattached, reported byNicholas Marriott
Thomas Sattler.
2017-07-21Add -c for respawn-pane and respawn-window, from J Raynor.Nicholas Marriott
2017-05-28Change so that sessions created detached (-d or no client) are alwaysNicholas Marriott
80x24 and the status line is not applied until they attach. Also make -x and -y work for control clients whether the session is detached or not.
2017-04-22new -A should use the session name.Nicholas Marriott
2017-04-22Get rid of the extra layer of flags and cmd_prepare() and just store theNicholas Marriott
CMD_FIND_* flags in the cmd_entry and call it for the command. Commands with special requirements call it themselves and update the target for hooks to use.
2017-04-22Mouse bindings and hooks set up an initial current state when running aNicholas Marriott
command. This is used for the session, window and pane for all commands in the command sequence if there is no -t or -s. However, using it for all commands in the command sequence means that if the active pane or current session is changed, subsequent commands still use the previous state. So make commands which explicitly change the current state (such as neww and selectp) update it themselves for later commands. Commands which may invalidate the state (like killp) are already OK because an invalid state will be ignored. Also fill in the current state for all key bindings rather than just the mouse, so that any omissions are easier to spot.
2017-04-21Store state shared between multiple commands in the queue in a sharedNicholas Marriott
structure.
2017-03-08Add a helper function for the most common format_create/defaults/expandNicholas Marriott
pattern.
2017-02-09Instead of numbering session groups, give them a name which may be givenNicholas Marriott
to -t instead of a target session. Also allow them to contain only one session.
2017-02-06Cancel key table when switching session, unless the key is going toNicholas Marriott
repeat. Reported by Amos Bird.
2017-02-03Add a window or pane id "tag" to each format tree and use it to separateNicholas Marriott
jobs, this means that if the same job is used for different windows or panes (for example in pane-border-format), it will be run separately for each pane.
2017-01-28Do not clear the key table when changing session on a client, so thatNicholas Marriott
switch-client and friends work with bind -n.
2017-01-24Make update-environment an array as well.Nicholas Marriott
2017-01-13Make options_get_string return const string.Nicholas Marriott
2016-11-16Do not stop dragging when the wheel is pressed, from Artem Fokin.Nicholas Marriott
2016-10-19Move session-create hook out of session_create so it works with grouped ↵Nicholas Marriott
sessions.
2016-10-16Use the notify name string instead of going via an enum and changeNicholas Marriott
existing hooks to use notifys instead.
2016-10-16Mass rename struct cmd_q to struct cmdq_item and related.Nicholas Marriott
2016-10-16Rewrite command queue handling. Each client still has a command queue,Nicholas Marriott
but there is also now a global command queue. Instead of command queues being dispatched on demand from wherever the command happens to be added, they are now all dispatched from the top level server loop. Command queues may now also include callbacks as well as commands, and items may be inserted after the current command as well as at the end. This all makes command queues significantly more predictable and easier to use, and avoids the complex multiple nested command queues used by source-file, if-shell and friends. A mass rename of struct cmdq to a better name (cmdq_item probably) is coming.
2016-10-13Trying to do hooks generically is way too complicated and unreliable andNicholas Marriott
confusing, particularly trying to automatically figure out what target hooks should be using. So simplify it: - drop before hooks entirely, they don't seem to be very useful; - commands with special requirements now fire their own after hook (for example, if they change session or window, or if they have -t and -s and need to choose which one the hook uses as current target); - commands with no special requirements can have the CMD_AFTERHOOK flag added and they will use the -t state. At the moment new-session, new-window, split-window fire their own hook, and display-message uses the flag. The remaining commands still need to be looked at.
2016-10-13Some improvements and bug fixes for hooks:Nicholas Marriott
- Prepare the state again before the "after" hooks are run, because the command may have killed or moved windows. - Use the hooks list from the newly prepared target, not the old hooks list (only matters for new-session really). - Correctly detect an invalid current state and ignore it in cmd_find_target ("killw; swapw"). - Change neww, new, killp, killw, splitw, swapp, swapw to update the current state (used if no explicit target is given) to something more useful after they have finished. For example, neww changes it to the newly created window. Hooks are still relatively new and primitive so there are likely to be more changes to come. Parts based on bug reports from Uwe Werler and Iblis Lin.
2016-10-10Add static in cmd-* and fix a few other nits.Nicholas Marriott
2016-03-05Do not use c->cwd or s->cwd if it is NULL, found by Ben Boeckel.Nicholas Marriott
2016-02-04Set up -t flag properly when passing new-session -A off toNicholas Marriott
attach-session, GitHub issue 295.
2016-01-31Fix new-session with -t after command flags changes, reported by Michael ↵Nicholas Marriott
Graczyk.
2016-01-19I no longer use my SourceForge address so replace it.Nicholas Marriott
2015-12-14Instead of combined flags for -c, -s, -t, split into different setsNicholas Marriott
using an enum and simplify the parsing code.
2015-12-13Use member names in cmd_entry definitions so I stop getting confusedNicholas Marriott
about the order.
2015-12-13Instead of every command resolving the target (-t or -s) itself, prepareNicholas Marriott
the state (client, session, winlink, pane) for it it before entering the command. Each command provides some flags that tell the prepare step what it is expecting. This is a requirement for having hooks on commands (for example, if you hook "select-window -t1:2", the hook command should to operate on window 1:2 not whatever it thinks is the current window), and should allow some other target improvements. The old cmd_find_* functions remain for the moment but that layer will be dropped later. Joint work with Thomas Adam.
2015-12-12Add key-table option to set the default key table for a session, allowsNicholas Marriott
different key bindings for different sessions and a few other things.
2015-12-11Add cmdq as an argument to format_create and add a format for theNicholas Marriott
command name (will also be used for more later).
2015-12-08Remove format_create_flags and just pass flags to format_create.Nicholas Marriott
2015-10-31Fall back silently to ~ or / rather than checking -c with access(), thisNicholas Marriott
was the old behaviour.
2015-10-31Because pledge(2) does not allow us to pass directory file descriptorsNicholas Marriott
around, we can't use file descriptors for the working directory because we will be unable to pass it to a privileged process to tell it where to read or write files or spawn children. So move tmux back to using strings for the current working directory. We try to check it exists with access() when it is set but ultimately fall back to ~ if it fails at time of use (or / if that fails too).
2015-10-28Like options, move the environ struct into environ.c.Nicholas Marriott
2015-10-27Move struct options into options.c.Nicholas Marriott
2015-10-27Break the common process set up, event loop and imsg dispatch codeNicholas Marriott
between server and client out into a separate internal API. This will make it easier to add another process.
2015-10-23Remove some unnecessary checks before free().Nicholas Marriott
2015-09-10Add session_last_attached time and format, from Sina Siadat.Nicholas Marriott