Làm thế nào để ngăn con trỏ nhấp nháy


22

Làm cách nào để khiến con trỏ dừng blinkingkhi ở TTY ? (hoặc bất cứ nơi nào khác).

TIỀN THƯỞNG Điểm cho một cài đặt phổ quát khiến con trỏ nhấp nháy gần như ở mọi nơi.

Câu trả lời:


17

Điều này cung cấp cho bạn một khối màu vàng đặc (không nhấp nháy) dưới dạng con trỏ:

echo -n -e '\e[?17;14;224c'

Để biết thêm thông tin, hãy kiểm tra các tài liệu tham khảo này: LinuxgazetteEmacsWiki cũng như tệp /usr/src/linux/Documentation/VGA-softcursor.txt(nếu có trên hệ thống của bạn)


cái này hoạt động với tôi cho đến khi tôi sử dụng vim, sau đó khi tôi thoát con trỏ trở lại nhấp nháy :(
mulllhausen

Và điều này mang đến cho bạn một khối trắng không chớp mắtecho -e '\033[?16;0;224c'
Utku

thx, tôi có thể thay đổi số cuối cùng (224) thành 244 để có được khối trắng vững chắc :)

Tôi không có tác dụng này trên hệ thống của mình khi chạy bash 5.0.11 trên Arch Linux
S.Goswami

26

Có một chuỗi điều khiển tiêu chuẩn để tắt con trỏ nhấp nháy trên các thiết bị đầu cuối.

printf '\033[?12l'

Tuy nhiên, nhiều thiết bị đầu cuối không thực hiện cài đặt này, vì vậy hãy đọc tiếp.

Có một thiết lập thiết bị đầu cuối tiêu chuẩn được triển khai rộng rãi hơn để chuyển đổi khả năng hiển thị của con trỏ giữa khả năng hiển thị cao, khả năng hiển thị bình thường và tàng hình. Một số thiết bị đầu cuối không tạo ra sự khác biệt giữa bình thường và cao, và không có gì đảm bảo rằng cái này hay cái kia sẽ không nhấp nháy. Trong terminfo , phát ra cvvis, cnormhoặc civischuỗi (ví dụ tput cvvis). Các mục termcap tương ứng là vs, vevi.

