মেনুবারে অ্যাপলস্ক্রিপ্ট আউটপুট প্রদর্শিত হওয়ার কোনও উপায় আছে কি?


8

আরও পড়ার আগে: আমি বাটলার এবং অনুরূপ প্রোগ্রামগুলি সম্পর্কে জানি । আমি তৃতীয় পক্ষের অ্যাপ্লিকেশন ছাড়াই এটি করতে একটি বিল্ট-ইন উপায় খুঁজছি।

যাইহোক, আমি একটি অ্যাপলস্ক্রিপ্ট লিখেছিলাম যা শেল কমান্ড চালায়। আমি আউটপুটটি মেনুবারে শীর্ষে প্রদর্শন করতে চাই ... বাটলার ছাড়া আমি কীভাবে এটি করতে পারি?


যেহেতু অ্যাপলস্ক্রিপ্টঅবিজিসি ম্যাকোস (২০১৪) এর অংশ, এটি ২০১২ সালে সম্ভবত সম্ভব ছিল না এমন অর্জনের জন্য তার "ফাউন্ডেশন" কাঠামোটি (এনএসএমেনু এর পদ্ধতিগুলি) ব্যবহার করা সম্ভব। । । । । কীভাবে এটি করা যায় তার নীচে আমার উত্তরটি দেখুন!
ক্লিমসাম ল্যাং

উত্তর:


2

একটি সাধারণতা হিসাবে, তৃতীয় পক্ষের প্রোগ্রামগুলি যেমন গ্রোল ছাড়া এটি করার উপায় নেই।

তবে আপনি এখানে স্ক্রিপ্ট বা অন্য কোনও প্রোগ্রাম লিখতে পারেন যা আমি এখানে পেয়েছি যা আপনার জন্য মেনুলেট পরিষেবা সরবরাহ করে। আমি নিশ্চিত যে গ্রোল ইন্টিগ্রেশন অর্জন করা আরও সহজ হবে।


1

ওএস এক্সে এটি করার মতো কোনও অন্তর্নির্মিত উপায় নেই However তবে গ্রল ব্যবহার করে আপনার বিজ্ঞপ্তি থাকতে পারে। এটির জন্য এখানে একটি নমুনা স্ক্রিপ্ট রয়েছে:

--Make sure Growl is running
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

if isRunning then
    tell application id "com.Growl.GrowlHelperApp"
        set the allNotificationsList to ¬
            {"Test Notification", "Another Test Notification"}
        --Notifications can be enabled in System Preferences>Growl>Applications>Display Options
        set the enabledNotificationsList to ¬
            {"Test Notification"}
        register as application ¬
            "Growl AppleScript Sample" all notifications allNotificationsList ¬
            default notifications enabledNotificationsList ¬
                    -- Set the icon. You can use any icon from any application
            icon of application "AppleScript Editor"

        notify with name ¬
            "Test Notification" title ¬
            "Test Notification" description ¬
            "This is a test AppleScript notification." application name "Growl AppleScript Sample"

        notify with name ¬
            "Another Test Notification" title ¬
            "Another Test Notification :) " description ¬
            "Alas — you won't see me until you enable me..." application name "Growl AppleScript Sample"

    end tell
end if

এটি প্রদর্শিত হবে:

এবং আপনি যদি অন্য বিজ্ঞপ্তিটি সক্ষম করে থাকেন তবে:

আরও উন্নত কৌশলগুলি এখানে বর্ণিত হয়েছে।


1

যেহেতু অ্যাপলস্ক্রিপ্টঅবিজিসি ম্যাকওসের অংশ, 2012 সালে সম্ভবত এটি সম্ভব ছিল না তা অর্জনের জন্য তার "ফাউন্ডেশন" কাঠামোটি (এনএসএমেনুর পদ্ধতিগুলি) ব্যবহার করা সম্ভব।

আমি অ্যাপলস্ক্রিপ্টের মধ্যে থেকে কাস্টম মেনুগুলি তৈরি করতে একটি আকর্ষণীয় স্ক্রিপ্ট পেয়েছি; এটি থেকে আমি ম্যাকোসের মেনু বারটিতে পাঠ্য রাখার জন্য উপযুক্ত কোডটি বের করেছি । আসলে এটি কিছু সামগ্রী প্রবেশের জন্য কেবল একটি মেনুর "শিরোনাম" ব্যবহার করে।

