atlas-engineer / nyxt

Nyxt - the hacker's browser.
https://nyxt-browser.com/
9.82k stars 409 forks source link

WSL2 nyxt doesn't display pages (blank). #952

Closed paxsali closed 3 years ago

paxsali commented 4 years ago

Hi all,

on WSL2 I cannot get nyxt to start / run properly.

The following steps have been performed on WSL2 (doesn't display pages at all) and to confirm there's nothing generally wrong I also tried the exact same steps on a real HW laptop running Ubuntu 20.04 natively (where it does work as expected).

The literal org-file I used from my documentation:

* Nyxt browser

Goto:
https://github.com/atlas-engineer/nyxt/releases/latest

Download latest release, e.g.:
https://github.com/atlas-engineer/nyxt/releases/tag/1.4.0

#+BEGIN_SRC sh :eval no
# download .deb package
$ curl -sLO https://next.atlas.engineer/static/release/next_1.4_amd64.deb

# try initial installation, will fail
$ sudo dpkg -i next_1.4_amd64.deb

# preview & log missing package dependencies...
$ sudo apt-get install -f -s
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-javascriptcoregtk-4.0 gir1.2-webkit2-4.0 libbrotli-dev libfixposix-dev libfixposix3
  libjavascriptcoregtk-4.0-dev libpsl-dev libsoup2.4-dev libsqlite0 libsqlite3-dev libwebkit2gtk-4.0-dev sbcl sqlite sqlite3
Suggested packages:
  libsoup2.4-doc sqlite3-doc sbcl-doc sbcl-source slime sqlite-doc
The following NEW packages will be installed:
  gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-javascriptcoregtk-4.0 gir1.2-webkit2-4.0 libbrotli-dev libfixposix-dev libfixposix3
  libjavascriptcoregtk-4.0-dev libpsl-dev libsoup2.4-dev libsqlite0 libsqlite3-dev libwebkit2gtk-4.0-dev sbcl sqlite sqlite3
0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Inst sbcl (2:2.0.1-3 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst gir1.2-javascriptcoregtk-4.0 (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64]) [next:amd64 ]
Inst gir1.2-webkit2-4.0 (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64]) [next:amd64 ]
Inst libbrotli-dev (1.0.7-6build1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst libpsl-dev (0.21.0-1ubuntu1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst libsqlite3-dev (3.31.1-4ubuntu0.2 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64]) [next:amd64 ]
Inst libsoup2.4-dev (2.70.0-1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst libjavascriptcoregtk-4.0-dev (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64]) [next:amd64 ]
Inst libwebkit2gtk-4.0-dev (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64]) [next:amd64 ]
Inst libsqlite0 (2.8.17-15fakesync1build1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst sqlite (2.8.17-15fakesync1build1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst libfixposix3 (1:0.4.3-1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst libfixposix-dev (1:0.4.3-1 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst gir1.2-gstreamer-1.0 (1.16.2-2 Ubuntu:20.04/focal [amd64]) [next:amd64 ]
Inst gir1.2-gst-plugins-base-1.0 (1.16.2-4 Ubuntu:20.04/focal [amd64])
Inst sqlite3 (3.31.1-4ubuntu0.2 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf sbcl (2:2.0.1-3 Ubuntu:20.04/focal [amd64])
Conf gir1.2-javascriptcoregtk-4.0 (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf gir1.2-webkit2-4.0 (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf libbrotli-dev (1.0.7-6build1 Ubuntu:20.04/focal [amd64])
Conf libpsl-dev (0.21.0-1ubuntu1 Ubuntu:20.04/focal [amd64])
Conf libsqlite3-dev (3.31.1-4ubuntu0.2 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf libsoup2.4-dev (2.70.0-1 Ubuntu:20.04/focal [amd64])
Conf libjavascriptcoregtk-4.0-dev (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf libwebkit2gtk-4.0-dev (2.28.4-0ubuntu0.20.04.1 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf libsqlite0 (2.8.17-15fakesync1build1 Ubuntu:20.04/focal [amd64])
Conf sqlite (2.8.17-15fakesync1build1 Ubuntu:20.04/focal [amd64])
Conf libfixposix3 (1:0.4.3-1 Ubuntu:20.04/focal [amd64])
Conf libfixposix-dev (1:0.4.3-1 Ubuntu:20.04/focal [amd64])
Conf gir1.2-gstreamer-1.0 (1.16.2-2 Ubuntu:20.04/focal [amd64])
Conf gir1.2-gst-plugins-base-1.0 (1.16.2-4 Ubuntu:20.04/focal [amd64])
Conf sqlite3 (3.31.1-4ubuntu0.2 Ubuntu:20.04/focal-updates, Ubuntu:20.04/focal-security [amd64])
Conf next (1.4  [amd64])

# install missing package dependencies
$ sudo apt-get install -f -y

# install nyxt
$ sudo dpkg -i next_1.4_amd64.deb
#+END_SRC

to start:

#+BEGIN_SRC sh :eval no
next-gtk-webkit2 &
next
#+END_SRC

System information:
#+BEGIN_SRC sh :eval no
$ wslfetch

               .-/+oossssoo+/-.               Windows 10 Linux Subsystem
           `:+ssssssssssssssssss+:`           Default@BIGRIG
         -+ssssssssssssssssssyyssss+-         BUILD:    19041
       .ossssssssssssssssssdMMMNysssso.       BRANCH:   vb_release
      /ssssssssssshdmmNNmmyNMMMMhssssss/      RELEASE:  Ubuntu 20.04.1 LTS
     +ssssssssshmydMMMMMMMNddddyssssssss+     KERNEL:   Linux 4.19.104-microsoft-standard
    /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    UPTIME:   0d 4h 30m
   .ssssssssdMMMNhsssssssssshNMMMdssssssss.
   +sssshhhyNMMNyssssssssssssyNMMMysssssss+
   ossyNMMMNyMMhsssssssssssssshmmmhssssssso
   ossyNMMMNyMMhsssssssssssssshmmmhssssssso
   +sssshhhyNMMNyssssssssssssyNMMMysssssss+
   .ssssssssdMMMNhsssssssssshNMMMdssssssss.
    /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
     +sssssssssdmydMMMMMMMMddddyssssssss+
      /ssssssssssshdmNNNNmyNMMMMhssssss/
       .ossssssssssssssssssdMMMNysssso.
         -+sssssssssssssssssyyyssss+-
           `:+ssssssssssssssssss+:`
               .-/+oossssoo+/-.

#+END_SRC

After starting next, the "getting started" page does not appear - it's just a blank screen.

Pressing C-l to open up www.google.com or whatever, after confirming (it does take a while to load thought), it displays a blank (white) page.

As I mentioned, the exact same steps have worked on real hardware. The pages are displayed normally.

I don't have no general problem with graphical programs, everything else works perfectly with my VcXsrv (emacs, xterm, xclock, all is fine).

If you need more or more detailed information I can provide it.

Please comment.

Thanks in advance.

jmercouris commented 4 years ago

Hello Paxsali,

Firstly, thank you so much for trying to get this to work on Windows. That would be really cool to have an option for so many more people to have access to Nyxt!

I'm not a Windows user, but hopefully I can provide some assistance, or at least some attention to this thread.

Download latest release, e.g.: https://github.com/atlas-engineer/nyxt/releases/tag/1.4.0

That is not the latest release. The latest release would be 2-pre-release-1. Please try working with this version of the codebase instead. It introduces significant architectural and dependency changes.

After starting next, the "getting started" page does not appear - it's just a blank screen.

There are probably communication issues with D-Bus on Windows- making version 1.5 and earlier prohibitively difficult to work. That is why I strongly suggest you build from source version 2-pre-release-1.

I don't have no general problem with graphical programs, everything else works perfectly with my VcXsrv (emacs, xterm, xclock, all is fine).

Understood. I don't think the problem is graphical in this case :-)

thanks,

-John

paxsali commented 4 years ago

Ok, I haven't considered to check pre-releases and what I meant was "latest stable release", actually. Will try to compile it from source then share the results.

Thank for clarifying.

paxsali commented 3 years ago

Hello,

I finally found time to catch up on this. I got nyxt build & running on WSL2 on Windows 10.

These are the steps that I followed to get it flying:

# READ: https://github.com/atlas-engineer/nyxt/tree/master/documents#nyxt-developer-readme

# pre-reqs (done as root)
$ apt install sbcl libwebkit2gtk-4.0-dev glib-networking \
    gsettings-desktop-schemas libfixposix-dev xclip notify-osd enchant

# download source, extract somewhere, cd to it.

$ ls -l
Permissions Size User    Date Modified Git Name
.rw-------  299k paxsali 26 Oct 23:42   -- nyxt-2-pre-release-3.tar.gz

$ tar xf nyxt-2-pre-release-3.tar.gz

$ cd nyxt-2-pre-release-3
/home/paxsali/tmp/nyxt/nyxt-2-pre-release-3

$ ls -l
Permissions Size User    Date Modified Git Name
drwx------     - paxsali 20 Oct 15:00   -- assets
drwx------     - paxsali 20 Oct 15:00   -- build-scripts
drwx------     - paxsali 20 Oct 15:00   -- documents
drwx------     - paxsali 20 Oct 15:00   -- libraries
drwx------     - paxsali 20 Oct 15:00   -- licenses
drwx------     - paxsali 20 Oct 15:00   -- quicklisp-client
drwx------     - paxsali 20 Oct 15:00   -- quicklisp-libraries
drwx------     - paxsali 20 Oct 15:00   -- source
drwx------     - paxsali 20 Oct 15:00   -- tests
.rw-------  1.5k paxsali 20 Oct 15:00   -- INSTALL
.rw-------  5.3k paxsali 20 Oct 15:00   -- Makefile
.rw-------  9.4k paxsali 20 Oct 15:00   -- nyxt.asd
.rw-------  4.4k paxsali 20 Oct 15:00   -- README.org

# download quicklisp
$ wget https://beta.quicklisp.org/quicklisp.lisp

# install quicklisp
$ export LISP=sbcl
$ $LISP --load quicklisp.lisp
> (quicklisp-quickstart:install)
> (ql:add-to-init-file)

# this step is KEY and isn't documented.
# documentation states that makefile handles it, but it doesn't apparently.
$ cp -av ~/quicklisp quicklisp-client

# install cl-webkit or cl-webengine
$ git clone https://github.com/joachifm/cl-webkit ~/common-lisp/cl-webkit
# git clone https://github.com/atlas-engineer/cl-webengine.git ~/common-lisp/cl-webengine

# install cluffer
$ git clone https://github.com/robert-strandh/Cluffer.git ~/common-lisp/cluffer

$ make all

$ cp -av nyxt ~/local/bin/

However, it seems like any site I'm trying to open throws "certificate-exception web base" message and nothing happens.

I read up on it and apparently there are plenty of opne issues for that.

If anyone minds telling me what to do in such case, I'd be thankful.

The issue can be closed from my side.

jmercouris commented 3 years ago

Can you please include a screenshot? I don't understand, do web pages still fail to render?

Ambrevar commented 3 years ago

However, it seems like any site I'm trying to open throws "certificate-exception web base" message and nothing happens.

What does it mean to throw "certificate-exception web base" messages? In the shell output? What does the Nyxt window look like?

I read up on it and apparently there are plenty of opne issues for that.

Which ones?

paxsali commented 3 years ago

Can you please include a screenshot? I don't understand, do web pages still fail to render?

I don't know about web pages, because of that certificate-exception I cannot load any web pages, but it definetely looks different than before.

Before I had a blank white screen.

Now at least it displays the normal internal welcome page "Welcome to Nyxt ☺" with the "Quick configuration" and "Documentation" sections and such... and there's like buttons at the bottom left left right reload execute buffers and so on...

paxsali commented 3 years ago

However, it seems like any site I'm trying to open throws "certificate-exception web base" message and nothing happens.

What does it mean to throw "certificate-exception web base" messages? In the shell output? What does the Nyxt window look like?

I read up on it and apparently there are plenty of opne issues for that.

Which ones?

This is all I see (Starting page, then www.google.de):

image

image

paxsali commented 3 years ago

That's the console output. I guess nyxt doesn't like either WSL's/Ubuntu's webkit-dev package or maybe it's an issue with VcXsr in general.

Either way I'm gonna skip trying nyxt pre-releases until the final version is out.

$ nyxt
Nyxt version 76cc28c
<INFO> [19:24:46] Listening to socket "/home/paxsali/.local/share/nyxt/nyxt.socket".
<INFO> [19:24:48] Loading session of 2 URLs from "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [19:24:48] Restoring (https://nyxt.atlas.engineer/start).
<INFO> [19:24:49] Loading global history of 6 URLs from "/home/paxsali/.local/share/nyxt/history.lisp".
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [19:24:52] Loading "https://www.google.de/".
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".

(WebKitWebProcess:5969): Gdk-ERROR **: 19:24:52.557: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'GLXBadFBConfig'.
  (Details: serial 172 error_code 163 request_code 149 (GLX) minor_code 21)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [19:24:52] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
Ambrevar commented 3 years ago

None of the Nyxt developer has Windows so we need a Windows user's feedback otherwise we won't be able to fix it (even in for the final version :p).

Two things you could try here:

paxsali commented 3 years ago

This is the output.

$ export GDK_SYNCHRONIZE=1
$ nyxt
Nyxt version 76cc28c
<INFO> [12:22:35] Listening to socket "/home/paxsali/.local/share/nyxt/nyxt.socket".
<INFO> [12:22:37] Loading session of 2 URLs from "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [12:22:37] Restoring (https://nyxt.atlas.engineer/start).
<INFO> [12:22:39] Loading global history of 6 URLs from "/home/paxsali/.local/share/nyxt/history.lisp".
<INFO> [12:22:42] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [12:22:42] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [12:22:42] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [12:22:42] Loading "https://www.google.de/".
<INFO> [12:22:42] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".

(WebKitWebProcess:9577): Gdk-ERROR **: 12:22:43.518: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'GLXBadFBConfig'.
  (Details: serial 209 error_code 163 request_code 149 (GLX) minor_code 21)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
<INFO> [12:22:43] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
<INFO> [12:22:43] Saving session to "/home/paxsali/.local/share/nyxt/sessions/default.lisp".
Ambrevar commented 3 years ago

Thanks. Sadly this does not reveal anything new, I guess only a debugger will give us more information.

Do you know how to use a debugger like GDB?

alpox commented 3 years ago

I just had this exact issue this exact issue with WSL2. The solution was to run X Server (VcXsrv) with wgl set to false.

Now the websites works fine on my end. The certificate exception is still there though.

image