मैं एक पूर्ण-स्क्रीन कंसोल पृष्ठभूमि (TTY) को कैसे अनुकूलित कर सकता हूं?


17

मैं सक्रिय रूप से पूर्ण-स्क्रीन कंसोल (जो Ctrl+ Alt+ F1... के साथ खोला गया था F6) का उपयोग करता था और मुझे यह पता चला है कि मैं इसे एक तरह के "वॉलपेपर" के साथ सजाने की कोशिश करना चाहूंगा (बल्कि अंधेरे और नीरस एक ताकि यह पठनीयता कम न हो), शायद यह अच्छा लग सकता है और महसूस कर सकता है (या नहीं, लेकिन मुझे कोशिश करने की आवश्यकता है)। यह और भी बेहतर अगर मैं अलग सांत्वना की पृष्ठभूमि (के लिए एक के रूप में विभिन्न चित्रों सेट कर सकते हैं Ctrl+ Alt+ F1, किसी अन्य के लिए Ctrl+ Alt+ F2आदि)।

तथ्य यह है कि कंसोल के पास उच्चतर रिज़ॉल्यूशन है जो शुद्ध टेक्स्ट मोड प्रदान करता है यह बताता है कि पूर्ण-विकसित ग्राफ़िकल मोड का उपयोग उनके लिए किया जाता है और सब कुछ संभव है। पर कैसे?


2
असंभव। वर्चुअल कंसोल केवल टेक्स्ट हैं।
सेर्गेई कोलोडियाज़नी

5
@ जब से लिनक्स का अस्तित्व नहीं था, तब से मैं केवल-पाठ मोड का उपयोग कर रहा हूं - मेरा विश्वास करो, मैं वास्तविक पाठ मोड को इसके चित्रमय अनुकरण से अलग कर सकता हूं। बहुत से लोग शायद ही आजकल इसकी कल्पना कर सकते हैं, लेकिन मैं भी कंसोल में फिल्में देख रहा हूं जिसमें लिनक्स पर 2.4 दिनों के दौरान कोई भी एक्स सर्वर स्थापित नहीं है। इससे मुझे संदेह है कि यह वास्तव में असंभव है।
इवान

1
ठीक है, अच्छी तरह से मुझे अपने आप को ठीक करने दें: मैं कंसोल में छवियों और फिल्मों को देखने में विश्वास करता हूं, क्योंकि कुछ framebufferडिवाइस के रूप में जानता है, लेकिन उस स्क्रीन के साथ कुछ प्रोग्राम के आउटपुट के साथ कब्जा कर लिया जाता है, जैसे कि fbi। अपने आप में TTY अभी भी एक पाठ-मात्र उपकरण है
Sergiy Kolodyazhnyy

2
इसके पात्र होने के बाद मैं आपके प्रश्न पर एक इनाम रखूंगा। मुझे वास्तव में दिलचस्पी थी
सर्गी कोलोडाज़नी

1
इसे देखें: code.google.com/p/fbterm
Sergiy Kolodyazhnyy

जवाबों:


12

मुझे पूरा यकीन है कि लिनक्स कंसोल ड्राइवर में इस क्षमता का निर्माण नहीं होता है, हालांकि एक एप्लिकेशन है जिसे कहा जाता है fbtermजो यह कर सकता है। पृष्ठभूमि की छवियों को काम करने के लिए, आपको एक उपयोगिता की भी आवश्यकता होगी जो फ्रेमबफ़र पर एक छवि प्रदर्शित कर सकती है जैसे fbi:

sudo apt-get install fbterm fbi

fbtermवास्तव में पृष्ठभूमि छवियों को स्वयं नहीं पढ़ता या प्रदर्शित नहीं करता है, यह पृष्ठभूमि शुरू होने से पहले पृष्ठभूमि पर छवि स्थापित करने के लिए कुछ अन्य कार्यक्रम की अपेक्षा करता है। fbtermइस का उपयोग करने के तरीके के बारे में मैन पेज में निर्देश हैं fbv, एक बिल्कुल पुरातन और असमर्थित उपयोगिता जिसे मैं एक आधुनिक उबंटू प्रणाली पर संकलन करने के लिए भी नहीं प्राप्त कर सका। fbiफ़्रेमबफ़र के लिए एक बहुत क्लीनर और अच्छे छवि दर्शक है, लेकिन दुर्भाग्य से सरल की "सेट और एक्जिट" कार्यक्षमता नहीं है fbv, और इस तरह से हस्तक्षेप करता है fbtermयदि आप इसे सीधे उपयोग करने का प्रयास करते हैं। हालाँकि, मैं एक विकल्प के साथ आने में सक्षम था जो काम करता है:

सबसे पहले, आपको अपनी इच्छित छवि का उपयोग करने fbiऔर catप्रदर्शित करने की आवश्यकता होगी और फिर इसे "फ्रेमबफ़र रॉ फॉर्मेट" छवि फ़ाइल में डंप करें। मूल के रूप में, एक फ्रेम-बफ़र कंसोल में, चलाएँ:

( sleep 1; cat /dev/fb0 > nifty-background.fbimg ) & fbi -t 2 -1 --noverbose -a nifty-background.png

(यह कुछ सेकंड के लिए छवि प्रदर्शित करेगा और फिर बाहर निकल जाएगा, फ़ाइल में परिणाम सहेजा जाएगा nifty-background.fbimg। बदलें nifty-background.fbimgऔर nifty-background.pngजो भी फ़ाइल नाम आप चाहें, निश्चित रूप से।)

कमांड का पहला भाग एक फ़ाइल में फ्रेमबफ़र सामग्री को पूरा करने से पहले 1 सेकंड की प्रतीक्षा करता है। उसी समय, दूसरा भाग (& के बाद) fbiफ़्रेमबफ़र पर छवि को प्रदर्शित करने के लिए लॉन्च करता है, ताकि जब बिल्ली कमांड को निष्पादित करने के लिए चारों ओर हो जाए (1 सेकंड बाद में), वहाँ एक छवि है डंप करने के लिए। उस क्रम में वे कारण हैं क्योंकि मैंने पाया कि fbiअगर यह अग्रभूमि में नहीं चल रहा था, तो इसका मतलब है कि इसका मतलब सूची में अंतिम कमांड होना है।

तब से, जब भी आप दौड़ना चाहें fbterm, आप इसे इस तरह शुरू कर सकते हैं (आप थोड़ा रैपर स्क्रिप्ट बनाना चाहते हैं):

export FBTERM_BACKGROUND_IMAGE=1
cat nifty-background.fbimg > /dev/fb0; fbterm

7

मैं वास्तविक पाठ विधा को उसके चित्रमय अनुकरण से अलग कर सकता हूं।

… जो कि उन तरीकों में से एक है जो पर्यवेक्षक विंडोज पर एक वास्तविक बीएसओडी को मज़ाक बीएसओडी स्क्रीन-सेवर के कार्यों से अलग कर सकता है जिसने एक दशक पहले या इतने पहले गोल किया था। ग्राफिक्स मोड में डिस्प्ले एडॉप्टर हार्डवेयर का उपयोग करके ब्लॉक ग्राफिक्स वर्णों का प्रदर्शन टेक्स्ट मोड में डिस्प्ले एडॉप्टर हार्डवेयर द्वारा उत्पन्न वर्णों से बिल्कुल अलग था।

हां, डिस्प्ले एडॉप्टर ग्राफिक्स मोड में है। यह इस तरह से कुछ समय के लिए किया गया है, अब। पीसी डिस्प्ले एडॉप्टर हार्डवेयर के बिना सिस्टम पर यह हमेशा होता था । लिनक्स के शुरुआती वर्षों में, पीसी कॉम्पिटिबल्स पर कंसोल में टेक्स्ट मोड में डिस्प्ले एडॉप्टर हार्डवेयर होगा। लेकिन यह प्रयोग चुपचाप बहुत कुछ नहीं करने के लिए मिट गया है। अधिकांश उपयोगकर्ताओं के लिए यूनिकोड समर्थन आजकल पाठ-मोड हार्डवेयर की तुलना में बड़े ग्लिफ़ सेट की आवश्यकता है। मशीन फर्मवेयर (निश्चित रूप से), स्प्लैश स्क्रीन (सुंदर चित्रों और कंपनी के लोगो) के लिए ग्राफिक्स मोड का उपयोग करता है, जैसा कि लिनक्स लोडर और सिस्टम इनिशियलाइज़ेशन करता है।

