forked from gnachman/iTerm2
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TmuxController.h
129 lines (117 loc) · 4.71 KB
/
TmuxController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
// TmuxController.h
// iTerm
//
// Created by George Nachman on 11/27/11.
//
#import <Cocoa/Cocoa.h>
#import "TmuxGateway.h"
@class PTYSession;
@class PTYTab;
@class PseudoTerminal;
@class EquivalenceClassSet;
// Posted when sessions change (names, addition, deletion)
extern NSString *kTmuxControllerSessionsDidChange;
// Posted after detaching
extern NSString *kTmuxControllerDetachedNotification;
// Posted when a window changes.
extern NSString *kTmuxControllerWindowsChangeNotification;
// Posted when a window changes name
extern NSString *kTmuxControllerWindowWasRenamed;
// Posted when a window opens
extern NSString *kTmuxControllerWindowDidOpen;
// Posted when a window closes
extern NSString *kTmuxControllerWindowDidClose;
// Posted when the attached session changes
extern NSString *kTmuxControllerAttachedSessionDidChange;
@interface TmuxController : NSObject {
TmuxGateway *gateway_;
NSMutableDictionary *windowPanes_; // paneId -> PTYSession *
NSMutableDictionary *windows_; // window -> [PTYTab *, refcount]
NSArray *sessions_;
int numOutstandingWindowResizes_;
NSMutableDictionary *windowPositions_;
NSSize lastSize_; // last size for windowDidChange:
NSString *lastOrigins_;
BOOL detached_;
NSString *sessionName_;
int sessionId_;
NSMutableSet *pendingWindowOpens_;
NSString *lastSaveAffinityCommand_;
// tmux windows that want to open as tabs in the same physical window
// belong to the same equivalence class.
EquivalenceClassSet *affinities_;
BOOL windowOriginsDirty_;
BOOL haveOutstandingSaveWindowOrigins_;
NSMutableDictionary *origins_; // window id -> NSValue(Point) window origin
NSMutableSet *hiddenWindows_;
}
@property (nonatomic, readonly) TmuxGateway *gateway;
@property (nonatomic, retain) NSMutableDictionary *windowPositions;
@property (nonatomic, copy) NSString *sessionName;
@property (nonatomic, retain) NSArray *sessions;
- (id)initWithGateway:(TmuxGateway *)gateway;
- (void)openWindowsInitial;
- (void)openWindowWithId:(int)windowId
intentional:(BOOL)intentional;
- (void)openWindowWithId:(int)windowId
affinities:(NSArray *)affinities
intentional:(BOOL)intentional;
- (void)hideWindow:(int)windowId;
- (void)setLayoutInTab:(PTYTab *)tab
toLayout:(NSString *)layout;
- (void)sessionChangedTo:(NSString *)newSessionName sessionId:(int)sessionid;
- (void)sessionsChanged;
- (void)sessionRenamedTo:(NSString *)newName;
- (void)windowsChanged;
- (void)windowWasRenamedWithId:(int)id to:(NSString *)newName;
- (PTYSession *)sessionForWindowPane:(int)windowPane;
- (PTYTab *)window:(int)window;
- (void)registerSession:(PTYSession *)aSession
withPane:(int)windowPane
inWindow:(int)window;
- (void)deregisterWindow:(int)window windowPane:(int)windowPane;
- (void)changeWindow:(int)window tabTo:(PTYTab *)tab;
- (NSValue *)positionForWindowWithPanes:(NSArray *)panes;
// This should be called after the host sends an %exit command.
- (void)detach;
- (BOOL)windowDidResize:(PseudoTerminal *)term;
- (void)fitLayoutToWindows;
- (void)setClientSize:(NSSize)size;
- (BOOL)hasOutstandingWindowResize;
- (void)windowPane:(int)wp
resizedBy:(int)amount
horizontally:(BOOL)wasHorizontal;
- (void)splitWindowPane:(int)wp vertically:(BOOL)splitVertically;
- (void)newWindowInSession:(NSString *)targetSession afterWindowWithName:(NSString *)predecessorWindow;
- (PseudoTerminal *)windowWithAffinityForWindowId:(int)wid;
- (void)newWindowWithAffinity:(int)windowId;
- (void)movePane:(int)srcPane
intoPane:(int)destPane
isVertical:(BOOL)splitVertical
before:(BOOL)addBefore;
- (void)breakOutWindowPane:(int)windowPane toPoint:(NSPoint)screenPoint;
- (void)breakOutWindowPane:(int)windowPane toTabAside:(NSString *)sibling;
- (void)killWindowPane:(int)windowPane;
- (void)killWindow:(int)window;
- (void)unlinkWindowWithId:(int)windowId inSession:(NSString *)sessionName;
- (BOOL)isAttached;
- (void)requestDetach;
- (void)renameWindowWithId:(int)windowId inSession:(NSString *)sessionName toName:(NSString *)newName;
- (void)linkWindowId:(int)windowId
inSession:(NSString *)sessionName
toSession:(NSString *)targetSession;
- (void)renameSession:(NSString *)oldName to:(NSString *)newName;
- (void)killSession:(NSString *)sessionName;
- (void)attachToSession:(NSString *)sessionName;
- (void)addSessionWithName:(NSString *)sessionName;
- (void)listWindowsInSession:(NSString *)sessionName
target:(id)target
selector:(SEL)selector
object:(id)object;
- (void)saveAffinities;
- (void)saveWindowOrigins;
- (void)saveHiddenWindows;
- (void)addAffinityBetweenPane:(int)windowPane
andTerminal:(PseudoTerminal *)term;
@end