2012-06-28 29 views
6

Khi quá trình GUI được khởi chạy từ đầu cuối OS X, cửa sổ sẽ hiển thị dưới nền và bạn phải sử dụng lệnh- để tập trung vào nó.Mac OS X: Đưa các ứng dụng GUI (không bó) lên nền trước khi được khởi chạy từ dòng lệnh

Có cách nào để thiết bị đầu cuối tự động cung cấp các giao diện đồ họa như vậy sau khi chúng được khởi chạy không? Ví dụ (giả sử gitk được cài đặt):

% gitk

nên khởi động giao diện và sau đó chuyển sang nó.

Lưu ý: Vì nhiều lý do, việc sử dụng openthis answer gợi ý không phải là giải pháp chung.

Cập nhật: Để giải thích rõ hơn lý do tại sao phương pháp open không thỏa đáng, đây là phiên bash mẫu (có chú giải dí dỏm).

% cd /my_repo 
% gitk 

Đang đợi GUI xuất hiện ... bất kỳ ngày nào bây giờ ... đợi đã - nó đã mở. Tôi chỉ không nhận ra vì nó mở một cửa sổ BEHIND thiết bị đầu cuối của tôi. Tôi tự hỏi tôi sẽ ngồi chờ đợi bao lâu ...

% open gitk 
The file /my_repo/gitk does not exist. 

Ah, tất nhiên rồi.

% which gitk 
/usr/bin/gitk 
% open /usr/bin/gitk 

gì ... nó mở ra một cửa sổ terminal mới để chạy gitk, và nó đã làm như vậy trong thư mục chính của tôi, chứ không phải/my_repo, vì vậy gitk phàn nàn rằng thư mục hiện hành không thực sự là một kho lưu trữ .. .

+0

Nó có thể giúp đỡ nếu bạn giải thích thêm về lý do tại sao bạn cần để gọi một ứng dụng được cửa sổ đồng bộ từ dòng lệnh (thay vì mở nó một cách không đồng bộ với 'mở'). –

+0

Không phải tất cả các ứng dụng đều có thể được mở thông qua 'mở' (ví dụ gitk). Ngoài ra, những người có thể được mở theo cách đó sẽ được mở thông qua một thiết bị đầu cuối riêng biệt, điều này có thể bất tiện. –

+0

'Không phải tất cả các ứng dụng đều có thể được mở bằng cách mở' Tại sao không? Tôi không thể nghĩ ra một lý do tại sao nó sẽ là sự thật - các ứng dụng bình thường/cửa sổ theo định nghĩa nên là một cái gì đó bạn có thể mở từ Finder hoặc Dock. 'sẽ được mở thông qua một thiết bị đầu cuối riêng biệt' Tôi không hiểu ý bạn là gì bởi 'thiết bị đầu cuối riêng biệt'. Bạn có nghĩa là, ngay cả khi bạn có một thiết bị đầu cuối mở, bạn không thể sử dụng 'mở ...' từ thiết bị đầu cuối đó? Nếu vậy, tại sao không? –

Trả lời

3

Bạn có cần gọi đồng bộ không? Nếu không, bạn có thể bắt đầu nó không đồng bộ với & và sau đó kích hoạt nó với osascript -e 'tell application "gitk" to activate'.

1

Bạn có thể quấn lên câu trả lời @ Chris của trang trong một chức năng bash và thả nó trong .bashrc của bạn

function gitk() { 
    command gitk "[email protected]"& 
    command osascript -e "delay .5" -e "tell application \"wish\" to activate" 
} 

Nên có một cách để thoát khỏi sự chậm trễ của vòng lặp và tìm kiếm 'điều ước' với một thời gian chờ.

LƯU Ý: 'Wish' là tiêu đề cửa sổ hiển thị trên máy Mac của tôi cho gitk.

2

Nếu bạn đang đối phó với gitk đặc biệt bạn có thể chỉnh sửa các tập tin gitk để đạt được điều này, tôi đã đăng một câu trả lời về việc trao đổi táo stack: https://apple.stackexchange.com/a/74917/35956

Bạn có thể tìm thấy các tập tin gitk bằng cách sử dụng lệnh sau từ nhà ga

which gitk 

Trong file gitk của tôi, tôi tìm thấy một dòng trông giống như sau gần đầu (dòng 3)

exec wish "$0" -- "[email protected]" 

tôi đã thay đổi nó đến này

exec wish "$0" -- "[email protected]" & exec osascript -e "tell application \"Wish\" to activate" 

Khi tôi thực hiện gitk từ dòng lệnh cửa sổ gitk nói đến tiền cảnh, một tác dụng phụ của việc này là nó thực hiện không đồng bộ

Các vấn đề liên quan