Score:0

Kivy on Ubuntu 20.04 : Couldn't connect to X server

cd flag

Today i set up a WSL2 subsystem on my windows machine running the default Ubuntu 20.04.5 version. The reason i did this was that on my windows machine the kivy applications run really slow (and couldn't find an easy solution to that).

So i setup the WSL2 subsystem then installed pip and venv via sudo apt procedure, and created a virtual environment (LogPor). With (LogPor) activated i used pip to install kivy and opencv-python. I cloned my git repository and tried to run the python file containing the kivy app but the following error message occured:

(LogPor) gianluca@DESKTOP-____:~/PythonProjects/Logic_Portable/LogicPortable$ python3 GUI_DropDown_python.py [INFO   ] [Logger      ] Record log in /home/gianluca/.kivy/logs/kivy_22-10-07_1.txt [INFO   ] [Kivy        ] v2.1.0 [INFO   ] [Kivy        ] Installed at "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/__init__.py" [INFO   ] [Python      ] v3.8.10 (default, Jun 22 2022, 20:18:18) [GCC
9.4.0] [INFO   ] [Python      ] Interpreter at "/home/gianluca/Envs/LogPor/bin/python3" [INFO   ] [Logger      ] Purge log fired. Processing... [INFO   ] [Logger      ] Purge finished! [INFO   ] [Factory     ] 189 symbols loaded [INFO   ] [ImageLoaderFFPy] Using ffpyplayer 4.3.5 [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_ffpyplayer [INFO   ] [Text        ] Provider: sdl2 [INFO   ] [Camera      ] Provider: opencv(['camera_picamera', 'camera_gi'] ignored)  --- Logging error
---  Traceback (most recent call last):    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/providers/__init__.py", line 41, in <module>
     import kivy.input.providers.mtdev    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/providers/mtdev.py", line 94, in <module>
     from kivy.lib.mtdev import Device, \    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/lib/mtdev.py", line 30, in <module>
     libmtdev = cdll.LoadLibrary('libmtdev.so.1')    File "/usr/lib/python3.8/ctypes/__init__.py", line 451, in LoadLibrary
     return self._dlltype(name)    File "/usr/lib/python3.8/ctypes/__init__.py", line 373, in __init__
     self._handle = _dlopen(self._name, mode)  OSError: libmtdev.so.1: cannot open shared object file: No such file or directory

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):    File "/usr/lib/python3.8/logging/__init__.py", line 1085, in emit
     msg = self.format(record)    File "/usr/lib/python3.8/logging/__init__.py", line 929, in format
     return fmt.format(record)    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/logger.py", line 291, in format
     record = copy.deepcopy(record)    File "/usr/lib/python3.8/copy.py", line 172, in deepcopy
     y = _reconstruct(x, memo, *rv)    File "/usr/lib/python3.8/copy.py", line 270, in _reconstruct
     state = deepcopy(state, memo)    File "/usr/lib/python3.8/copy.py", line 146, in deepcopy
     y = copier(x, memo)    File "/usr/lib/python3.8/copy.py", line 230, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)    File "/usr/lib/python3.8/copy.py", line 146, in deepcopy
     y = copier(x, memo)    File "/usr/lib/python3.8/copy.py", line 210, in _deepcopy_tuple
     y = [deepcopy(a, memo) for a in x]    File "/usr/lib/python3.8/copy.py", line 210, in <listcomp>
     y = [deepcopy(a, memo) for a in x]    File "/usr/lib/python3.8/copy.py", line 161, in deepcopy
     rv = reductor(4)  TypeError: cannot pickle 'traceback' object  Call stack:    File "GUI_DropDown_python.py", line 11, in <module>
     from kivy.uix.dropdown import DropDown    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/uix/dropdown.py", line 99, in <module>
     from kivy.core.window import Window    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/core/window/__init__.py", line 2460, in <module>
     Window = core_select_lib('window', window_impl, True)    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
     mod = importlib.__import__(name='{2}.{0}.{1}'.format(    File "<frozen importlib._bootstrap>", line 1093, in __import__    File "<frozen importlib._bootstrap>", line 1014, in _gcd_import    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/core/window/window_sdl2.py", line 34, in <module>
     from kivy.input.provider import MotionEventProvider    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/__init__.py", line 30, in <module>
     from kivy.input.postproc import kivy_postproc_modules    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/postproc/__init__.py", line 15, in <module>
     from kivy.input.postproc.calibration import InputPostprocCalibration    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/postproc/calibration.py", line 51, in <module>
     from kivy.input import providers    File "<frozen importlib._bootstrap>", line 1042, in _handle_fromlist    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "<frozen importlib._bootstrap>", line 991, in _find_and_load    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 848, in exec_module    File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed    File "/home/gianluca/Envs/LogPor/lib/python3.8/site-packages/kivy/input/providers/__init__.py", line 44, in <module>
     Logger.exception(err)  Message: 'Input: MTDev is not supported by your version of linux'  Arguments: () [INFO   ] [Window      ] Provider: sdl2 [INFO   ] [Window      ] Provider: x11(['window_sdl2'] ignored) Couldn't connect to X server
Bonito avatar
cd flag
Searching further on the internet i came across a possible reason: WSL2 on windows10 doesn't support any sort of GUI as part of the standard installation. A way to get around it is to [install](https://medium.com/javarevisited/using-wsl-2-with-x-server-linux-on-windows-a372263533c3) an X-server on windows and "terminator" on Ubuntu. I didn't try it myself and before doing it i wanted to ask if this solution is enough to run graphic intense(?) kivy apps? Also consider that with windows11 this is fixed as GUI is already supported in WSL2. I cannot upgrade to Windows11 due to TPM 2.0 issues.
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.