Cara menghentikan kursor agar tidak berkedip


22

Bagaimana cara membuat kursor berhenti blinkingketika berada di TTY ? (atau tempat lain).

BONUS Poin untuk satu pengaturan universal yang menghentikan kursor berkedip hampir di mana-mana.

Jawaban:


17

Ini memberi Anda blok kuning solid (nonblinking) sebagai kursor:

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

Untuk info lebih lanjut, periksa referensi ini: Linuxgazette dan EmacsWiki serta file /usr/src/linux/Documentation/VGA-softcursor.txt(jika ada di sistem Anda)


ini berfungsi untuk saya sampai saya menggunakan vim, lalu ketika saya keluar kursor kembali ke berkedip :(
mulllhausen

Dan ini memberi Anda blok putih solid yang tidak berkedipecho -e '\033[?16;0;224c'
Utku

thx, saya bisa mengubah angka terakhir (224) menjadi 244 untuk mendapatkan blok putih solid :)

Saya tidak memiliki efek ini pada sistem saya menjalankan bash 5.0.11 di Arch Linux
S.Goswami

26

Ada urutan kontrol standar untuk mematikan kursor yang berkedip pada terminal.

printf '\033[?12l'

Namun banyak terminal tidak menerapkan pengaturan ini, jadi baca terus.

Ada pengaturan terminal standar yang lebih banyak diterapkan untuk mengalihkan visibilitas kursor antara visibilitas tinggi, visibilitas normal, dan invisibilitas. Beberapa terminal tidak membuat perbedaan antara normal dan tinggi, dan tidak ada jaminan bahwa satu atau yang lain akan atau tidak akan berkedip. Dalam terminfo , memancarkan cvvis, cnormatau civistali (misalnya tput cvvis). Entri termcap yang sesuai adalah vs, vedan vi.

