2008年 07月 03日

iTerm つかう!!!

なんか、すでに理由を忘れたんだけど Terminal.app に辟易したので iTerm つかう。今までなんで iTerm を使っていなかったかっていうと

  • タブうざイ☆ (screen のほうがスクリプタブルなのでいい)
  • Cmd+Num は window 切り替えにしたい
    • window サイズをかえていくつか重ねてつかいたいので

ambi-width がどうとかのパッチはさておき、Cmd+Num をタブきりかえじゃなくて window きりかえにするパッチをかいた

diff --git a/PTYWindow.m b/PTYWindow.m
index ce2676f..8207d01 100644
--- a/PTYWindow.m
+++ b/PTYWindow.m
@@ -109,14 +109,33 @@
 - (void)sendEvent:(NSEvent *)event
 {
 	// NSLog(@"%s: 0x%x", __PRETTY_FUNCTION__, self);
-	
+
 	if([event type] == NSMouseEntered)
-	{		
+	{
         //NSLog(@"window mouse entered");
 		if([[PreferencePanel sharedInstance] focusFollowsMouse])
 			[self makeKeyWindow];
 	}
-	
+	if([event type] == NSKeyDown)
+	{
+		if ([event modifierFlags] & NSCommandKeyMask)
+		{
+			NSString* c = [event charactersIgnoringModifiers];
+			NSArray* windows = [[iTermController sharedInstance] terminals];
+
+			NSLog(@"pressed: Command+%s", c);
+			for (int i = 1, len = [windows count]; i <= len; i++)
+			{
+				if ([c isEqualToString: [NSString stringWithFormat: @"%d", i]])
+				{
+					// [[iTermController sharedInstance] terminalWindows]
+					[[[windows objectAtIndex: i - 1] window] makeKeyAndOrderFront: self];
+					break;
+				}
+			}
+		}
+	}
+
 	if (super) [super sendEvent:event];
 }
 
diff --git a/iTermApplicationDelegate.m b/iTermApplicationDelegate.m
index 648f46a..5bb6f4c 100644
--- a/iTermApplicationDelegate.m
+++ b/iTermApplicationDelegate.m
@@ -558,15 +558,16 @@ static BOOL usingAutoLaunchScript = NO;
 	while ((aTabViewItem = [enumerator nextObject])) {
 		aSession = [aTabViewItem identifier];
         NSMenuItem *aMenuItem;
-		
-        if(i < 10)
-        {
-            aMenuItem  = [[NSMenuItem alloc] initWithTitle: [aSession name] action: @selector(selectSessionAtIndexAction:) keyEquivalent: [NSString stringWithFormat: @"%d", i]];
-            [aMenuItem setTag: i-1];
-			
-            [aMenu addItem: aMenuItem];
-            [aMenuItem release];
-        }
+
+		if(i < 10)
+		{
+		//	aMenuItem  = [[NSMenuItem alloc] initWithTitle: [aSession name] action: @selector(selectSessionAtIndexAction:) keyEquivalent: [NSString stringWithFormat: @"%d", i]];
+			aMenuItem  = [[NSMenuItem alloc] initWithTitle: [aSession name] action: @selector(selectSessionAtIndexAction:) keyEquivalent: @""];
+			[aMenuItem setTag: i-1];
+
+			[aMenu addItem: aMenuItem];
+			[aMenuItem release];
+		}
 		i++;
 	}
 

設定は http://f.hatena.ne.jp/cho45/iTerm/ においてみた。一枚ずつのページをすすめながら設定するとべんりっぽい。ふつうに ~/Library/Preferences/net.sourceforge.iTerm.plist (ソースからコンパイルすると iTerm.plist じゃなくなるっぽい) でもいい気がするけど


あと、そもそも cvs head は Xcode 2.5 + Mac OS X 10.4.11 ではビルドできなくて、 iTermSecurityMgr.{m,h} と Shells.{m,h} を iTerm.framework に追加しないとだめだった。

なんか iTerm の window 順がいつのまにか変わることがあって Cmd+num がズレる……

フルスクリーンにするとズレるみたいだ。フルスクリーンにするなら新しいウィンドウつくろう