Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Running X11 apps in Termux #3535

Closed
twaik opened this issue Mar 17, 2019 · 81 comments
Closed

Running X11 apps in Termux #3535

twaik opened this issue Mar 17, 2019 · 81 comments

Comments

@twaik
Copy link
Member

twaik commented Mar 17, 2019

@fornwall , @Grimler91 , @xeffyr , @its-pointless . I think it would be interesting for all of you.

Hi there! I have some thoughts about running X11 apps in Termux. Here we have Xorg server package. We can use it with Sparkle driver. For now I have sources that use Ashmem for buffers (original sparkle uses SysV SHM) and JNI calls for MotionEvents + libandroidjni. My xserver inside activity segfaults for some reason and I think it is because I am not so cool to handle it in the right way.
Details:
Sparkle needs it's own activity to work. Activity communicates with Xorg via Unix socket. It can be placed inside Termux filesystem.
libandroidjni and JNI MotionEvent wrappers are needed to use both NativeActivity and custom views in one normal activity.
Everything we need is :

  1. Another one activity inside Termux.
  2. A way to update libsparkle.so (which is supposed to be builtin to APK, but looks like I know the way to come it over).
  3. Xorg package enabled.
  4. GUI to manage the running server (calling keyboard, sparkle setttings, etc).

As I said before I have APK that works, but I think it is unusable without comfortable user interface like XFCE/LXDE. Or we can just use lxpanel + main menu plugin for graphical menu.

Thank you for patience.

@twaik
Copy link
Member Author

twaik commented Mar 17, 2019

image

@its-pointless
Copy link
Contributor

wow

@RalfWerner
Copy link

Fantastic! How can I install this on my mobile?

@kenneth-Q
Copy link
Contributor

amazing! It may works, but most software has no graphics hardware acceleration on android ( opengl vs opengles ). I hope wayland could be a direction.
I am a noob but I very bump up this project.

@twaik
Copy link
Member Author

twaik commented Mar 18, 2019

Fantastic! How can I install this on my mobile?

It does not work well. I did not write KeyEvent JNI wrapper and Xorg segfaults for some reason. I think it segfaults because I am no good with my hands.

amazing! It may works, but most software has no graphics hardware acceleration on android ( opengl vs opengles ). I hope wayland could be a direction.
I am a noob but I very bump up this project.

It does not use graphical acceleration. It is not a Wayland port to Android. It is Xorg with modified xf86-video-dummy driver. It sends image's Ashmem region handle to the NativeActivity and outputs it to the screen using GLESv2 shader. Xorg and it's clients do not have hardware acceleration support.

@RalfWerner
Copy link

If I interpret your screenshot above correctly, you have an Xserver running inside the Termux app, with a HOME window and two widgets below. If that is not a collage, then does it work. Maybe not well but the first time - that I see!
What should/could I do for it on my smartphone?

@twaik
Copy link
Member Author

twaik commented Mar 18, 2019

running inside the Termux app

It works outside Termux application. It is a standalone Sparkle application with some improvements and custom layout support. NatieActivity does not support custom layout so I added it using libandroidjni.

with a HOME window

Openbox an Pcmanfm are running inside chroot and connecting to the Xorg using sockets.

two widgets below

Keyboard and settings buttons? That is my attempt to add custom layout to the NativeActivity.

If that is not a collage, then does it work

It does not work well.
What do not work for now (or not implemented):

  1. Touchpad input does not work well (or pcmanfm just plays with my mind).
  2. Keyboard input.
  3. Xorg autostart.
  4. "Clients are not connected" notification.
  5. Notification in the status bar which is supposed to hold Xorg in memory.
  6. MIT-SHM (implemented in x11-packages).
  7. Touchpad input mode and mode switching.
  8. Zoom.
  9. Resolution switching.
  10. Help or FAQ.
  11. Wakelock.
  12. Android clipboard.

What should/could I do for it on my smartphone?

As I said before it is unusable. For now I cloned termux-app and x11-packages. I think that using Termux build system I will fix segfaults and some other mistakes/errors/etc.

