বর্তমান এক্সটার্ম পটভূমির রঙে প্রোগ্রামেটিক অ্যাক্সেস?


13

আমি .bashrcঅগ্রভাগ এবং পটভূমির জন্য এটি যে রঙগুলি ব্যবহার করছে তার উপর নির্ভর করে প্রম্পট রঙগুলি সেটআপ করতে চাই ।

উদাহরণস্বরূপ, নীল প্রম্পট যদি পটভূমি হালকা হয় এবং গা it় হয় তবে এটি বেজ হয়।

কোনও স্ক্রিপ্টে বর্তমান সেটিংসগুলি খুঁজে পাওয়ার কোনও উপায় আছে কি?

উত্তর:


22

টমাস ডিকি (এক্সটার্মের রক্ষণাবেক্ষণকারী) এর ইমেলটি এটি পেয়েছে। সম্পর্কে বিশেষভাবে অংশ নোট ?Ps = 4বোঝায় OSC Ps ; Pt STযেখানে OSC( "অপারেটিং সিস্টেম কন্ট্রোল" উপসর্গ) হল ESC ]এবং ST( "স্ট্রিং টার্মিনেটর" প্রত্যয়) হল \(ব্যাকস্ল্যাশ)। 4OSC করা সম্ভব subcommands অন্যতম।

পুরো প্যালেটটির জন্য, এটি 88/256 রঙ এক্সটেনশন ব্যবহার করে সেট / পুনরুদ্ধার করা যায়। Ctlseqs.txt এ এটি সংক্ষিপ্তসারিত হয়েছে:

  Ps = 4 ; c ; spec -> Change Color Number c to the color
specified by spec.  This can be a name or RGB specification as
per XParseColor.  Any number of c/spec pairs may be given.
The color numbers correspond to the ANSI colors 0-7, their
bright versions 8-15, and if supported, the remainder of the
88-color or 256-color table.

If a "?" is given rather than a name or RGB specification,
xterm replies with a control sequence of the same form which
can be used to set the corresponding color.  Because more than
one pair of color number and specification can be given in one
control sequence, xterm can make more than one reply.

একটু পরে মধ্যে ডক্স আরো OSC subcommands হয় Ps = 10এবং Ps = 11, এবং অন্যদের।

Ps = 1 0  -> Change VT100 text foreground color to Pt.
Ps = 1 1  -> Change VT100 text background color to Pt.

উদাহরণ - এই প্রশ্নের পটভূমি ব্যবহার Ps = "11"(ঠিক উপরে থেকে) এবং Pt = "?", মধ্যে প্লাগ OSC Ps ; Pt ST। প্রতিধ্বনিতে, \033পলায়নের \\জন্য এবং চূড়ান্ত ব্যাকস্ল্যাশের জন্য ব্যবহৃত হচ্ছে ।

echo -en "\033]11;?\033\\"

আউটপুট:

^[]11;rgb:0000/0000/0000^[\ 

সতর্কতা: প্রত্যাবর্তিত রঙটি বিপরীত ভিডিও, যেমন -rv, সক্ষম করা আছে এবং via 260 এর মাধ্যমে উপলভ্য colors 260 রঙের মধ্যে ক্রল করা হচ্ছে কিনা তা প্রতিফলিত OSC 4 ; c ; ? STকরে না যে উভয়ই ব্যাকগ্রাউন্ড অনুসরণ করে এবং বিপরীত ভিডিওতে পরিবর্তিত হয়। যেহেতু অনেক ব্যবহারকারী ন্যায়বিচার ব্যবহার করে একটি অন্ধকার ব্যাকগ্রাউন্ড সেট করেছেন xterm -rv, এটি ব্যাকগ্রাউন্ডটি আসলে অন্ধকার কিনা তা নির্ধারণ করতে জটিল করে তোলে। সর্বাধিক রং না সমন্বয় -rv, হয়।

সম্পূর্ণ ক্যোয়ারী করার জন্য একটি স্ক্রিপ্ট এবং আসলে এক্সটারম থেকে উত্তরটি ক্যাপচার করবে:

#!/bin/bash
success=false
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0
col=11      # background
#          OSC   Ps  ;Pt ST
echo -en "\033]${col};?\033\\" >/dev/tty  # echo opts differ w/ OSes
result=
if IFS=';' read -r -d '\' color ; then
    result=$(echo $color | sed 's/^.*\;//;s/[^rgb:0-9a-f/]//g')
    success=true
fi
stty $oldstty
echo $result
$success

1
বাহ ... দুই বছর পরে একটি প্রতিক্রিয়া ... আপনাকে ধন্যবাদ আমি ব্যাখ্যাটি বেশ বুঝতে পারিনি তবে উদাহরণটি আমার পক্ষে কিছুই করে না ... কিছুই প্রতিধ্বনিত করে।
দুর্বল পরিবর্তনশীল

হেহ। আমি এটি একটি সাম্প্রতিক এক্সটারমে পুনরায় চালিত করছি - একটি আসল এক্সটার্ম - এই মুহূর্তে আমার সমস্ত এক্স সংস্থান ছিটানো হয়েছে (যার অর্থ এটি সমস্ত "0" এর পরিবর্তে রঙের জন্য সমস্ত "চ" গুলি) দেয়। / বিন / প্রতিধ্বনি বা ব্যাশের অন্তর্নির্মিত প্রতিধ্বনি ব্যবহার করা ভাল কাজ করে। আমি যে উদাহরণটি চেষ্টা করেছিলাম তা উপরের পোস্ট থেকে সরাসরি অনুলিপি / আটকানো হয়েছিল। আমার পরিবেশটি উবুন্টু ১১.১০ (একটি লিনাক্স / ডেবিয়ান ডেরাইভেটিভ)। আমার কাছে পরীক্ষার জন্য আলাদা কোনও ওএস হ্যান্ডি নেই।
অ্যালেক্স উত্তর-কীগুলি

আপনার প্রম্পটটি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে আপনার প্রশ্নের জবাবে আপনার টার্মিনালে ইনপুট স্টাফ করার Xterm এর প্রয়াসের শীর্ষে অবতরণের সম্ভাবনা রয়েছে। আপনার শেলের দৃষ্টিকোণ থেকে, এক্সটার্মের উত্তরটি টাইপিংয়ের মতো দেখতে আপনার মত দেখাচ্ছে।
অ্যালেক্স উত্তর-কি

1
হুম, উবুন্টু 12.04 এর জিনোম টার্মিনালটি xterm- সামঞ্জস্যপূর্ণ বলে দাবি করেছে, তবে কোনও কিছুই প্রিন্ট করে না। কেন এমন?
নিক রেইমান

1
এখন এই বিশুদ্ধ টার্মিনাল জাদু হয়। দুর্দান্ত উত্তর।
কিউস - মোনিকা

0

ধরণের

আপনার ~ / .Xdeafults ফাইলটিতে সেটিংসটি রাখুন:

xterm*foreground: blue
xterm*background: white

আপনার শেল আপনি মানগুলি গ্রেপ করুন:

awk '/xterm\*foreground:(.*)/ { print $2 }' < .Xdefaults

অন্যথায় এক্সটারমের কিছু অভ্যন্তরীণ মান পাওয়া বেশ শক্ত।


আমি এমনকি এক্সও ব্যবহার করছি না :) আমি সাইগউইনের একটি rxvt ব্যবহার করছি যা এক্স সার্ভার ছাড়াই চলে। এছাড়াও আমি বিভিন্ন হোস্টে এবং বিভিন্ন কাজের জন্য বিভিন্ন রঙ ব্যবহার করতে সক্ষম হতে চাই, যার জন্য আমি সেটিংসের জন্য টার্মিনালটি জিজ্ঞাসা করি।
দুর্ভাগ্য পরিবর্তনশীল

