Days 27/28: Settings and web inspector

As mentioned in the last post, I wanted to look at settings and having a web inspector before continuing to write javascript for web elements.

Yesterday, just as I was getting started with splitting up settings, I noticed a bad bug in how the private-browsing setting was handled. Due to that, local storage was enabled even when private browsing was turned on, until the browser was restarted once after setting the setting.

After fixing it, I released v0.8.2 with that fix (and some others) on the same day. I also improved the release automation so the build_release.py script automatically uploads release artifacts to GitHub. This should significantly cut down the time I spend on doing future releases.

Today I got most settings to work with QtWebEngine, and marked the rest as QtWebKit-only in the documentation.

After that was done, I started implementing support for having a web inspector with QtWebEngine. Qt's support for that is currently quite spartanic, so qutebrowser has to set the QTWEBENGINE_REMOTE_DEBUGGING environment variable early enough (which means setting developer-extras requires a restart) and then display that port on localhost with a second QWebEngineView.

This worked just fine in a minimal example, but didn't in qutebrowser:

broken web inspector

After digging into it for a while, I found out that simply accessing QWebEngineSettings.globalSettings() caused something in QtWebEngine which made it read the environment variable - I rewrote the code to not immediately call globalSettings and the inspector started to work:

web inspector

There are still some rough edges, but tomorrow I should be able to improve the inspector and start working on the required javascript code.