এটি প্রদর্শনের জন্য আমি একটি খুব বেসিক সংলাপ স্ক্রিপ্ট প্রয়োগ করেছি যা ব্যবহারকারীদের পাঠ্য ইনপুট (6 সেকেন্ডের অপেক্ষায়) জিজ্ঞাসা করে যা মেনু বারে অস্থায়ীভাবে প্রদর্শিত হয় (5 সেকেন্ড)।
এটা এখানে:

use framework "Foundation"
use framework "AppKit"
use scripting additions
property StatusItem : missing value
property newMenu : class "NSMenu"

display dialog "Write something:" default answer "" giving up after 6
set myText to text returned of the result
if myText is "" then set myText to "TOOOOO slow … try again !"
set myText to ">>    " & myText & "    <<"

set bar to current application's NSStatusBar's systemStatusBar
set StatusItem to bar's statusItemWithLength:-1.0
StatusItem's setTitle:myText
set newMenu to current application's NSMenu's alloc()'s initWithTitle:"Custom"
StatusItem's setMenu:newMenu

delay 5
current application's NSStatusBar's systemStatusBar()'s ¬
        removeStatusItem:StatusItem  

এই অ্যাপলস্ক্রিপ্ট কোডটি আপনার যে কোনও স্ক্রিপ্টে ব্যবহার করা যেতে পারে। (এর "সংলাপ" অংশটি alচ্ছিক ...)

ইউজার 3439894 আমার "মেনু" বন্ধ করতে সাহায্য করেছে, স্ক্রিপ্টের শেষ লাইনটি দেখুন। অনেক ধন্যবাদ!


সুযোগ থেকে আপনি কী উত্তরটি পেয়েছেন সেই মূল উত্স কোডের কোনও লিঙ্ক আছে? দেখতে ভাল লাগবে। ধন্যবাদ।
ব্যবহারকারী 3439894

1
হ্যাঁ - এটা এই প্রশ্নের গৃহীত উত্তর শেষ হ্যান্ডলার মধ্যে রয়েছে: /programming/29168474/creating-a-simple-menubar-app-using-applescript। । । । । যদিও আমি ভীত, আমার শেষ লাইনটি (সময়ের অর্ধেক সময় কাজ করে) আমি অন্য কোথাও খুঁজে পেয়েছি ad এবং অভিযোজিত । সঠিক নয় । । । । । । আমি প্রোগ্রামার নই তাই কোড বুঝতে আমার আরও কিছুটা সময় প্রয়োজন need
ক্ল্যামসাম ল্যাং

1
বিটিডাব্লু এটি একটি দুর্দান্ত উত্তর এবং "এর জন্য না হলে এটি কয়েকবার ক্র্যাশ হয়েছিল -" ডেলোক () "এর কারণে?" আমার +1 হবে। যদিও চিন্তার জন্য কিছু খাবার ... আপনি যদি এই কোডটি একা স্ট্যান্ড আপেল স্ক্রিপ্টঅবিজিসি অ্যাপ্লিকেশন হিসাবে ব্যবহার করেন তবে এটি আরও ভাল হতে পারে তবে StatusItem's dealloc()কেবল অ্যাপলস্ক্রিপ্টঅবজিসি অ্যাপ্লিকেশনটিতে প্রযোজ্য এবং স্ক্রিপ্ট সম্পাদক নয় এবং দুর্ঘটনাক্রমে এটি ক্র্যাশ হয়ে গেছে।
ব্যবহারকারীর 3439894

FWIW কোডের প্রথম set myText to ...লাইন, কমান্ডের আগে একটি আসন্ন কোডের উপর ভিত্তি করে সত্যই কিছুই করে না এবং তাই এর প্রয়োজন হয় না। অন্য কথায়, শুধুমাত্র ব্যবহৃত মান এর পরে যা নির্ধারিত হয় যে কমান্ড হয় চালানো এবং কেন এটা কিছু সেটিং করার পূর্বে কমান্ড কোডিং অব্যবহৃত এবং প্রেক্ষাপটে প্রয়োজনীয় কোড বর্তমানে উপস্থাপন করেছে। display dialog myTextdisplay dialog display dialog
ব্যবহারকারী 3439894

1
এর পরিবর্তে StatusItem's dealloc()বা StatusItem's setTitle:""আমি ব্যবহার করব:current application's NSStatusBar's systemStatusBar()'s removeStatusItem:StatusItem
ব্যবহারকারীর 3439894
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.