faq.rst 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. Frequently Asked Questions
  2. ==============================
  3. .. highlight:: sh
  4. Some special symbols are rendered small/truncated in kitty?
  5. -----------------------------------------------------------
  6. The number of cells a Unicode character takes up are controlled by the Unicode
  7. standard. All characters are rendered in a single cell unless the Unicode
  8. standard says they should be rendered in two cells. When a symbol does not fit,
  9. it will either be rescaled to be smaller or truncated (depending on how much
  10. extra space it needs). This is often different from other terminals which just
  11. let the character overflow into neighboring cells, which is fine if the
  12. neighboring cell is empty, but looks terrible if it is not.
  13. Some programs, like Powerline, vim with fancy gutter symbols/status-bar, etc.
  14. use Unicode characters from the private use area to represent symbols. Often
  15. these symbols are wide and should be rendered in two cells. However, since
  16. private use area symbols all have their width set to one in the Unicode
  17. standard, |kitty| renders them either smaller or truncated. The exception is if
  18. these characters are followed by a space or en-space (U+2002) in which case
  19. kitty makes use of the extra cell to render them in two cells. This behavior
  20. can be turned off for specific symbols using :opt:`narrow_symbols`.
  21. Using a color theme with a background color does not work well in vim?
  22. -----------------------------------------------------------------------
  23. Sadly, vim has very poor out-of-the-box detection for modern terminal features.
  24. Furthermore, it `recently broke detection even more <https://github.com/vim/vim/issues/11729>`__.
  25. It kind of, but not really, supports terminfo, except it overrides it with its own hard-coded
  26. values when it feels like it. Worst of all, it has no ability to detect modern
  27. features not present in terminfo, at all, even security sensitive ones like
  28. bracketed paste.
  29. Thankfully, probably as a consequence of this lack of detection, vim allows users to
  30. configure these low level details. So, to make vim work well with any modern
  31. terminal, including kitty, add the following to your :file:`~/.vimrc`.
  32. .. code-block:: vim
  33. " Mouse support
  34. set mouse=a
  35. set ttymouse=sgr
  36. set balloonevalterm
  37. " Styled and colored underline support
  38. let &t_AU = "\e[58:5:%dm"
  39. let &t_8u = "\e[58:2:%lu:%lu:%lum"
  40. let &t_Us = "\e[4:2m"
  41. let &t_Cs = "\e[4:3m"
  42. let &t_ds = "\e[4:4m"
  43. let &t_Ds = "\e[4:5m"
  44. let &t_Ce = "\e[4:0m"
  45. " Strikethrough
  46. let &t_Ts = "\e[9m"
  47. let &t_Te = "\e[29m"
  48. " Truecolor support
  49. let &t_8f = "\e[38:2:%lu:%lu:%lum"
  50. let &t_8b = "\e[48:2:%lu:%lu:%lum"
  51. let &t_RF = "\e]10;?\e\\"
  52. let &t_RB = "\e]11;?\e\\"
  53. " Bracketed paste
  54. let &t_BE = "\e[?2004h"
  55. let &t_BD = "\e[?2004l"
  56. let &t_PS = "\e[200~"
  57. let &t_PE = "\e[201~"
  58. " Cursor control
  59. let &t_RC = "\e[?12$p"
  60. let &t_SH = "\e[%d q"
  61. let &t_RS = "\eP$q q\e\\"
  62. let &t_SI = "\e[5 q"
  63. let &t_SR = "\e[3 q"
  64. let &t_EI = "\e[1 q"
  65. let &t_VS = "\e[?12l"
  66. " Focus tracking
  67. let &t_fe = "\e[?1004h"
  68. let &t_fd = "\e[?1004l"
  69. execute "set <FocusGained>=\<Esc>[I"
  70. execute "set <FocusLost>=\<Esc>[O"
  71. " Window title
  72. let &t_ST = "\e[22;2t"
  73. let &t_RT = "\e[23;2t"
  74. " vim hardcodes background color erase even if the terminfo file does
  75. " not contain bce. This causes incorrect background rendering when
  76. " using a color theme with a background color in terminals such as
  77. " kitty that do not support background color erase.
  78. let &t_ut=''
  79. These settings must be placed **before** setting the ``colorscheme``. It is
  80. also important that the value of the vim ``term`` variable is not changed
  81. after these settings.
  82. I get errors about the terminal being unknown or opening the terminal failing or functional keys like arrow keys don't work?
  83. -------------------------------------------------------------------------------------------------------------------------------
  84. These issues all have the same root cause: the kitty terminfo files not being
  85. available. The most common way this happens is SSHing into a computer that does
  86. not have the kitty terminfo files. The simplest fix for that is running::
  87. kitten ssh myserver
  88. It will automatically copy over the terminfo files and also magically enable
  89. :doc:`shell integration </shell-integration>` on the remote machine.
  90. This :doc:`ssh kitten <kittens/ssh>` takes all the same command line arguments
  91. as :program:`ssh`, you can alias it to something small in your shell's rc files
  92. to avoid having to type it each time::
  93. alias s="kitten ssh"
  94. If this does not work, see :ref:`manual_terminfo_copy` for alternative ways to
  95. get the kitty terminfo files onto a remote computer.
  96. The next most common reason for this is if you are running commands as root
  97. using :program:`sudo` or :program:`su`. These programs often filter the
  98. :envvar:`TERMINFO` environment variable which is what points to the kitty
  99. terminfo files.
  100. First, make sure the :envvar:`TERM` is set to ``xterm-kitty`` in the sudo
  101. environment. By default, it should be automatically copied over.
  102. If you are using a well maintained Linux distribution, it will have a
  103. ``kitty-terminfo`` package that you can simply install to make the kitty
  104. terminfo files available system-wide. Then the problem will no longer occur.
  105. Alternately, you can configure :program:`sudo` to preserve :envvar:`TERMINFO`
  106. by running ``sudo visudo`` and adding the following line::
  107. Defaults env_keep += "TERM TERMINFO"
  108. If none of these are suitable for you, you can run sudo as ::
  109. sudo TERMINFO="$TERMINFO"
  110. This will make :envvar:`TERMINFO` available
  111. in the sudo environment. Create an alias in your shell rc files to make this
  112. convenient::
  113. alias sudo="sudo TERMINFO=\"$TERMINFO\""
  114. If you have double width characters in your prompt, you may also need to
  115. explicitly set a UTF-8 locale, like::
  116. export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
  117. I cannot use the key combination X in program Y?
  118. -------------------------------------------------------
  119. First, run::
  120. kitten show-key -m kitty
  121. Press the key combination X. If the kitten reports the key press
  122. that means kitty is correctly sending the key press to terminal programs.
  123. You need to report the issue to the developer of the terminal program. Most
  124. likely they have not added support for :doc:`/keyboard-protocol`.
  125. If the kitten does not report it, it means that the key is bound to some action
  126. in kitty. You can unbind it in :file:`kitty.conf` with:
  127. .. code-block:: conf
  128. map X no_op
  129. Here X is the keys you press on the keyboard. So for example
  130. :kbd:`ctrl+shift+1`.
  131. How do I change the colors in a running kitty instance?
  132. ------------------------------------------------------------
  133. The easiest way to do it is to use the :doc:`themes kitten </kittens/themes>`,
  134. to choose a new color theme. Simply run::
  135. kitten themes
  136. And choose your theme from the list.
  137. You can also define keyboard shortcuts to set colors, for example::
  138. map f1 set_colors --configured /path/to/some/config/file/colors.conf
  139. Or you can enable :doc:`remote control <remote-control>` for |kitty| and use
  140. :ref:`at-set-colors`. The shortcut mapping technique has the same syntax as the
  141. remote control command, for details, see :ref:`at-set-colors`.
  142. To change colors when SSHing into a remote host, use the :opt:`color_scheme
  143. <kitten-ssh.color_scheme>` setting for the :doc:`ssh kitten <kittens/ssh>`.
  144. Additionally, You can use the
  145. `OSC terminal escape codes <https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands>`__
  146. to set colors. Examples of using OSC escape codes to set colors::
  147. Change the default foreground color:
  148. printf '\x1b]10;#ff0000\x1b\\'
  149. Change the default background color:
  150. printf '\x1b]11;blue\x1b\\'
  151. Change the cursor color:
  152. printf '\x1b]12;blue\x1b\\'
  153. Change the selection background color:
  154. printf '\x1b]17;blue\x1b\\'
  155. Change the selection foreground color:
  156. printf '\x1b]19;blue\x1b\\'
  157. Change the nth color (0 - 255):
  158. printf '\x1b]4;n;green\x1b\\'
  159. You can use various syntaxes/names for color specifications in the above
  160. examples. See `XParseColor <https://linux.die.net/man/3/xparsecolor>`__
  161. for full details.
  162. If a ``?`` is given rather than a color specification, kitty will respond
  163. with the current value for the specified color.
  164. How do I specify command line options for kitty on macOS?
  165. ---------------------------------------------------------------
  166. Apple does not want you to use command line options with GUI applications. To
  167. workaround that limitation, |kitty| will read command line options from the file
  168. :file:`<kitty config dir>/macos-launch-services-cmdline` when it is launched
  169. from the GUI, i.e. by clicking the |kitty| application icon or using
  170. ``open -a kitty``. Note that this file is *only read* when running via the GUI.
  171. You can, of course, also run |kitty| from a terminal with command line options,
  172. using: :file:`/Applications/kitty.app/Contents/MacOS/kitty`.
  173. And within |kitty| itself, you can always run |kitty| using just ``kitty`` as it
  174. cleverly adds itself to the :envvar:`PATH`.
  175. I catted a binary file and now kitty is hung?
  176. -----------------------------------------------
  177. **Never** output unknown binary data directly into a terminal.
  178. Terminals have a single channel for both data and control. Certain bytes
  179. are control codes. Some of these control codes are of arbitrary length, so if
  180. the binary data you output into the terminal happens to contain the starting
  181. sequence for one of these control codes, the terminal will hang waiting for the
  182. closing sequence. Press :sc:`reset_terminal` to reset the terminal.
  183. If you do want to cat unknown data, use ``cat -v``.
  184. kitty is not able to use my favorite font?
  185. ---------------------------------------------
  186. |kitty| achieves its stellar performance by caching alpha masks of each rendered
  187. character on the GPU, and rendering them all in parallel. This means it is a
  188. strictly character cell based display. As such it can use only monospace fonts,
  189. since every cell in the grid has to be the same size. Furthermore, it needs
  190. fonts to be freely resizable, so it does not support bitmapped fonts.
  191. .. note::
  192. If you are trying to use a font patched with `Nerd Fonts
  193. <https://nerdfonts.com/>`__ symbols, don't do that as patching destroys
  194. fonts. There is no need, simply install the standalone ``Symbols Nerd Font Mono``
  195. (the file :file:`NerdFontsSymbolsOnly.tar.xz` from the `Nerd Fonts releases page
  196. <https://github.com/ryanoasis/nerd-fonts/releases>`__). kitty should pick up
  197. symbols from it automatically, and you can tell it to do so explicitly in
  198. case it doesn't with the :opt:`symbol_map` directive::
  199. # Nerd Fonts v3.2.0
  200. symbol_map U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d7,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+ed00-U+efc1,U+f000-U+f2ff,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f533,U+f0001-U+f1af0 Symbols Nerd Font Mono
  201. Those Unicode symbols not in the `Unicode private use areas
  202. <https://en.wikipedia.org/wiki/Private_Use_Areas>`__ are
  203. not included.
  204. If your font is not listed in ``kitten choose-fonts`` it means that it is not
  205. monospace or is a bitmapped font. On Linux you can list all monospace fonts
  206. with::
  207. fc-list : family spacing outline scalable | grep -e spacing=100 -e spacing=90 | grep -e outline=True | grep -e scalable=True
  208. Note that the spacing property is calculated by fontconfig based on actual glyph
  209. widths in the font. If for some reason fontconfig concludes your favorite
  210. monospace font does not have ``spacing=100`` you can override it by using the
  211. following :file:`~/.config/fontconfig/fonts.conf`::
  212. <?xml version="1.0"?>
  213. <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  214. <fontconfig>
  215. <match target="scan">
  216. <test name="family">
  217. <string>Your Font Family Name</string>
  218. </test>
  219. <edit name="spacing">
  220. <int>100</int>
  221. </edit>
  222. </match>
  223. </fontconfig>
  224. After creating (or modifying) this file, you may need to run the following
  225. command to rebuild your fontconfig cache::
  226. fc-cache -r
  227. Then, the font will be available in ``kitten choose-fonts``.
  228. How can I assign a single global shortcut to bring up the kitty terminal?
  229. -----------------------------------------------------------------------------
  230. Bringing up applications on a single key press is the job of the window
  231. manager/desktop environment. For ways to do it with kitty (or indeed any
  232. terminal) in different environments,
  233. see :iss:`here <45>`.
  234. I do not like the kitty icon!
  235. -------------------------------
  236. There are many alternate icons available, click on an icon to visit its
  237. homepage:
  238. .. image:: https://github.com/k0nserv/kitty-icon/raw/main/kitty.iconset/icon_256x256.png
  239. :target: https://github.com/k0nserv/kitty-icon
  240. :width: 256
  241. .. image:: https://github.com/DinkDonk/kitty-icon/raw/main/kitty-dark.png
  242. :target: https://github.com/DinkDonk/kitty-icon
  243. :width: 256
  244. .. image:: https://github.com/DinkDonk/kitty-icon/raw/main/kitty-light.png
  245. :target: https://github.com/DinkDonk/kitty-icon
  246. :width: 256
  247. .. image:: https://github.com/hristost/kitty-alternative-icon/raw/main/kitty_icon.png
  248. :target: https://github.com/hristost/kitty-alternative-icon
  249. :width: 256
  250. .. image:: https://github.com/igrmk/whiskers/raw/main/whiskers.svg
  251. :target: https://github.com/igrmk/whiskers
  252. :width: 256
  253. .. image:: https://github.com/samholmes/whiskers/raw/main/whiskers.png
  254. :target: https://github.com/samholmes/whiskers
  255. :width: 256
  256. .. image:: https://github.com/eccentric-j/eccentric-icons/raw/main/icons/kitty-terminal/2d/kitty-preview.png
  257. :target: https://github.com/eccentric-j/eccentric-icons
  258. :width: 256
  259. .. image:: https://github.com/eccentric-j/eccentric-icons/raw/main/icons/kitty-terminal/3d/kitty-preview.png
  260. :target: https://github.com/eccentric-j/eccentric-icons
  261. :width: 256
  262. .. image:: https://github.com/sodapopcan/kitty-icon/raw/main/kitty.app.png
  263. :target: https://github.com/sodapopcan/kitty-icon
  264. :width: 256
  265. On macOS and X11 you can put :file:`kitty.app.icns` (macOS only) or :file:`kitty.app.png` in the
  266. :ref:`kitty configuration directory <confloc>`, and this icon will be applied
  267. automatically at startup. On X11, this will set the icon for kitty windows.
  268. Unfortunately, on macOS, Apple's Dock does not change its cached icon so the
  269. custom icon will revert when kitty is quit. Run the following to force the Dock
  270. to update its cached icons:
  271. .. code-block:: sh
  272. rm /var/folders/*/*/*/com.apple.dock.iconcache; killall Dock
  273. If you prefer not to keep a custom icon in the kitty config folder, on macOS, you can
  274. also set it with the following command:
  275. .. code-block:: sh
  276. # Set kitty.icns as the icon for currently running kitty
  277. kitty +runpy 'from kitty.fast_data_types import cocoa_set_app_icon; import sys; cocoa_set_app_icon(*sys.argv[1:]); print("OK")' kitty.icns
  278. # Set the icon for app bundle specified by the path
  279. kitty +runpy 'from kitty.fast_data_types import cocoa_set_app_icon; import sys; cocoa_set_app_icon(*sys.argv[1:]); print("OK")' /path/to/icon.png /Applications/kitty.app
  280. You can also change the icon manually by following the steps:
  281. #. Find :file:`kitty.app` in the Applications folder, select it and press :kbd:`⌘+I`
  282. #. Drag :file:`kitty.icns` onto the application icon in the kitty info pane
  283. #. Delete the icon cache and restart Dock:
  284. .. code-block:: sh
  285. rm /var/folders/*/*/*/com.apple.dock.iconcache; killall Dock
  286. How do I map key presses in kitty to different keys in the terminal program?
  287. --------------------------------------------------------------------------------------
  288. This is accomplished by using ``map`` with :ac:`send_key` in :file:`kitty.conf`.
  289. For example::
  290. map alt+s send_key ctrl+s
  291. This causes the program running in kitty to receive the :kbd:`ctrl+s` key when
  292. you press the :kbd:`alt+s` key. To see this in action, run::
  293. kitten show-key -m kitty
  294. Which will print out what key events it receives. To send arbitrary text rather
  295. than a key press, see :sc:`send_text <send_text>` instead.
  296. How do I open a new window or tab with the same working directory as the current window?
  297. --------------------------------------------------------------------------------------------
  298. In :file:`kitty.conf` add the following::
  299. map f1 launch --cwd=current
  300. map f2 launch --cwd=current --type=tab
  301. Pressing :kbd:`F1` will open a new kitty window with the same working directory
  302. as the current window. The :doc:`launch command <launch>` is very powerful,
  303. explore :doc:`its documentation <launch>`.
  304. Things behave differently when running kitty from system launcher vs. from another terminal?
  305. -----------------------------------------------------------------------------------------------
  306. This will be because of environment variables. When you run kitty from the
  307. system launcher, it gets a default set of system environment variables. When
  308. you run kitty from another terminal, you are actually running it from a shell,
  309. and the shell's rc files will have setup a whole different set of environment
  310. variables which kitty will now inherit.
  311. You need to make sure that the environment variables you define in your shell's
  312. rc files are either also defined system wide or via the :opt:`env` directive in
  313. :file:`kitty.conf`. Common environment variables that cause issues are those
  314. related to localization, such as :envvar:`LANG`, ``LC_*`` and loading of
  315. configuration files such as ``XDG_*``, :envvar:`KITTY_CONFIG_DIRECTORY`.
  316. To see the environment variables that kitty sees, you can add the following
  317. mapping to :file:`kitty.conf`::
  318. map f1 show_kitty_env_vars
  319. then pressing :kbd:`F1` will show you the environment variables kitty sees.
  320. This problem is most common on macOS, as Apple makes it exceedingly difficult to
  321. setup environment variables system-wide, so people end up putting them in all
  322. sorts of places where they may or may not work.
  323. I am using tmux and have a problem
  324. --------------------------------------
  325. First, terminal multiplexers are :iss:`a bad idea <391#issuecomment-638320745>`,
  326. do not use them, if at all possible. kitty contains features that do all of what
  327. tmux does, but better, with the exception of remote persistence (:iss:`391`).
  328. If you still want to use tmux, read on.
  329. Using ancient versions of tmux such as 1.8 will cause gibberish on screen when
  330. pressing keys (:iss:`3541`).
  331. If you are using tmux with multiple terminals or you start it under one terminal
  332. and then switch to another and these terminals have different :envvar:`TERM`
  333. variables, tmux will break. You will need to restart it as tmux does not support
  334. multiple terminfo definitions.
  335. Displaying images while inside programs such as nvim or ranger may not work
  336. depending on whether those programs have adopted support for the :ref:`unicode
  337. placeholders <graphics_unicode_placeholders>` workaround that kitty created
  338. for tmux refusing to support images.
  339. If you use any of the advanced features that kitty has innovated, such as
  340. :doc:`styled underlines </underlines>`, :doc:`desktop notifications
  341. </desktop-notifications>`, :doc:`extended keyboard support
  342. </keyboard-protocol>`, :doc:`file transfer </kittens/transfer>`, :doc:`the ssh
  343. kitten </kittens/ssh>`, :doc:`shell integration </shell-integration>` etc. they may or may not work,
  344. depending on the whims of tmux's maintainer, your version of tmux, etc.
  345. I opened and closed a lot of windows/tabs and top shows kitty's memory usage is very high?
  346. -------------------------------------------------------------------------------------------
  347. :program:`top` is not a good way to measure process memory usage. That is
  348. because on modern systems, when allocating memory to a process, the C library
  349. functions will typically allocate memory in large blocks, and give the process
  350. chunks of these blocks. When the process frees a chunk, the C library will not
  351. necessarily release the underlying block back to the OS. So even though the
  352. application has released the memory, :program:`top` will still claim the process
  353. is using it.
  354. To check for memory leaks, instead use a tool like `Valgrind
  355. <https://valgrind.org/>`__. Run::
  356. PYTHONMALLOC=malloc valgrind --tool=massif kitty
  357. Now open lots of tabs/windows, generate lots of output using tools like find/yes
  358. etc. Then close all but one window. Do some random work for a few seconds in
  359. that window, maybe run yes or find again. Then quit kitty and run::
  360. massif-visualizer massif.out.*
  361. You will see the allocations graph goes up when you opened the windows, then
  362. goes back down when you closed them, indicating there were no memory leaks.
  363. For those interested, you can get a similar profile out of :program:`valgrind`
  364. as you get with :program:`top` by adding ``--pages-as-heap=yes`` then you will
  365. see that memory allocated in malloc is not freed in free. This can be further
  366. refined if you use ``glibc`` as your C library by setting the environment
  367. variable ``MALLOC_MMAP_THRESHOLD_=64``. This will cause free to actually free
  368. memory allocated in sizes of more than 64 bytes. With this set, memory usage
  369. will climb high, then fall when closing windows, but not fall all the way back.
  370. The remaining used memory can be investigated using valgrind again, and it will
  371. come from arenas in the GPU drivers and the per thread arenas glibc's malloc
  372. maintains. These too allocate memory in large blocks and don't release it back
  373. to the OS immediately.
  374. Why does kitty sometimes start slowly on my Linux system?
  375. -------------------------------------------------------------------------------------------
  376. |kitty| takes no longer (within 100ms) to start than other similar GPU terminal
  377. emulators, (and may be faster than some). If |kitty| occasionally takes a long
  378. time to start, it could be a power management issue with the graphics card. On
  379. a multi-GPU system (which many modern laptops are, having a power efficient GPU
  380. that's built into the processor and a power hungry dedicated one that's usually
  381. off), even if the answer of the GPU will only be "don't use me".
  382. For example, if you have a system with an AMD CPU and an NVIDIA GPU, and you
  383. know that you want to use the lower powered card to save battery life and
  384. because kitty does not require a powerful GPU to function, you can choose not
  385. to wake up the dedicated card, which has been reported on at least one system
  386. (:iss:`4292`) to take ≈2 seconds, by running |kitty| as::
  387. MESA_LOADER_DRIVER_OVERRIDE=radeonsi __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json kitty
  388. The correct command will depend on your situation and hardware.
  389. ``__EGL_VENDOR_LIBRARY_FILENAMES`` instructs the GL dispatch library to use
  390. :file:`libEGL_mesa.so` and ignore :file:`libEGL_nvidia.so` also available on the
  391. system, which will wake the NVIDIA card during device enumeration.
  392. ``MESA_LOADER_DRIVER_OVERRIDE`` also assures that Mesa won't offer any NVIDIA
  393. card during enumeration, and will instead just use :file:`radeonsi_dri.so`.