আমার টার্মিনাল এমুলেটরটি কত রঙ সমর্থন করে তা পরীক্ষা করা হচ্ছে


21

আমার টার্মিনাল এমুলেটরটি কত রঙ সমর্থন করে তা পরীক্ষা করার কোনও নির্ভরযোগ্য উপায় আছে?

যদি echo $TERMপ্রিন্ট করা হয় xterm, তা কি স্পষ্টতই আমাকে বলতে পারে যে আমার টার্মিনাল এমুলেটরটি কত রঙ সমর্থন করে? আমি কীভাবে এই তথ্যটি নির্ভরযোগ্যভাবে পরীক্ষা করতে পারি?


উত্তর:


20

এর মানটি $TERMসমর্থিত রঙগুলির সংখ্যা সম্পর্কে খুব বেশি তথ্য দেয় না। অনেক টার্মিনাল তাদের নিজেদের হিসাবে বিজ্ঞাপন দেয় xtermএবং যে কোনও সংখ্যক রঙকে সমর্থন করে (2, 8, 16, 88 এবং 256 সাধারণ মান)।

আপনি OSC 4 ; c ; ? BEL নিয়ন্ত্রণ সিকোয়েন্স সহ প্রতিটি রঙের মান জিজ্ঞাসা করতে পারেন । যদি রঙ নম্বরটি cসমর্থিত হয়, এবং যদি টার্মিনালটি এই নিয়ন্ত্রণ ক্রমটি বুঝতে পারে তবে টার্মিনালটি রঙের মান দিয়ে উত্তর দেবে। যদি রঙ নম্বরটি সমর্থিত না হয় বা টার্মিনালটি এই নিয়ন্ত্রণ ক্রমটি বুঝতে না পারে তবে টার্মিনাল কিছুই উত্তর দেয় না। রঙ 42 সমর্থনযোগ্য কিনা তা জিজ্ঞাসা করার জন্য এখানে একটি বাশ / zsh স্নিপেট রয়েছে (প্রয়োজনে টার্মিনালটিতে / থেকে পুনর্নির্দেশ):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

ভিটিই লাইব্রেরির উপর ভিত্তি করে জনপ্রিয় টার্মিনালগুলির মধ্যে, এক্সটার্ম এবং টার্মিনালগুলি (জিনোম-টার্মিনাল, টার্মিনেটর, এক্সফেস 4-টার্মিনাল, ...) এই নিয়ন্ত্রণ ক্রমটিকে সমর্থন করে; rxvt, কনসোল, স্ক্রিন এবং tmux না।

আমি আরও সরাসরি উপায় জানি না।


ধন্যবাদ @ গিলিস এটি দুর্দান্ত দেখাচ্ছে। আমি কি জিজ্ঞাসা করতে read -d $'\a' -s -t 1পারি?
আমেলিও ভাজকেজ-রেইনা

1
@intrpc ইনপুট \aপ্রতিধ্বনি না করে প্রথম (বেল চরিত্র) অবধি ইনপুট পড়ুন , 1 সেকেন্ডের সময়সীমা সহ।
গিলস 'অশুভ হওয়া বন্ধ করুন'

5
@ l0b0 টার্মিনো tput colorsডাটাবেস অনুসন্ধান করে। আপনার সম্ভাবনা রয়েছে TERM=xterm। এক্সটার্ম সংস্করণ এবং সংকলন এবং রান-টাইম বিকল্পগুলির উপর নির্ভর করে কমপক্ষে 2, 8, 16, 88 বা 256 রঙগুলিকে সমর্থন করতে পারে, তবে টার্মিনো ডাটাবেস কেবল একটি মান সঞ্চয় করতে পারে। আপনি উদাহরণস্বরূপ সেট করতে পারেন TERM=xterm+256color, তবে তারপরে আপনি যখন এমন কোনও মেশিনে লগ ইন করবেন তখন আপনি বিরক্ত হবেন যার টার্মক্যাপ / টার্মিনো ডাটাবেসে এই প্রবেশ নেই।
গিলস

2
@ l0b0 আপনার পাইপের স্পষ্টতই টার্মিনালের কোনও সম্পর্ক নেই। আপনাকে টার্মিনালে ( printf … >/dev/tty) মুদ্রণ করতে হবে এবং তারপরে টার্মিনাল ( read … </dev/tty) থেকে পড়তে হবে । এক্সটার্ম OSC 4; …; ? BELকীস্ট্রোকগুলি ইনজেকশন করে ক্রমটির প্রতিক্রিয়া জানায় ।
গিলস 'অশুভ হওয়া বন্ধ করুন'

5
অান্তরিক ধন্যবাদ! এখানে একটি ব্যাপার নির্ধারণ করতে কত রং আপনার xterm স্ক্রিপ্ট আসলে সমর্থন
l0b0

11

একটি পার্ল স্ক্রিপ্ট আছে, 256colors2.pl , এটি আপনার টার্মিনালের সমস্ত রঙ প্রদর্শন করবে।


3
গুগল কোড অফলাইনে, এটি একটি বিকল্প বলে মনে হচ্ছে: gist.github.com/hSATAC/1095100
জিপ্পি


9

তুমি ব্যবহার করতে পার

$ tput colors

আমার ডেবিয়ান ইনস্টল টিপুট ncurses-binপ্যাকেজের অংশ যা ডিফল্টরূপে ইনস্টল করা হয়।


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