@RalfWerner
Copy link

Ok then I misinterpreted that. The spakle app, I found neither in GooglePlay nor in F-Droid and the operation of X11 packages would then be comparable to XSDL or Xvnc - right?
Have you already made such a comparison?

@twaik
Copy link
Member Author

twaik commented Mar 18, 2019

I did not. But.

  1. Xvnc compresses image.
  2. XSDL updates screen on every change. Graphical operations in XSDL or Android UI take some time and block the server until screen is updated.

Sparkle does not compress image because we do not use network and do not block server while uploading an image to the screen.

@RalfWerner
Copy link

RalfWerner commented Mar 18, 2019

I'm still trying to understand what you did?

In my words: Your screenshot above came from your Sparkle-App, which you got with git clone https://gitlab.com/mogryph/sparkle.git and merge it with the xorg-server sources from the package in https://github.com/termux/x11-packages/tree/master/disabled-packages from xeffyr (your links above) to your local APP and start it. So you have running a Xserver (with a PID) on the phone. As far as right?

Then you have launched a Xclient (your file manager) from the Termux app (with a PID), which then communicates via the Xprotocol with the Xserver of your Sparkle-App to show the Display (as in your screenshot). So far still right?

If so, I would have the question of Xprotocol exchange between the two PIDs (XOpenDisplay 1st step)? (you call it X11)

As a rule (not in Termux), the startx script is executed on Linux boot, after that there is a Xserver (builtin PID). In XSDL and Xvnc or on a remote computer (sshd), this is done via env DISPLAY. How is this in your solution?

@twaik
Copy link
Member Author

twaik commented Mar 18, 2019

In my words: Your screenshot above came from your Sparkle-App, which you got with git clone https://gitlab.com/mogryph/sparkle.git and merge it with the xorg-server sources from the package in https://github.com/termux/x11-packages/tree/master/disabled-packages from xeffyr (your links above) to your local APP and start it.

https://github.com/twaik/android_external_xorg_server

Then you have launched a Xclient (your file manager) from the Termux app (with a PID), which then communicates via the Xprotocol with the Xserver of your Sparkle-App to show the Display (as in your screenshot). So far still right?

Xprotocol = X11. Yes.

If so, I would have the question of Xprotocol exchange between the two PIDs (XOpenDisplay 1st step)?

No. My app behaves just like XSDL or Xvnc (via export DISPLAY=:0).

@twaik
Copy link
Member Author

twaik commented Mar 18, 2019

Looks like it works with Termux's xorg-server (x11-packages/disabled-packages for now).
sparkle
@fornwall Image output needs one NativeActivity inside termux-app and one native library inside apk. And the way to start it (i.e. button in the drawer).

@ghost
Copy link

ghost commented Mar 18, 2019

(i.e. button in the drawer).

Or context menu.

@ghost ghost added the enhancement label Mar 18, 2019
@RalfWerner
Copy link

@twaik To "it works outside" above:
In the following picture are the APPs (widgets on my phone), which are currently necessary for an X11 client process mpv-x with Xsdl.I have started a stand-alone Termux app (black with .bashrc) and then manually changed the name in Navigator.
grafik
First, then the "6-second-XSDL-APP" (green) must be started (here portrait and outside). Then I started with Xsdl.sh and Xvnc.sh in Termux-Widget (are automatically entered in the_Navigator_ but without .bashrc). To display the mpv-x video, I select the XServer-APP from the APP list manually.
If the phone is rotated to landscape, the output will be distorted. The DISPLAY=:0 would be possible here, but the correct is value displayed in the XSDL start.