Các cài đặt này sẽ không tồn tại trong thiết lập lại thiết bị đầu cuối , vì vậy bạn có thể thấy rằng nó không tồn tại khi khởi chạy nhiều ứng dụng toàn màn hình. Bạn có thể khắc phục khó khăn này bằng cách thêm chuỗi thay đổi cấu hình con trỏ vào chuỗi đặt lại của thiết bị đầu cuối.

  • Trên hệ thống dựa trên terminfo sử dụng ncurses, hãy lưu cài đặt terminfo của thiết bị đầu cuối của bạn vào một tệp với infocmp >>~/etc/terminfo.txt. Chỉnh sửa mô tả để thay đổi trình tự rs1(thiết lập lại cơ bản), ví dụ thay thế rs1=\Ecbằng rs1=\Ec\E[?12l. Với một số chương trình và cài đặt, bạn cũng có thể cần phải thay đổi rs2(thiết lập lại toàn bộ). Sau đó biên dịch mô tả terminfo với tic ~/etc/terminfo.txt(phần này ghi trong thư mục $TERMINFOhoặc ~/.terminfonếu không được đặt).
  • Trên hệ thống dựa trên termcap, lấy các cài đặt termcap từ cơ sở dữ liệu termcap của bạn (thường /etc/termcap). Thay đổi is(thiết lập lại cơ bản) và rs(full reset) trình tự để nối thêm các thiết lập của bạn, ví dụ :is=\Ec\E[?12l:. Đặt TERMCAPbiến môi trường thành giá trị được chỉnh sửa (bắt đầu và kết thúc bằng :).

Một số thiết bị đầu cuối và các ứng dụng khác cung cấp cho bạn nhiều tùy chọn hơn:

  • Con trỏ xterm nhấp nháy nếu cursorBlinktài nguyên được đặt thành truehoặc -bctùy chọn được truyền trên dòng lệnh. Tỷ lệ chớp mắt có thể tùy chỉnh thông qua cursorOnTimecursorOffTimetài nguyên.
  • Một số trình giả lập thiết bị đầu cuối GUI khác có thể nhấp nháy con trỏ; kiểm tra hộp thoại cấu hình của họ.
  • Các Linux PC (VGA) giao diện điều khiển có một số thiết lập con trỏ; ý nghĩa chính xác và khả năng ứng dụng của chúng phụ thuộc vào việc triển khai VGA cơ bản (bộ đệm khung Linux hoặc thẻ video). Nếu con trỏ mặc định của bạn nhấp nháy, hãy thử tắt con trỏ phần cứng và con trỏ phần mềm bật với một cái gì đó giống như printf '\033[17;127?c'(tham số đầu tiên 17 cung cấp cho bạn con trỏ phần mềm không có con trỏ phần cứng và tham số thứ hai được đặt thành 127 làm cho video về cơ bản nghịch đảo). Xem ở trên liên quan đến thiết lập lại thiết bị đầu cuối.
  • Trong Emacs , M-x blink-cursor-modebật tắt con trỏ nhấp nháy. Đặt (blink-cursor-mode 0)trong của bạn ~/.emacsđể tắt nó. Đây là cài đặt toàn cục và không áp dụng trong thiết bị đầu cuối văn bản.

Xem thêm trang Không nhấp nháy của Juri Linkov (Jurta) để biết cách tắt nhấp nháy trong Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox, v.v.


14

Tôi thấy điều này dễ dàng hơn nếu bạn có quyền root:

~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink

Tôi đặt nó trong kịch bản khởi động máy như /etc/rc.localcho arch linux.


5

Trong linux tty, bạn có thể sử dụng chuỗi thoát "\e[?48;0;64"hoặc bất cứ thứ gì bạn thích nhưng điều này không hoạt động trong tmux / vim. Tmux / Vim ban hành lệnh "cnorm" khi khởi động mà theo mặc định có chứa a "\e[?0c". Bạn có thể thấy rằng điều này hoàn tác các hiệu ứng của cài đặt ở trên. Bạn cần thay đổi cnorm thành chuỗi trên để các ứng dụng TUI đặt lại con trỏ theo sở thích của bạn. Thông tin thêm về điều này của Gilles nhưng nếu bạn đang tìm cách khắc phục nhanh hãy thử điều này:

infocmp linux > /tmp/linux-terminfo
# Replace the last escape sequence here with your colors and settings
sed -i 's/cnorm=\\E\[?25h\\E\[?0c/cnorm=\\E[?25h\\E?48;0;64c/' /tmp/linux-terminfo
tic /tmp/linux-terminfo

Lệnh cuối cùng sẽ tạo ra terminfo mới, theo ~/.terminfođó sẽ được chọn tự động nếu bạn khởi động lại máy chủ tmux / vim.


3

Đặt

\ 033 [? 17; 0; 127c

đến biến PS1 của bạn và bạn sẽ ngừng nhấp nháy liên tục.

VÍ DỤ:

xuất PS1 = '\ 033 [? 17; 0; 127c \ u: \ w \ $'


1
Điều này sẽ (ít nhất là đối với tôi) làm hỏng các ngắt dòng thiết bị đầu cuối (tràn dòng). Sử dụng dấu ngoặc vuông, thoát: Ví dụ: BLUEBOXNOBLINK="\033[?17;0;60c"sau đóPS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
Emanuel Berg

0
sudo cp /etc/issue /etc/issue.tmp
setterm -cursor off | sudo tee /etc/issue
cat /etc/issue.tmp | sudo tee --append /etc/issue
sudo rm /etc/issue.tmp
sudo reboot

Đó là một giải pháp tuyệt vời và có lẽ có rất nhiều sự ủng hộ, nếu tác giả không quên giải thích nó ... :-)
peterh nói phục hồi Monica

1
-cursor offhoàn toàn không phải là những gì được yêu cầu, nó làm cho con trỏ biến mất ... setterm -blink offcó vẻ hứa hẹn hơn, nhưng nó ảnh hưởng đến văn bản, chứ không phải con trỏ thực tế.
mr.spuratic

setterm -cursor off; setterm -cursor onkhông hoạt động ở đây, nhưng đó là một cách giải quyết không thể chấp nhận được
Thor

0

tôi đặt

echo 0 > /sys/class/graphics/fbcon/cursor_blink

trong /etc/rc.local và tạo một dịch vụ systemd cho nó bằng các hướng dẫn trực tuyến. Tuy nhiên, tôi nhận thấy rằng đôi khi sau khi khởi động, con trỏ vẫn nhấp nháy. Sẽ rất tốt nếu biết cách chính xác để tắt vĩnh viễn con trỏ nhấp nháy thông qua sysfs trên một hệ thống systemd hiện đại, có ai có bất cứ lời khuyên nào không? Một số bản phân phối có /etc/sysfs.conf nhưng tôi đang chạy Arch và không tìm thấy tệp này trong sysfsutils hoặc các nơi khác.

Để khắc phục tạm thời, tôi đã chạy lệnh sau

sudo zsh -c 'echo -n "\033[?17;0;255c" >> /etc/issue'

Một số thử nghiệm cho thấy '255c' ở cuối hoạt động tốt hơn '127c' được liệt kê ở trên, nó tạo ra một con trỏ màu trắng thay vì màu xám.


0

Đối với bảng điều khiển Linux:

Phương án 1

Thêm -I "\033[?17;0;255c"tùy chọn cho gettycác dòng trong /etc/inittabtập tin của bạn . Làm như vậy:

  1. Mở /etc/inittabtệp bằng trình soạn thảo văn bản. Nên có dòng có chứa gettyhoặc agettyhoặc tương đương. Một ví dụ là:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Thêm -I "\033[?17;0;255c"vào mỗi gettydòng. Ví dụ, sau khi thêm -I "\033[?17;0;255c", gettydòng trên sẽ như sau:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Khởi động lại hệ thống, hoặc cách khác, giết tất cả các gettyquy trình.

Phương án 2

Một thay thế tốt hơn là đưa ESC[?17;0;255cvào /etc/issue, thay vì đặt nó vào gettydòng. Làm điều này bằng cách sử dụng vinhư sau:

  1. Mở /etc/issuebằng vi.
  2. Trên bất cứ nơi nào của /etc/issuetập tin, nhập chế độ chèn.
  3. Trong khi bạn đang ở chế độ chèn, nhấn ^V(nghĩa là Ctrlv), sau đó nhấn Esc. Các ký tự thoát bây giờ nên được chèn.
  4. Bây giờ, chèn các ký tự còn lại, đó là [?17;0;255c.

Phương án 3

Một cách khác là giữ con trỏ phần cứng (thay vì sử dụng con trỏ phần mềm) và dừng nhấp nháy con trỏ phần cứng và biến nó thành con trỏ khối. Làm như vậy:

  1. Thêm vào như sau /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Thêm ESC[?8cvào /etc/issue. Tham khảo "Phương án 2" để được hướng dẫn thực hiện việc này.

Tuy nhiên, với tùy chọn này, con trỏ không trở thành màu trắng sáng. Tôi đoán điều này chỉ có thể khi sử dụng con trỏ phần mềm.

Sau khi làm theo bất kỳ giải pháp thay thế nào trong số này, bạn sẽ có được một con trỏ khối màu trắng, không nhấp nháy.

Thêm thông tin


0

Điều này ẩn hoàn toàn con trỏ.

tput civis

Để giữ lại:

tput cnorm
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.