लिनक्स कर्नेल में निर्मित एक टर्मिनल एमुलेटर प्रोग्राम है। यह फ़्रेमबफ़र और इनपुट इवेंट सबसिस्टम के शीर्ष पर स्तरित है, जो इसे एक्सेस करने के लिए आंतरिक कर्नेल इंटरफेस का उपयोग करता है। यह कर्नेल वर्चुअल टर्मिनल डिवाइस की एक श्रृंखला के रूप में एप्लिकेशन-मोड सिस्टम को प्रस्तुत करता है, /dev/tty1और इसके बाद।

इस कार्यक्रम के काफी टर्मिनल emulators कि चलाने की तुलना में सीमित है outwith लिनक्स कर्नेल, साधारण अनुप्रयोगों के कार्यक्रमों के रूप में। यह केवल एक वास्तविक टर्मिनल की कार्यक्षमता का एक सीमित सबसेट का अनुकरण करता है, और इसमें बाद वाले टर्मिनल एमुलेटर की अतिरिक्त विशेषताओं का अभाव होता है।

यह उन है कि आप इस के लिए देखने की जरूरत है। आप टर्मिनल एमुलेटर से परिचित हो सकते हैं जो अपने इनपुट / आउटपुट के लिए X का उपयोग करते हैं, जैसे कि xterm, lxterminal, gnome-कंसोल, konsole, eterm, wterm और बाकी। कम प्रसिद्ध लोग हैं जो अपने इनपुट / आउटपुट के लिए फ्रेमबफ़र डिवाइस (ओं) और इनपुट इवेंट डिवाइस का उपयोग करते हैं। उपलब्ध कराने के उपयोगकर्ता के अंतरिक्ष आभासी टर्मिनल :

इनमें से कुछ बाद में आप जो चाहें कर सकते हैं।

उदाहरण के लिए, बैकग्राउंड इमेज के रूप में स्टार्टअप पर फ्रेमबफ़र में जो कुछ भी है, उसका उपयोग करने के लिए fbterm को कॉन्फ़िगर किया जा सकता है। इतना सब करने की जरूरत है कि लिनक्स को चलाने के लिए कई अन्य उपयोगिताओं में से एक का उपयोग करें सीधे फ़ेबटरम चलाने से पहले एक बैकग्राउंड इमेज सेट करने के लिए एक लिनक्स फ्रेमबफ़र डेविसेटो में छवियों को प्रदर्शित करने के लिए। ऐसे कई उपकरण हैं, जिनमें शामिल हैं:

fbvis और fbi बाहर निकलने पर स्क्रीन को साफ़ करते हैं, और फ़ॉगॉगॉड के उत्तर में और अधिक विस्तार से बताए गए संकल्पों की आवश्यकता होती है। dfbg, हालांकि, अपने आप को साफ नहीं करता है, यह इस विशेष कार्य के लिए अधिक उपयुक्त बनाता है।

आगे की पढाई


कंसोल के लिए पृष्ठभूमि छवि बनाने के तरीके पर सवाल पूछा गया। आपका उत्तर केवल संभावित समाधानों को सूचीबद्ध करता है। इसलिए, मैं अन्य उत्तर के लिए पुरस्कृत करता हूं, हालांकि, आपके द्वारा प्रदान की गई जानकारी के धन के लिए मैं आपको धन्यवाद देता हूं। आपने मेरा उत्थान किया है।
सेर्गेई कोलोडियाज़नी

4

हालाँकि फॉगॉड का जवाब मेरे काम नहीं आया, लेकिन इसने मुझे सही दिशा में ले जाने दिया, जिसमें से आधे को समाधान प्रदान किया (अर्थात्, फ्रेमबफ़र डेटा पढ़ना, जबकि fbiटीटीवाई स्क्रीन पर एक छवि दिखा रहा है)। इसलिए मैंने उनके जवाब का इनाम दिया है।

