Làm cách nào tôi có thể tùy chỉnh nền bảng điều khiển toàn màn hình (TTY)?


17

Tôi đã từng sử dụng bảng điều khiển toàn màn hình (được mở bằng Ctrl+ Alt+ F1... F6) và đã có một ý tưởng rằng tôi muốn thử trang trí nó bằng một "hình nền" của một loại (dĩ nhiên là khá tối và đơn điệu để nó không làm giảm khả năng đọc), có lẽ điều này có thể trông và cảm thấy tốt (hoặc không, nhưng tôi cần phải thử). Sẽ tốt hơn nữa nếu tôi có thể đặt các hình ảnh khác nhau làm nền của bảng điều khiển khác nhau (một cho Ctrl+ Alt+ F1, một cho Ctrl+ Alt+ F2vv).

Thực tế các bảng điều khiển có độ phân giải cao hơn nhiều mà chế độ văn bản thuần túy cung cấp cho thấy chế độ đồ họa chính thức được sử dụng cho chúng và mọi thứ đều có thể. Nhưng bằng cách nào?


2
Không thể nào. Bảng điều khiển ảo chỉ là văn bản.
Sergiy Kolodyazhnyy

5
@Serg Tôi đã sử dụng các chế độ chỉ có văn bản kể từ thời Linux thậm chí không tồn tại - tin tôi đi, tôi có thể phân biệt chế độ văn bản thực với mô phỏng đồ họa của nó. Nhiều người khó có thể tưởng tượng điều này ngày nay nhưng tôi thậm chí đã xem phim trong các máy chơi game không có máy chủ X nào được cài đặt trong suốt Linux 2.4 ngày. Điều này khiến tôi nghi ngờ điều này thực sự là không thể.
Ivan

1
Được rồi, hãy để tôi tự sửa: Tôi tin vào việc xem hình ảnh và phim trong bảng điều khiển, bởi vì một cái gì đó gọi là framebufferthiết bị, nhưng với màn hình đó bị chiếm dụng với đầu ra của một số chương trình, chẳng hạn như fbi. TTY trong và bản thân nó vẫn là một thiết bị chỉ có văn bản
Sergiy Kolodyazhnyy

2
Tôi sẽ đặt tiền thưởng cho câu hỏi của bạn một khi nó đủ điều kiện. Tôi thực sự quan tâm
Sergiy Kolodyazhnyy

1

Câu trả lời:


12

Tôi khá chắc chắn rằng trình điều khiển bảng điều khiển Linux không tích hợp khả năng này, tuy nhiên có một ứng dụng được gọi là fbtermcó thể làm điều này. Để làm cho hình ảnh nền hoạt động, bạn cũng sẽ cần một tiện ích có thể hiển thị hình ảnh trên bộ đệm khung như fbi:

sudo apt-get install fbterm fbi

fbtermkhông thực sự đọc hoặc hiển thị hình ảnh nền, nó hy vọng một số chương trình khác sẽ thiết lập hình nền trên màn hình trước khi nó bắt đầu. Có những hướng dẫn trong fbtermtrang hướng dẫn về cách thực hiện việc này bằng cách sử dụng fbv, một tiện ích hoàn toàn cổ xưa và không được hỗ trợ mà tôi thậm chí không thể biên dịch trên hệ thống Ubuntu hiện đại. fbilà trình xem hình ảnh gọn gàng và đẹp hơn cho bộ đệm khung, nhưng thật không may, không có chức năng "thiết lập và thoát" của đơn giản hơn fbv, và do đó sẽ can thiệp fbtermnếu bạn cố gắng sử dụng trực tiếp. Tuy nhiên, tôi đã có thể đưa ra một giải pháp thay thế hoạt động:

Trước tiên, bạn sẽ cần sử dụng fbicathiển thị hình ảnh bạn muốn và sau đó chuyển nó thành tệp hình ảnh "định dạng thô". Là root, trong bảng điều khiển bộ đệm khung, chạy:

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

(Điều này sẽ hiển thị hình ảnh trong vài giây và sau đó thoát ra, sau khi lưu kết quả vào tệp nifty-background.fbimg. Thay thế nifty-background.fbimgnifty-background.pngbằng bất kỳ tên tệp nào bạn muốn, tất nhiên.)

Phần đầu tiên của lệnh chờ trong 1 giây trước khi chuyển nội dung bộ đệm khung thành tệp. Đồng thời, phần thứ hai (sau &) khởi chạy fbiđể hiển thị hình ảnh trên bộ đệm khung, để khi lệnh mèo bắt đầu thực hiện (1 giây sau), có một hình ảnh ở đó để đổ. Lý do chúng theo thứ tự đó là vì tôi thấy fbicó vấn đề nếu nó không chạy ở nền trước, có nghĩa là nó phải là lệnh cuối cùng trong danh sách.

Từ đó trở đi, bất cứ khi nào bạn muốn chạy fbterm, bạn có thể bắt đầu như vậy (bạn có thể muốn tạo một tập lệnh bao bọc nhỏ):

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

7

Tôi có thể phân biệt chế độ văn bản thực với mô phỏng đồ họa của nó.

Đó là một trong những cách mà người quan sát có thể phân biệt một BSOD thực sự trên Windows với các hành động của trình bảo vệ màn hình BSOD đùa mà đã làm tròn một thập kỷ trước. Việc hiển thị các ký tự đồ họa khối bằng phần cứng bộ điều hợp hiển thị ở chế độ đồ họa khác biệt tinh tế với các ký tự được tạo bởi phần cứng bộ điều hợp hiển thị ở chế độ văn bản.

Có, bộ điều hợp hiển thị ở chế độ đồ họa. Nó đã được cách này trong một thời gian khá lâu, bây giờ. Nó luôn luôn là như vậy trên các hệ thống không có phần cứng bộ điều hợp hiển thị PC. Trong những năm đầu của Linux, trên PC tương thích với bàn điều khiển sẽ có phần cứng bộ điều hợp hiển thị ở chế độ văn bản. Nhưng việc sử dụng này đã âm thầm ăn mòn đến gần như không có gì. Hỗ trợ Unicode cho hầu hết người dùng hiện nay yêu cầu bộ glyph lớn hơn phần cứng chế độ văn bản. Phần sụn máy (tất nhiên) sử dụng chế độ đồ họa cho màn hình giật gân (có hình ảnh đẹp và logo công ty), cũng như trình tải Linux và khởi tạo hệ thống.

Có một chương trình giả lập thiết bị đầu cuối được tích hợp trong nhân Linux. Nó nằm trên đỉnh của bộ đệm khung và hệ thống con sự kiện đầu vào, nó sử dụng các giao diện kernel bên trong để truy cập. Nó tự trình bày cho các hệ thống chế độ ứng dụng như một loạt các thiết bị đầu cuối ảo kernel , /dev/tty1v.v.

Chương trình này khá hạn chế so với các trình giả lập đầu cuối chạy bên ngoài nhân Linux, như các chương trình ứng dụng thông thường. Nó chỉ mô phỏng một tập hợp con giới hạn của chức năng của một thiết bị đầu cuối thực sự và nó thiếu các tính năng bổ sung của các trình giả lập thiết bị đầu cuối sau.

Đó là những thứ mà bạn cần phải tìm kiếm cho điều này. Bạn có thể quen với các trình giả lập thiết bị đầu cuối sử dụng X cho đầu vào / đầu ra của chúng, chẳng hạn như xterm, lxterminal, gnome-console, konsole, eterm, wterm và phần còn lại. Ít được biết đến là những người sử dụng (các) thiết bị bộ đệm khung và các thiết bị sự kiện đầu vào cho đầu vào / đầu ra của họ. cung cấp thiết bị đầu cuối ảo không gian người dùng :

Một số trong số này có thể làm những gì bạn muốn.

fbterm có thể được cấu hình để sử dụng bất cứ thứ gì có trong bộ đệm khung khi khởi động làm hình nền. Vì vậy, tất cả những gì cần làm là sử dụng một trong một số tiện ích khác để hiển thị hình ảnh trực tiếp lên bộ đệm khung Linux, thiết lập hình ảnh nền trước khi chạy fbterm. Có một số công cụ như vậy, bao gồm:

fbvis và fbi xóa màn hình khi thoát và yêu cầu các kết luận được giải thích chi tiết hơn trong câu trả lời của Foogod. dfbg, mặc dù, không tự dọn dẹp, làm cho nó phù hợp hơn cho nhiệm vụ cụ thể này.

đọc thêm


Câu hỏi hỏi về cách tạo hình nền cho giao diện điều khiển. Câu trả lời của bạn chỉ liệt kê các giải pháp tiềm năng. Do đó tôi thưởng tiền thưởng cho câu trả lời khác, tuy nhiên, tôi cảm ơn bạn vì sự giàu có của thông tin bạn đã cung cấp. Bạn có upvote của tôi.
Sergiy Kolodyazhnyy

4

Mặc dù câu trả lời của Foogod không hiệu quả với tôi, nhưng nó đã đưa tôi đi đúng hướng, bằng cách cung cấp một nửa giải pháp (cụ thể là đọc dữ liệu bộ đệm khung, trong khi fbihiển thị hình ảnh trên màn hình TTY). Vì vậy, tôi đã trao phần thưởng cho câu trả lời của anh ấy.

Bellow là một tập lệnh giúp dễ dàng khởi chạy fbtermvới một phần đường dẫn đến hình ảnh dưới dạng một đối số dòng lệnh

Sử dụng

Script phải được lưu trong một thư mục được liệt kê trong $PATHbiến của bạn . Tốt nhất là nó phải nằm trong $HOME/binthư mục cá nhân của bạn . Tham khảo Làm thế nào để thêm một thư mục vào PATH? về giải thích làm thế nào để thêm cá nhân của bạn binvào $PATH, nhưng tạo một thư mục được gọi bintrong thư mục chính của bạn là đủ để thêm nó PATHvào khi đăng nhập lại.

Kịch bản cũng phải có sự cho phép thực thi; bạn có thể thiết lập nó với chmod +x /path/to/script.sh.

Cuối cùng, nó phải được chạy với sudo, để cho phép truy cập root để đọc và ghi /dev/fb0.

Nguồn kịch bản

Cũng có sẵn trên kho Github của tôi.

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

thông tin bổ sung

Hóa ra người dùng không nhất thiết phải sử dụng sudo; /dev/fb0thuộc về videonhóm, vì vậy người dùng chỉ cần thêm chính họ vào nhóm đó bằng cách sử dụng

sudo usermod -a -G video $USER

Do đó, việc kiểm tra root trong đoạn script trên trở nên lỗi thời, cụ thể [ "$(whoami)" != "root" ] ||là một phần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.