In the Xvnc.sh a Xvnc-PID (start vcnserver) is assumed. Again, portrait/landscape rotation not is possible (but not distorted). Between Xvnc and the RealVNC-APP (outside blue) there is an other client/server dialog, which means that only part of the XEvents arrive in Termux and DISPLAY=:1 (5901 in the (outside APP) is required (recommended @xeffyr).
Furher issues to the same topic: termux/termux-app#978 and termux/termux-api-package#44
@fornwall A really big step would be the solution without outside APP by using the display of Xorg.sh directly from Termux. This would eliminate the tedious and frequent manual selection from the APP list.

Is your solution Xspakle-APP (outside) and Xorg-PID in the same way or comparable?

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

Sparkle works a bit different way.

  1. Xorg server starts and loads sparkle_drv.so, sparklei_drv.so. Driver sets default resolution (i.e. 800x600).
  2. Sparkle activity starts. It connects to the Unix socket created by Xorg with sparkle_drv.so.
  3. Activity reports screen resolution to the Xorg, sparkle_drv changes screen resoolution to the reported one.
  4. While activity is running it reports about touch/mouse/keys events to the server, the server reports about screen updates to the activity.
  5. When screen orientation is changed activity reports to the server, the server changes resolution to the reported one. Xorg itself does not need to set screen orientation because Activity handles it.

If the server's Unix socket will be in Termux's folder it will be accessible for Termux's programs and we won't need TCP sockets for the apps. It will improve perfomance. May be a bit but it will.

@RalfWerner
Copy link

RalfWerner commented Mar 22, 2019

Sorry @twaik - I'm a bit stupid.
In my picture above are several APP's on the start screen of my smartphone. The two blacks use the same APP (Termux with navigation drawer to switch between up to 8 shells)

The other three widgets are used to install (F-Droid) additional APPs and launch the two outside XServers.
There's probably another Sparcle APP widget on your startup screen, right?. If so, is the reported screen then part of this Sparcle-APP or Termux?

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

@RalfWerner Sorry, English is not my first or event second language so probably there is some misunderstaning.
Sparkle is not XSDL or Xvnc or something. Sparkle is consists of 4 parts:

  1. xf86-video-sparkle.
  2. xf86-input-sparklei.
  3. Sparkle Activity (NativeApplication based).
  4. libsparkle which contains functions common for 3 first parts.

Xorg can be glibc- or bionic- built. It is no difference. Sparkle's author has written it to be used with glibc container inside Linux Deploy app to not build Xorg with application with bionic. I've ported Xorg to bionic for using it inside apk (app built this way does not require external Xorg and manual driver building inside glibc container). It is much faster than Xvnc because it does not compress image or send image fragments via sockets to output image to the screen. And it does not require SDL to output image. It uses only Android and Xserver elements without any other dependencies.
The only two things needed to output image are place to put socket that is accessible to both Activity and Xorg and NativeActivity. I can modify Sparkle to use SurfaceView if it really needed so it can be used to provide GUI to every terminal tab (with it's own Xorg launched). But for now Xorg segfaults for some reason when it tries allocate memory. That is why Sparkle is unusable for now. @fornwall can add activity (1, 2) without launcher icon and native library to make Termux using Sparkle. Using activity with native library I wrote allows us update Sparkle or Xorg code without updating termux-app code. Activity can be launched with command or by libX11 on XOpenDisplay call.

@RalfWerner
Copy link

RalfWerner commented Mar 22, 2019

@twaik Misunderstandings can be clarified by queries - so thank you so far.
I have understood your explanation so far: Xorg runs inside Termux (like Xvnc demon) and your two *drv.so files stored in u/lib (for me is ln -s .. / usr u in .bashrc) and Xorg are in u/bin and SparkleActivity is used by @fornwall as part of an approved Termux APP . As far as right?

I could check this only when this action is completed right? On my mobile phone I have Termux:API and Termux:Widget installed (above). Then comes Termux:Sparkle or how did you test it?

Ps.: My mother tongue is either not English. In a chat with Leonid last year you specified Одеса as your home but in your profile is ירושלים

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

As far as right?

Yes.

I could check this only when this action is completed right?

You can try to build it on your own.
https://github.com/twaik/x11-packages
https://github.com/twaik/termux-app
But it segfaults for some reason. @xeffyr tries to handle it.

with Leonid last year you specified Одеса as your home but in your profile is ירושלים

PS: I moved to Jerusalem this year.

@RalfWerner
Copy link

@twaik Living in a holy city - nice.

To: "But it segfaults*) for some reason. @xeffyr tries to handle it."
I know! That's why he moved xorg-server to disabled-packages in December (before I could download it with pkg install) and marked my requests as wontfix. But he is really very busy and I can understand that he has to prioritize.

Unfortunately, I have little experience with github repos / docker / travis-CI / build / bintray etc and never install APPs outside of GoolglePlay or F-Droid.
Based on the information in this issue - How much time would you need to create a Termux-APP with Xorg and SparkleActivity (e.g. with start of aterm) on your phone?

*) segfaults call for solutions and take time and patience. I am a pensioner and have both.

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

Some hours with building xorg-server package.

@RalfWerner
Copy link

Okay - more than I expected.
If you hope, I could help you with the segfaults solution contact me privately, otherwise I'll wait until @fornwall has integrated your updates above.

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

more than I expected

For some reason I was building all the packages, building xorg-server and sparkle from scratch will take something about 30-45 minutes. You can post message here if you found something.
@xeffyr told me that it can be compiler bug. Or it is something wrong with xf86-video-sparklei driver.

@RalfWerner
Copy link

30 to 45 minutes are better. First, I suspect I have to download the necessary sources to my phone (with git clone) and start the build / make processes. Above I found three twaik/* repos (you see I miss some basics). I will try this tomorrow.

@twaik
Copy link
Member Author

twaik commented Mar 22, 2019

You need only the repos I mentioned. x11-package will download sparkle sources.

@RalfWerner
Copy link

@twaik The git clone download was successful with129Mb (8.1Mb: termux-app, 32Mb: x11-packages and 90Mb: android_external_xorg_server) the timestamp will not be applied.
https://github.com/termux/termux-app is the same repo as yours with the exception of your updates (above). So with the source a Termux app with your extensions could be generated - but how?

My Termux app has 800Mb and should not overwrite, so I have the classic Installation made via GooglePlay on another phone. The app is then 620Kb and 10.6Mb after first opening.
The README of the repos contains no information how to do it with this source (instead of GooglePlay) or I've not found. Could you give me a hint?

You have https://gitter.im/termux/dev ask to help with segfault-debuging. I hope you get it! Before I can contribute something I have to increase my knowledge and in the coming days I have little time.

@twaik
Copy link
Member Author

twaik commented Mar 23, 2019

and 90Mb: android_external_xorg_server

As I said before everything you need are x11-packages and termux-app. android_external_xorg_server is my attempt to build Xorg with AOSP.
Classic installation will not help you, you need to build my source with Android SDK.
Build instructions are available in termux/termux-app repo, but you need to clone repo recursively and copy x11-packages/packages to x11-packages/termux-packages/packages, then

cd x11-packages/termux-packages
./build-package.sh xorg-server
./build-package.sh sparkle

Then you will need to create local apt repo with termux-apt-repo and add this repo to $PREFIX/etc/apt/sources.list. Then xorg-server and sparkle packages will be available to install via Termux's apt.

@ghost
Copy link

ghost commented Mar 23, 2019

Posting here prebuilt app, xorg-server and sparkle packages,

P.S. It more like demo. Any other implementations of X server have more usability.
Regarding segfault, I wasn't able to reproduce it on AArch64 version, but it always happens on ARM if you many times click on window's header.

@RalfWerner
Copy link

Thanks both of you
I have tested the versions uname -m of my available devices. This is: X86-64 (debian PC), i686 (moba PC), aarch64 (huawei - here I like to test Xorg) and armv81 (samsung of my wife - there I'd, installed Termux yesterday - above).
Probably my questions seem very stupid, because they are your "daily bread" - unfortunately not for me, specifically for Android I know only the user perspective.
The files you specified above (except *arm.tar) have been saved on my huawei, analyzed with mc and clone the packages repo_ (90 Mb).

Then I tried the cp / built* proposal of @twaik above - execute with:

[~/sd/x/x11-packages/termux-packages]$ bash build-package.sh xorg-server
ERROR: On-device builds are not supported - see README.md

and have "read me". This ERROR is understandable because of uname -o = Andriod. in scripts/build/termux_error_exit.sh. What does that mean for xorg generation on my phone?

What I've to do with the two files (demo is good) from @xeffyr (mv ..., tar -x...) to use them (aterm/fluxbox on display) on my phone?

@ghost
Copy link

ghost commented Apr 22, 2019

No logfile if install failed?!

Android doesn't store logfiles if install failed. But you can view error message if installing with ADB, for example you can get something like:

adb: failed to install com.termux.window_11.apk: Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn't be installed in /data/app/com.termux.window-ou7XcZyhKdW1h7txIAtgLQ==: Package com.termux.window has no signatures that match those in shared user com.termux; ignoring!]

- message shown above means that signatures between main app and addon incompatible.

I have issue 52 reopened because E404 - not your resposibility?!

No, https://github.com/its-pointless/gcc_termux is managed by @its-pointless.

@RalfWerner
Copy link

RalfWerner commented Apr 23, 2019

Thanks, with ./adb install -r .\app-debug.apk I get Performing Streamed Install Success on (1), for whatever reason?! I sent my sons the *.apk via WhatsApp: Success on Samsung/Android: 8.0.0/ aarch64 and impossible on Android: 6.1 (too old ?!) - anyway. I've reinstalled my last backup (645Mb from 180Mb as t.tgz) and updated your *.deb files:

[~/sd/ip/x]$ ll
-rwxrwx--- 1 root everybody 764475 Apr 20 13:02 app-debug.apk
-rwxrwx--- 1 root everybody  90540 Apr 20 13:02 sparkle-aarch64.deb
-rwxrwx--- 1 root everybody 699746 Apr 20 13:02 xorg-server_1.20.4_aarch64.deb
[~/sd/ip/x]$ dpkg -i *.deb
(Reading database ... 16837 files and directories currently installed.)
Preparing to unpack sparkle-aarch64.deb ...
Unpacking sparkle (0.1b) over (0.1b) ...
Preparing to unpack xorg-server_1.20.4_aarch64.deb ...
Unpacking xorg-server (1.20.4) over (1.20.4) ...
Setting up xorg-server (1.20.4) ...
[~]$ ll ~/u/bin/Xorg
-rwx------ 1 u0_a152 u0_a152 67320 Mar 23 23:40 /data/data/com.termux/files/home/u/bin/Xorg

what will be new now? Xorg is still from March! I've checked again your example as above described and compare with your *.mp4:
grafik
Shot1 your data unzipped in Android, Shot2 start pcmanfm in openbox, Shot3 drawer to select Xorg/SPARKLE, Shot4 Xorg-view with 5 buttons below (new KEYBORD and LEAVE) Shot5 On-Screen-KB (Hackers) all in portrait and fullscreen. Than I've rotate the phone:
grafik
to landscape Shot6 small mouse-cursor (under finger and syncs with USB mouse) is visible and Shot7 with On-Screen-KB (swift) usable.

So far you have done a fantastic job (more than in your *.mp4) and most (no plugins possible) of my wishes (above) implemented. Many Thanks.

A segfault (with msg - like in your *.mp4) I could not produce so far (I keep on testing) but often I get a "black screen" (bm) e.g. when I switch by LEAVE in Termux and then try to switch back to Xorg. The processes, however, all remain last shot. KEYBOARD button is lost after first use!? Do you have the same behavior?

continue bm test

Once the blackscreen mode (bm) is reached, I can not finish it without killing Termux itself! - you?
Meanwhile, I have found: com.termux is the "termux process itself" and can be terminated with kill ps -o pid, comm|grep com|cut -dc -f1 (alias k in s). Unfortunately, the bm occurs very often (not only while toggling)! t l executes: s=TMP/T.log; logcat -d>$s; grep 'E' $s (in s script) and produces following output (partially selected by me):

[~]$ t l
--------- beginning of crash
04-24 10:36:30.999 11830 11922 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 11922 (Thread-5)
04-24 10:36:31.296 11954 11954 F DEBUG   : ABI: 'arm64'
04-24 10:36:31.296 11954 11954 F DEBUG   : pid: 11830, tid: 11922, name: Thread-5  >>> com.termux <<<
04-24 12:36:02.263 16346 16383 E vndksupport: Could not load vendor/lib64/egl/libGLES_mali.so from sphal namespace: dlopen failed: library "vendor/lib64/egl/libGLES_mali.so" not found.

In total, TMP/T.log (above in ip contains 560 lines of which 64 with 'F DEBUG' and 4 with 'F libc'. Do you get that too and what solution could be there?

@JanuszChmiel
Copy link

Dear specialists,
Thank you for yours programmers complex work on Xserver full implementation with Termux. Do you think, that it will support External Bluetooth keyboard? Or unfortunately for now, only touch keyboard will work?
And does yours implementation support as many Xprotocol features as possible? Try to test it with Firefox or with Seamonkey. It would be interesting.

@RalfWerner
Copy link

@JanuszChmiel Firefox is my favorite browser, and the Bluetooth keyboard has no limits. My enthusiasm for KB in Xorg referred to the option of displaying an "On-screen KB". The implementation in X-protocol does not work, just like all other external KB do not produce XEvents.
My main problem at the moment is the blackscreen, which can only be fixed by completely terminating Termux and the traceback (logcat).

Specialists are @xeffyr and @twaik and maybe you? I know a lot about X11. But much of the Android / repo / package / architecture management is still alien to me and I can do it only limited self.
I have understood that currently the architectures arm and aarch are used and problems should only in aarch (my phone) occur. In the log (above) is an ABI: arm64 msg? At the moment I can not test the arm version because I miss the corresponding * .deb.

@JanuszChmiel
Copy link

JanuszChmiel commented Apr 25, 2019 via email

@RalfWerner
Copy link

My research of XInput in the recommended Xserver has been described above, e.g. here and in Addendum to segfault. I do not know what is "stable dummi driver" and "Orca" does not seem to be a contributor to "X11 on phones".

But I tested (check.c) again under the Bluetooth KB-aspect the Xserver: Xorg(PC), XSDL and Xvnc. In all cases, all XInputs of the KB will be correctly interpreted on the mobile/PC, if the corresponding pairing is used. Then the "on-screen KB" disappears and appears again after "decoupling".
grafik
1.Shot photo of PC monitor and Bluetooth-KB (pairing: white-key-1), 2.Shot XSDL with Swift-On-Screen-KB (bug on top), 3.Shot Xvnc with Hackers-On-Screen-KB,and 4.Shot with pairing: white-key-2.
Since it works here on the phone, so it should not be a fundamental problem to realize that in Sparkle. In Termux itself I tested the KB without problems in the bash and with mc - with the same behavior.
In mc even better, because there, the On-screen-KB can be turned on without "App-change".

@xeffyr As next step I would like to test on a arm device (2) with *arm64.deb.gz whether the blackscreen modus there not occurs and possibly get I files and a brief comment from you Leonid, to my questions above and the next.
The log is subdivided with beginning of: crash, system and main. Where could I traceback segfaults at best and do you have understand all of log above?

@ghost
Copy link

ghost commented May 5, 2019

@RalfWerner Resigned termux-app and termux-api:
termux-api.apk.gz
termux-sparkle.apk.gz

@RalfWerner
Copy link

RalfWerner commented May 14, 2019

@twaik @xeffyr - You had announced soon a Termux version with lorie Xserver will ready for test.
Is it this repo and APK from last month? Is it ready/finished and usable (how) or "in progress"?

Could you please prepare a lorie *.apk.gz, as in previous comment, that I can test? I described my unsuccessful attempt in liblorie.

@brianwoo
Copy link

brianwoo commented Aug 8, 2019

I'm new to Termux and I recently got X11 to work. While X forwarding is working, it's kinda slow. Has anyone tried compiling Xpra to work in Termux? Just curious if this is even possible.

@ghost
Copy link

ghost commented Sep 22, 2019

@ghost ghost closed this as completed Sep 22, 2019
@canofworm
Copy link

Wouldn't a split screen work on mobile?

I'm still learning

@nwrkbiz
Copy link

nwrkbiz commented Apr 7, 2021

Wouldn't a split screen work on mobile?

I'm still learning

You can try using this app: https://github.com/nwrkbiz/android-xserver

@ghost
Copy link

ghost commented Apr 8, 2021

Sounds interesting although i tried running XFCE within that app and got weird results, some GTK3 applications works fine (gtk3-demo), and other applications didn't

@JanuszChmiel
Copy link

JanuszChmiel commented Apr 8, 2021 via email

@RalfWerner
Copy link

The XServer from @nwrkbiz is a fork of mattkwan. This, as well as XSDL, I have currently excluded as an alternative (3rd choice). My last checks to X11 are described here. @twaik currently serves in Israel and I hope he then works on it again. The X11 plugin is currently working as a service with notification in which preferences can be set.

@wmcb-tech I recommend currently to use Emulate mouse or for VNC injured possibly also Emulate touchpad. The Direct mode (default) is currently susceptible to fault, but allows multi-touch and the other two are very stable. I often use X11 in split mode on devices that can and even better in PiP mode, which is very simplified interaction with Termux and proot-distros.

@nwrkbiz
Copy link

nwrkbiz commented Apr 8, 2021

This new X11 server is really very promising. I will also test it. I have found some old Java X11 server, but it was very little .apk and it did not supported XKB extension. I will test, if XKB extension is correctly implemented in this app. If no, I will try to kindly open some issue on Github page of this project, because it seems to Me, that programmer of this app is smart and he know what to do to make good X11 server for Android. I like it, because Pulseaudio is not included as like in Xserver XSDL, so I can use better variant of Pulseaudio sound server made for with Termux.

I tried to fix the whole keyboard layout. All keys and shortcuts of the english layout are working using the "hackers keyboard" app (or external input devices). Also I tried to implement a "shared clipboard" functionality, which allows to copy texts between android and x11. A simple window manager (flwm) is also included.

As already mentioned this is an fork of the darkside (mattkwan) xserver.

The X11 protocol is quite complex and this app only implements an subset of features. Up to now only simple applications will work properly. (I mainly use this project to port FLTK based programs to android)

@JanuszChmiel
Copy link

JanuszChmiel commented Apr 8, 2021 via email

@sweetman135
Copy link

Unfortunately, I use a mobile phone with Android 8

@RalfWerner
Copy link

RalfWerner commented Apr 8, 2021

Unfortunately, I use a mobile phone with Android 8

@sweetman135 I use for X11 (plugin) and Xvnc (2nd choice) with Android 8-11 devices and have not found any problems yet!

As already mentioned this is an fork of the darkside (mattkwan) xserver.

@nwrkbiz I have checked your XServer again but found no significant improvement to the test of 18. Apr. 2019. Your APK=13MB is larger as X11=7MB and smaller than VNC=30MB. The XClients (I use very simple once, as fluxbox, xterm) are extremely slow processed. Slightly more complex like pcmanfm appear after a long time and my typical XClients do work not or wrong. I usually (1st choice) use X11, which works at least twice as fast as VNC and about 50-100 times faster than your XServer (Java).

However, KB support now exists compared to the check two years ago and Split/PiP can be used as in X11. In parallel with Termux working is hardly possible except for PiP. Also a common use of KB for_ XServer+Termux+proot-distro is impossible. All configuration actions (but also many others) lead to the crash or a stalled mode.

In this state your Java XServer would be after XSDL=91MB my 4th choice. If it is not important for you to be independent of Termux, I urgently recommend you to use one of the three better ones.
Here a shot of your XServer in PiP (just before crash).
grafik

@ghost ghost deleted a comment Apr 21, 2021
@ghost ghost deleted a comment from canofworm Jun 29, 2021
@ghost ghost deleted a comment from canofworm Jun 29, 2021
@ghost ghost deleted a comment from canofworm Jun 29, 2021
@ghost ghost locked and limited conversation to collaborators Oct 9, 2021
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests