বেস স্ক্রিপ্ট থেকে কীভাবে ব্যবহারকারীর জিইউআই ইনপুট পাবেন?


1

একটি বেস স্ক্রিপ্ট থেকে আমি লুপে ব্যবহারকারী ইনপুট এবং সিস্টেম সেটিংস পরিবর্তন করতে চাই। আমি প্রথমে কোকো ডায়ালগ চেষ্টা করেছিলাম তবে এর মধ্যে মারাত্মক ত্রুটি রয়েছে: ডায়ালগগুলি সর্বদা অন্যান্য উইন্ডোজের শীর্ষে থাকে।

আদর্শভাবে, আমি "সেট স্লিপ মোড" এবং "জাগ্রত মোড সেট করুন" ("ডিসপ্লেটি চালু থাকলে কম্পিউটারকে স্বয়ংক্রিয়ভাবে ঘুমানো থেকে আটকাতে হবে") বোতামগুলির বোতাম এবং ডায়ালগ / উইন্ডোটি বোতামে রাখার সময় দিয়ে একটি ডায়ালগ ফেলতে পারি চাপা। কোকো ডায়ালগের ক্ষেত্রে, প্রতিবার একটি বোতাম টিপে গেলে আমাকে একটি নতুন ডায়ালগ তৈরি করতে হয়েছিল। এটি ঠিক আছে, তবে উপরের সমস্যাটি বাদ দিয়ে ইতিমধ্যে উল্লিখিত সমস্যাটি বাদ দিয়ে এটি একটি নতুন ডায়লগ অবস্থান পর্দার মাঝখানে রাখে এবং পুরানোটি যেখানে ছিল তা নয় (এবং কোকো ডায়ালগের কথোপকথনের জন্য অবস্থানের যুক্তি নেই)।

এর সমাধান কি কেউ জানেন? আমি সন্দেহ করি যে অ্যাপলস্ক্রিপ্ট কাজ করবে, তবে এটি এত জটিল এবং আমি অনুলিপি / সংশোধন করতে পারে এমন উপযুক্ত উদাহরণ খুঁজে পাচ্ছি না।

ধন্যবাদ।


: এই পোস্টে চেক করুন stackoverflow.com/questions/8354482/dialog-from-bash-script
sdayal

পোস্ট করেছেন আমি ম্যাক বান্ধব কিছু চাই
e40

আপনি কি কেবল ম্যাকের ঘুমের সেটিংস টগল করতে চান? আমি এর জন্য লাইটহেড দ্বারা ক্যাফিন ব্যবহার করি (অ্যাপ স্টোরে উপলব্ধ)। সুন্দর ছোট্ট মেনু বার আইকন এবং আপনি সব শেষ করেছেন
এজেন্টরোডকিল

@ এজেন্টরোডকিল: ক্যাফিন আমার পক্ষে কাজ করে না কারণ এটি কেবল প্রদর্শনকে ঘুম থেকে বাধা দেয়।
e40

উত্তর:


1

আমি দুটি সমাধান খুঁজে পেয়েছি। সেরা এক দ্বিতীয়।

সমাধান # 1: টিসিএল / টাকা ব্যবহার করুন:

#! /usr/bin/env wish8.5
# Adapted from brilliant example here:
#   http://stackoverflow.com/questions/166231/tcl-tk-examples

package require Tk

proc main {} {
if {[lsearch -exact [font names] TkDefaultFont] == -1} {
    # older versions of Tk don't define this font, so pick something
    # suitable
    font create TkDefaultFont -family Helvetica -size 12
}
# in 8.5 we can use {*} but this will work in earlier versions
eval font create TkBoldFont [font actual TkDefaultFont] -weight bold

buildUI
}

proc buildUI {} {
frame .toolbar
scrollbar .vsb -command [list .t yview]
text .t \
    -width 80 -height 10 \
    -yscrollcommand [list .vsb set] \
    -highlightthickness 0
.t tag configure command -font TkBoldFont
.t tag configure error   -font TkDefaultFont -foreground firebrick
.t tag configure output  -font TkDefaultFont -foreground black

grid .toolbar -sticky nsew
grid .t .vsb  -sticky nsew
grid rowconfigure . 1 -weight 1
grid columnconfigure . 0 -weight 1

set i 0
foreach {label command} {
    awake     {prevent_computer_sleep}
    sleep     {allow_computer_sleep}
    status    {pmset -g | grep sleep}
} {
    button .b$i -text $label -command [list runCommand $command]
    pack .b$i -in .toolbar -side left
    incr i
}
}

proc output {type text} {
.t configure -state normal
.t insert end $text $type "\n"
.t see end
.t configure -state disabled
}

proc runCommand {cmd} {
output command $cmd
set f [open "| $cmd" r]
fconfigure $f -blocking false
fileevent $f readable  [list handleFileEvent $f]
}

proc closePipe {f} {
# turn blocking on so we can catch any errors
fconfigure $f -blocking true
if {[catch {close $f} err]} {
    output error $err
}
}

proc handleFileEvent {f} {
set status [catch { gets $f line } result]
if { $status != 0 } {
    # unexpected error
    output error $result
    closePipe $f

} elseif { $result >= 0 } {
    # we got some output
    output normal $line

} elseif { [eof $f] } {
    # End of file
    closePipe $f

} elseif { [fblocked $f] } {
    # Read blocked, so do nothing
}
}

main

যেখানে প্রতিরোধের কম্পিউটার_স্লিপ ঠিক তাই করে sudo pmset sleep 0এবং অনুমতি_ কম্পিউটার_স্লিপ দেয় sudo pmset sleep 1

সমাধান # 2: কীপিং ইউটিএইচকে সংশোধন করুন সিস্টেম স্লিপ ব্যবহার করতে এবং ঘুম প্রদর্শন না করার জন্য: কীপিং ইউআউকে আমার কাঁটাচামচ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.