ভাল, আপনি আপনার OS :) উল্লেখ হয়নি
আকিরা

এর জন্যে দুঃখিত. আমি নির্দিষ্ট না করার কারণটি হ'ল আমি আশা করেছি যে সমাধানটি কিছু ম্যাজিক স্ট্রিং প্রতিধ্বনির উপর ভিত্তি করে তৈরি হবে এবং স্ট্যাডআউটে কিছু তথ্য ফিরে পাবে।
দুর্ভাগ্য পরিবর্তনশীল

ভাল, আপনি যা "প্রতিধ্বনি" হিসাবে শেলের (ব্যাশ, জেডএস) অভ্যন্তরে থাকেন, এটি এক্সটার্মে যায় না (কমান্ডগুলির আউটপুট প্রদর্শন করার ক্ষেত্রে চূড়ান্ত পদক্ষেপ ব্যতীত)।
আকির

-1 ডাবলড কাজটির জন্য ভুল সরঞ্জাম।
g33kz0r

-1

আসলে আমি মনে করি আপনি এটি চান:

% xrdb -query

এটি আপনার জন্য সেটিংস তালিকাবদ্ধ করবে। আরো দেখুন:

http://docstore.mik.ua/orelly/unix3/upt/ch06_08.htm

রানটাইম সংশোধন করতে, ব্যবহার করুন:

% echo "some*setting: somevalue" | xrdb -merge

-queryসমস্ত সংস্থান তালিকাবদ্ধ করে। কোনও উত্স উল্লেখ করা আমার উবুন্টুতে কাজ করে না।
আকিরা

প্রতিধ্বনি "যাই হোক না কেন" | xrdb-विसর
g33kz0r

প্রশ্নটি আবার পড়ুন: ওপি এক্সটারেমের সেটিংস অনুসারে বেস প্রম্পটের রঙ নির্ধারণ করতে চায়। ওপি এক্সরেসোর্সগুলি পরিবর্তন করতে চায় না।
আকিরা

আপনার উত্তরে তাঁর মন্তব্য দেখুন। তিনি "টার্মিনাল [sic] জিজ্ঞাসা" করতে চান। সুতরাং, সে চায় xrdb -query
g33kz0r

আপনি যদি সুনির্দিষ্ট হতে চান: তিনি উইন্ডোজ (যা সম্ভব) উইন্ডোজটিতে একটি চলমান জেসারভারের সাথে আরএক্সভিটি জিজ্ঞাসা করতে চান এবং xrdb -queryকেবল আপনাকে সমস্ত সংস্থানগুলির তালিকা দেয় .. যা আপনাকে পূর্ববর্তী স্থানে যাওয়ার জন্য আবারও জাভ / গ্রেপ করতে হবে। এবং আমি ইতিমধ্যে ভর্তি কি thats। xrdb -mergeসম্পূর্ণরূপে অফটোপিক এখানে কোজ ওপি এক্সরেসোর্সগুলি পরিবর্তন করতে চায় না তবে বাশপ্রম্পটের উপস্থিতি।
আকিরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.