Pengaturan ini tidak akan bertahan dari reset terminal , sehingga Anda mungkin menemukan bahwa itu tidak selamat dari peluncuran banyak aplikasi layar penuh. Anda dapat mengatasi kesulitan ini dengan menambahkan urutan perubahan konfigurasi kursor ke string reset terminal Anda.

  • Pada sistem berbasis terminfo menggunakan ncurses, simpan pengaturan terminfo terminal Anda ke file infocmp >>~/etc/terminfo.txt. Edit deskripsi untuk mengubah urutan rs1(reset dasar), misalnya ganti rs1=\Ecdengan rs1=\Ec\E[?12l. Dengan beberapa program dan pengaturan, Anda mungkin perlu mengubah rs2(reset penuh) juga. Kemudian kompilasi deskripsi terminfo dengan tic ~/etc/terminfo.txt(ini menulis di bawah direktori $TERMINFO, atau ~/.terminfojika tidak disetel).
  • Pada sistem berbasis termcap, ambil pengaturan termcap dari database termcap Anda (biasanya /etc/termcap). Ubah urutan is(reset dasar) dan rs(reset penuh) untuk menambahkan pengaturan Anda, misalnya :is=\Ec\E[?12l:. Setel TERMCAPvariabel lingkungan ke nilai yang diedit (dimulai dan diakhiri dengan :).

Beberapa terminal dan aplikasi lain memberi Anda lebih banyak opsi:

  • The xterm berkedip kursor jika cursorBlinksumber daya diatur ke trueatau -bcopsi dilewatkan pada baris perintah. Tingkat kedipan dapat disesuaikan melalui cursorOnTimedan cursorOffTimesumber daya.
  • Beberapa emulator terminal GUI lainnya dapat mengedipkan kursor; centang kotak dialog konfigurasi mereka.
  • The Linux PC (VGA) konsol memiliki sejumlah pengaturan kursor; makna dan penerapannya yang tepat tergantung pada implementasi VGA yang mendasarinya (Linux framebuffer atau kartu video). Jika kursor default Anda berkedip, coba matikan kursor perangkat keras dan kursor perangkat lunak aktif dengan sesuatu seperti printf '\033[17;127?c'(parameter pertama 17 memberi Anda kursor perangkat lunak tanpa kursor perangkat keras, dan parameter kedua yang diatur ke 127 membuatnya pada dasarnya membalikkan video). Lihat di atas tentang pengaturan ulang terminal.
  • Di Emacs , M-x blink-cursor-modematikan kursor yang berkedip. Masukkan (blink-cursor-mode 0)Anda ~/.emacsuntuk mematikannya. Ini adalah pengaturan global dan tidak berlaku di terminal teks.

Lihat juga halaman No Blinking Juri Linkov (Jurta) untuk cara mematikan blinking di Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox, dan banyak lagi.


14

Saya menemukan ini lebih mudah jika Anda memiliki izin root:

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

Saya memasukkannya ke dalam skrip startup mesin seperti /etc/rc.localuntuk arch linux.


5

Di linux tty Anda dapat menggunakan urutan escape "\e[?48;0;64"atau apa pun yang Anda suka tetapi ini tidak bekerja di tmux / vim. Tmux / Vim mengeluarkan perintah "cnorm" saat startup yang secara default berisi a "\e[?0c". Anda dapat melihat bahwa ini membatalkan efek pengaturan di atas. Anda perlu mengubah cnorm ke urutan di atas agar aplikasi TUI mengatur ulang kursor ke preferensi Anda. Info lebih lanjut tentang ini oleh Gilles tetapi jika Anda mencari perbaikan cepat coba ini:

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

Perintah terakhir akan menghasilkan terminfo baru di ~/.terminfomana harus diambil secara otomatis jika Anda me-restart server tmux / vim.


3

Taruh

\ 033 [? 17; 0; 127c

ke variabel PS1 Anda dan Anda akan berhenti berkedip terus-menerus.

MISALNYA:

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


1
Ini akan (setidaknya bagi saya) mengacaukan jeda terminal (on line overflow). Gunakan tanda kurung siku, lolos: Sebagai contoh, BLUEBOXNOBLINK="\033[?17;0;60c", makaPS1="\[$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

Ini adalah solusi yang luar biasa dan mungkin mendapatkan banyak upvotes, jika penulis tidak lupa menjelaskannya ... :-)
peterh mengatakan pulihkan Monica

1
-cursor offtidak cukup apa yang diminta sama sekali, itu membuat kursor menghilang ... setterm -blink offtampaknya lebih menjanjikan, tetapi itu mempengaruhi teks, bukan kursor yang sebenarnya.
mr.spuratic

setterm -cursor off; setterm -cursor ontidak bekerja di sini, tetapi ini adalah solusi yang tidak dapat diterima
Thor

0

Saya menempatkan

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

di /etc/rc.local dan buat layanan systemd untuknya menggunakan instruksi online. Namun, saya perhatikan bahwa kadang-kadang setelah booting kursor masih berkedip. Akan lebih baik untuk mengetahui cara yang benar untuk mematikan kursor yang berkedip secara permanen melalui sysfs pada sistem systemd modern, apakah ada yang punya tips? Beberapa distribusi memiliki /etc/sysfs.conf tetapi saya menjalankan Arch dan tidak menemukan file ini di sysfsutils atau di tempat lain.

Sebagai perbaikan sementara saya menjalankan perintah berikut

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

Beberapa percobaan menunjukkan bahwa '255c' pada akhirnya berfungsi lebih baik daripada '127c' yang tercantum di atas, menghasilkan kursor putih daripada abu-abu.


0

Untuk konsol Linux:

Alternatif 1

Tambahkan -I "\033[?17;0;255c"opsi ke gettybaris di /etc/inittabfile Anda . Untuk melakukannya:

  1. Buka /etc/inittabfile dengan editor teks. Harus ada garis yang berisi gettyatau agettyatau serupa. Contohnya adalah:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Tambahkan -I "\033[?17;0;255c"ke setiap gettybaris. Sebagai contoh, setelah menambahkan -I "\033[?17;0;255c", gettybaris di atas akan terlihat sebagai berikut:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Mulai ulang sistem, atau jika tidak, bunuh semua gettyproses.

Alternatif 2

Alternatif yang lebih baik adalah dengan menempatkan ESC[?17;0;255cdi /etc/issue, bukannya menempatkan ke gettyjalur. Melakukan ini menggunakan viadalah sebagai berikut:

  1. Buka /etc/issuemenggunakan vi.
  2. Di mana saja dari /etc/issuefile, masukkan mode insert
  3. Saat Anda dalam mode sisipkan, tekan ^V(yaitu, Ctrlv), lalu tekan Esc. Karakter pelarian sekarang harus dimasukkan.
  4. Sekarang, masukkan karakter yang tersisa, yaitu [?17;0;255c.

Alternatif 3

Alternatif lain adalah menjaga kursor perangkat keras (alih-alih menggunakan kursor perangkat lunak) dan berhenti berkedip dari kursor perangkat keras dan menjadikannya sebagai kursor blok. Untuk melakukannya:

  1. Tambahkan yang berikut ke /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Tambahkan ESC[?8cke /etc/issue. Lihat "Alternatif 2" untuk instruksi melakukan hal ini.

Namun, dengan opsi ini, kursor tidak menjadi putih terang. Saya kira ini hanya mungkin dengan menggunakan kursor perangkat lunak.

Setelah mengikuti salah satu dari alternatif ini, Anda akan mendapatkan kursor blok putih, tidak berkedip.

Informasi lebih lanjut


0

Ini sepenuhnya menyembunyikan kursor.

tput civis

Untuk mengembalikan:

tput cnorm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.