2010-02-22 3 views
13

여러 OS-X Terminal.app 창이 열려있는 경우 어떻게 하나의 터미널 창을 다른 공간으로 옮길 수 있습니까?하나의 Terminal.app 창을 프로그래밍 방식으로 다른 공간으로 이동할 수 있습니까?

저는 이것을 달성하기 위해 스크립팅이나 프로그래밍 언어를 사용해 주지만 AppleScript 나 표준 프레임 워크를 선호합니다.

(이 응용 프로그램 not all windows의 하나 개의 창을 이동하는 것입니다 참고.)

+0

안녕하세요, 당신이 그것을 달성 않았다 ???? 나는 또한 이것을하려고 노력하고있다. – flow

+0

슬픈 듯이, 부정 - 만일 내가 길을 발견하면 나는이 질문을 최신의 것으로 바꿀 것이다. –

답변

7

을 목표 - C/C에서 개인 전화를 사용하여, 비공식적으로 here

#import <Foundation/Foundation.h> 

typedef int CGSConnection; 
typedef int CGSWindow; 

extern OSStatus CGSMoveWorkspaceWindowList(const CGSConnection connection, 
             CGSWindow *wids, 
             int count, 
             int toWorkspace); 
extern CGSConnection _CGSDefaultConnection(void); 


int main(int argc, char **argv) { 
    CGSConnection con = _CGSDefaultConnection(); 

    // replace 2004 with window number 
    // see link for details on obtaining this number 
    // 2004 just happened to be a window I had open to test with 
    CGSWindow wids[] = {2004}; 

    // replace 4 with number of destination space 
    CGSMoveWorkspaceWindowList(con, wids, 1, 4); 

    return 0; 
} 

표준 경고가 문서화되지 않은 API에 대한 적용 나열 : 그들은 부서지기 쉽다.

+0

위대한 작품 - 감사합니다! –

+1

64 비트에 대한 참고, int의 이제 길다 –

+0

사람이 몇 가지 기본 지침/실제로 이것을 구현하는 방법에 대한 단계를 줄 수 있습니까? –

1

는 cobbal의 대답을 기반으로, 코드는 루비 이식 :

require 'dl'; 

wid = 2004 

dl = DL::dlopen('/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices') 

_CGSDefaultConnection = dl.sym("_CGSDefaultConnection", 'I'); 

CGSMoveWorkspaceWindowList = dl.sym("CGSMoveWorkspaceWindowList", 'IIiII'); 

con = _CGSDefaultConnection.call(); 

CGSMoveWorkspaceWindowList.call(con[0], wid, 1, 4); 
+0

64 비트에서 "I"-> "L"과 "IIiII"를 "LLlLL"로 변경하십시오. –

+0

이 루비 스크립트를 사용해 보았습니다. 그러나 dl.sym은 하나의 인수 만 사용한다는 오류 메시지가 나타납니다. 저는 Mac OS X 10.6.6 (64 비트)을 사용하고 있습니다. 루비 스크립트를 어떻게 실행해야합니까? 코드를 포함하고 ruby ​​* myfile *을 실행하는 파일을 작성하면 안됩니까? 어떤 도움이라도 대단히 감사합니다. –

+0

/usr/bin/ruby를 사용하고 있는지 확인하십시오. 새로운 것이 아닌 $/usr/bin/ruby ​​-v 루비 1.8.7 (2009-06-12 패치 레벨 174) [universal-darwin10.0] –

관련 문제