बोलो एक स्क्रिप्ट है जो fbtermएक एकल कमांड लाइन तर्क के रूप में छवि के लिए आंशिक पथ के साथ लॉन्च करना आसान बनाता है

प्रयोग

स्क्रिप्ट को उस निर्देशिका में सहेजा जाना चाहिए जो आपके $PATHचर में सूचीबद्ध है । अधिमानतः यह आपके व्यक्तिगत $HOME/binफ़ोल्डर में होना चाहिए । का संदर्भ लें कैसे पथ के लिए एक निर्देशिका जोड़ने के लिए? अपने व्यक्तिगत जोड़ने के तरीके के बारे में स्पष्टीकरण देने के binलिए $PATH, लेकिन binआपके होम निर्देशिका में एक निर्देशिका बनाने के लिए इसे PATHफिर से लॉगिन पर जोड़ने के लिए पर्याप्त है ।

स्क्रिप्ट को निष्पादन योग्य अनुमति भी होनी चाहिए; आप इसे सेट कर सकते हैं chmod +x /path/to/script.sh

अंत में, इसे sudoपढ़ने और लिखने के लिए रूट एक्सेस की अनुमति देने के साथ चलना चाहिए /dev/fb0

स्क्रिप्ट स्रोत

मेरे गितुब भंडार पर भी उपलब्ध है।

#!/bin/bash
# Author : Serg Kolo
# Date: Dec 5, 2015
# Description: Script to render image and set it as background
# in conjunction with fbterm
# Depends: fbterm,fbi, awk
# Written for: /ubuntu//q/701874/295286

function printUsage
{
  echo "<<< Script to set background image in TTY console"
  echo "<<< Written by Serg Kolo, Dec 5 , 2015"
  echo "<<< Usage: scriptName.sh /path/to/image"
  echo "<<< Must be ran with root privileges, in TTY only"
  echo "exiting"

}

# check if we're root, if there's at least one ARG, and it is a TTY

if [ "$(whoami)" != "root"   ] || [ "$#" -eq 0  ] ||  [ "$( tty | awk '{gsub(/[[:digit:]]/,""); gsub(/\/dev\//,"");print}' )" != "tty"  ] ;then

   printUsage
   exit 1
fi



# read the full path of the image

IMAGE="$( readlink -f "$@" )"

# Launch fbi with whatever image was supplied as command line arg
# then take out whatever is the data in framebuffer;
# Store that data to /tmp folder

( sleep 1; cat /dev/fb0 > /tmp/BACKGROUND.fbimg ; sleep 1; pkill fbi ) & fbi -t 2 -1 --noverbose -a  "$IMAGE"

# This portion is really optional; you can comment it out 
# if you choose so

echo "LAUNCH FBTERM ?(y/n)"
read ANSWER

if [ "$ANSWER" != "y"  ] ; then
   echo exiting
   exit 1
fi

# The man page states that fbterm takes screenshot of 
# what is currently in framebuffer and sets it as background
# if FBTERM_BACKGROUND_IMAGE is set to 1
# Therefore the trick is to send the framebuffer data captured
# in the last step (which will display the image on screen)
# and then launch fbterm. Note, that I send output from the command
# send to background in order to avoid the extra text displayed on 
# screen. That way we have clear image in framebuffer, without 
# the shell text, when we launch fbterm

export FBTERM_BACKGROUND_IMAGE=1 
clear
( cat /tmp/BACKGROUND.fbimg  > /dev/fb0 &) > /dev/null; sleep 0.25; fbterm 

अतिरिक्त जानकारी

यह पता चला है कि उपयोगकर्ता को उपयोग करने की आवश्यकता नहीं है sudo; समूह से /dev/fb0संबंधित है video, इसलिए उपयोगकर्ता केवल उस समूह का उपयोग करके खुद को जोड़ सकते हैं

sudo usermod -a -G video $USER

इस प्रकार, उपरोक्त स्क्रिप्ट में रूट के लिए चेक अप्रचलित हो जाते हैं, विशेष रूप से [ "$(whoami)" != "root" ] ||भाग।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.