Tam ekran konsol arka planını (TTY) nasıl özelleştirebilirim?


17

Tam ekran konsolları ( Ctrl+ Alt+ F1... ile açılanlar F6) aktif olarak kullanıyordum ve bir çeşit "duvar kağıdı" ile süslemeyi denemek istediğim bir fikre geldim (oldukça karanlık ve monoton bir tabiki) böylece okunabilirliği azaltmaz), belki de bu hoş görünebilir ve hissedilebilir (ya da denemez, ama denemem gerekir). Farklı resimleri farklı konsolun arka planı olarak ayarlayabilirsem daha iyi olurdu (biri Ctrl+ Alt+ F1, diğeri Ctrl+ Alt+ F2vb.).

Konsolların saf metin modunun sağladığı çok daha yüksek çözünürlüğe sahip olması, tam teşekküllü grafik modunun onlar için kullanıldığını ve her şeyin mümkün olduğunu göstermektedir. Ama nasıl?


2
İmkansız. Sanal Konsollar yalnızca metindir.
Sergiy Kolodyazhnyy

5
@Serg, Linux'un var olmadığı zamandan beri salt metin modları kullanıyorum - inan bana, gerçek metin modunu grafiksel öykünmesinden ayırt edebilirim. Bugünlerde pek çok insan bunu hayal bile edemiyor, ancak Linux 2.4 gün boyunca X sunucusu yüklü olmayan konsollarda film izliyorum. Bu bana bunun imkansız olduğundan şüphe ediyor.
Ivan

1
Tamam, kendimi düzeltmeme izin verin: framebufferCihaz olarak bilinen bir şey yüzünden konsolda görüntüleri ve filmleri izlemeye inanıyorum , ancak bu ekran gibi bazı programların çıktısı ile dolu fbi. Kendi başına TTY hala salt metin içeren bir cihaz
Sergiy Kolodyazhnyy

2
Uygun olduktan sonra sorunuza ödül getireceğim. Aslında ilgi duydum
Sergiy Kolodyazhnyy

Yanıtlar:


12

Linux konsol sürücüsünün yerleşik olarak bu yeteneğe sahip olmadığından eminim, ancak şu adla bir uygulama var: fbterm bunu yapabilen . Arka plan görüntülerinin çalışmasını sağlamak için, çerçeve tamponunda bir görüntüyü görüntüleyebilen bir yardımcı programa da ihtiyacınız olacaktır fbi:

sudo apt-get install fbterm fbi

fbtermaslında arka plan görüntülerini okumaz veya göstermez, başka bir programın arka plan görüntüsünü başlamadan önce ekranda ayarlamasını bekler. fbtermMan sayfasında, bunu nasıl yapacağınızla ilgili talimatlar var, fbvmodern bir Ubuntu sisteminde bile derleyemediğim kesinlikle eski ve desteklenmeyen bir yardımcı program. fbiframebuffer için çok daha temiz ve daha güzel bir resim görüntüleyicidir, ancak maalesef daha basit olan "ayarla ve çık" işlevine sahip değildir fbvve bu nedenlefbterm yüzden doğrudan kullanmaya çalışırsanız eder. Ancak, çalışan bir alternatif bulabildim:

Öncelikle, istediğiniz görüntüyü kullanmanız fbive catgörüntülemeniz ve daha sonra bir "framebuffer raw format" görüntü dosyasına dökmeniz gerekecektir. Kök olarak, bir çerçeve tamponu konsolunda şunu çalıştırın:

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

(Bu, görüntüyü birkaç saniye görüntüleyecek ve ardından sonucu dosyaya kaydettikten sonra çıkacaktır nifty-background.fbimg. Elbette nifty-background.fbimgve nifty-background.pngistediğiniz dosya adlarını değiştirin .)

Komutun ilk kısmı, framebuffer içeriğini bir dosyaya eklemeden önce 1 saniye bekler. Aynı zamanda, ikinci bölüm (& 'dan sonra) çerçevecik fbiüzerinde görüntüyü göstermek için başlatılır , böylece cat komutu yürütmeye başladığında (1 saniye sonra), dökülecek bir görüntü vardır. Bu sırayla olmalarının nedeni,fbi , ön planda çalışmadığında sorun yaşadığını etmemdi, yani listedeki son komut olması gerektiği anlamına geliyor.

O andan itibaren, çalıştırmak istediğinizde fbterm, bunu şu şekilde başlatabilirsiniz (küçük bir sarmalayıcı komut dosyası oluşturmak isteyebilirsiniz):

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

7

Gerçek metin modunu grafiksel öykünmesinden ayırt edebilirim.

… Bu, gözlemcinin Windows üzerinde gerçek bir BSOD'yi, on yıl kadar önce mermi yapan şaka BSOD ekran koruyucunun eylemlerinden ayırt etmesinin yollarından biridir. Grafik modunda ekran bağdaştırıcısı donanımını kullanan blok grafik karakterlerin görüntülenmesi, metin kipinde ekran bağdaştırıcısı donanımının oluşturduğu karakterlerden çok farklıydı.

Evet, ekran bağdaştırıcısı grafik modunda. Uzun süredir bu şekilde oldu, şimdi. Öyleydi hep PC ekran bağdaştırıcı donanım olmadan sistemlerde bu şekilde. Linux'un ilk yıllarında, PC uyumlu bilgisayarlarda konsolda ekran adaptörü donanımı metin modunda olur. Ancak bu kullanım sessizce neredeyse hiçbir şeye aşınmamıştır. Günümüzde çoğu kullanıcı için Unicode desteği, metin modu donanımından daha büyük bir glif seti gerektirir. Makine bellenimi (elbette), Linux yükleyici ve sistem başlatma gibi açılış ekranları (güzel resimler ve şirket logoları ile) için grafik modunu kullanır.

Linux çekirdeğinde yerleşik bir terminal emülatör programı var. Erişmek için dahili çekirdek arabirimlerini kullanan çerçeve arabellek ve giriş olayı alt sisteminin üstünde yer alır. Kendini uygulama modu sistemlerine çekirdek sanal terminal aygıtları serisi olarak sunar /dev/tty1.

Bu program oldukça çalıştırmak terminal emülatörlerine kıyasla sınırlıdır outwith sıradan uygulamalar programları gibi, Linux çekirdeği. Yalnızca gerçek bir terminalin işlevselliğinin sınırlı bir alt kümesini taklit eder ve ikinci terminal emülatörlerinin ek özelliklerinden yoksundur.

Bunun için bakmanız gerekenler. Xterm, lxterminal, gnome-console, konsole, eterm, wterm ve geri kalanı gibi giriş / çıkışları için X kullanan terminal emülatörlerine aşina olabilirsiniz. Daha az bilinenler, çerçeve arabellek aygıt (lar) ını ve giriş / çıkış için giriş olay aygıtlarını kullananlardır. sağlayan kullanıcı alanı sanal uç :

Bu ikincilerinden bazıları istediğinizi yapabilir.

fbterm, başlangıçta çerçeve tamponundaki her şeyi arka plan görüntüsü olarak kullanacak şekilde yapılandırılabilir. Tek yapmanız gereken, fbterm'i çalıştırmadan önce bir arka plan görüntüsü ayarlamak için görüntüleri doğrudan bir Linux framebuffer cihazında görüntülemek için diğer birkaç yardımcı programdan birini kullanmaktır. Aşağıdakiler de dahil olmak üzere bu tür birkaç araç vardır:

fbvis ve fbi çıkıştaki ekranı temizler ve Foogod'un cevabında daha ayrıntılı olarak açıklanan kıvrımları gerektirir. dfbg, yine de, kendi başına temizlemez ve bu belirli görev için daha uygun hale getirir.

daha fazla okuma


Soru, konsol için arka plan görüntüsünün nasıl oluşturulacağıyla ilgili sorular sordu. Yanıtınız yalnızca olası çözümleri listeler. Bu yüzden diğer cevaba ödül verdim, ancak verdiğiniz bilgi zenginliği için teşekkür ederim. Benim oyum var.
Sergiy Kolodyazhnyy

4

Foogod'un yanıtı benim için işe yaramasa da, çözümün yarısını sağlayarak (çerçeve arabellek verilerini okuyarak beni doğru yöne götürdü) fbi TTY ekranında bir resim gösteriliyorken ). Bu yüzden cevabını ödül olarak verdim.

Körük başlatmayı kolaylaştıran bir komut dosyasıdır fbterm tek bir komut satırı argümanı olarak görüntünün kısmi yoluyla

kullanım

Komut dosyası, $PATHdeğişkeninizde listelenen bir dizine kaydedilmelidir . Tercihen kişisel $HOME/binklasörünüzde olmalıdır. PATH'e nasıl dizin eklenir? Kişisel nasıl ekleneceğini açıklama üzerine binTo $PATHancak adlı bir dizin oluşturma binev dizininde eklemek için yeterlidirPATH yeniden giriş yapıldığında.

Komut dosyasının yürütülebilir izni de olmalıdır; ile ayarlayabilirsiniz chmod +x /path/to/script.sh.

Son olarak, sudookuma ve yazma için kök erişimine izin vermek için birlikte çalıştırılmalıdır /dev/fb0.

Komut Dosyası Kaynağı

Ayrıca Github veri havuzumda da mevcut .

#!/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 

ilave bilgi

Kullanıcının mutlaka kullanması gerekmediği ortaya çıkıyor sudo; /dev/fb0ait videogrubun, bu yüzden kullanıcılar sadece olabilir bu gruba eklemek kendilerini kullanarak

sudo usermod -a -G video $USER

Böylece, yukarıdaki komut dosyasında kök denetimleri, özellikle de [ "$(whoami)" != "root" ] ||kısmen geçersiz hale gelir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.