Jak mogę programowo przenieść jeden Terminal.okno aplikacji do innego miejsca?

Jeśli mam kilka terminali OS-X.otwarte okna aplikacji, Jak mogę przenieść jedno okno terminala do innego miejsca?

Chętnie używam do tego dowolnego języka skryptowego lub programowania, ale wolę AppleScript lub wywołania do standardowych frameworków.

(uwaga, aby przenieść tylko jedno okno aplikacji , a nie wszystkie okna .)

Author: Community, 2010-02-22

2 answers

Korzystanie z prywatnych połączeń w Objective-C/ C, nieoficjalnie wymienione Tutaj

#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;
}

Standardowe ostrzeżenia mają zastosowanie do nieudokumentowanych interfejsów API: podlegają łamaniu.

 8
Author: cobbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-03 05:18:33

Na podstawie odpowiedzi cobbala, kod przeniesiony do ruby:

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);
 1
Author: Gavin Brock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-12 11:24:04