<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>qutebrowser development blog</title><link>https://blog.qutebrowser.org/</link><description></description><lastBuildDate>Wed, 14 Dec 2022 21:19:56 +0100</lastBuildDate><item><title>Happy 9th birthday, qutebrowser!</title><link>https://blog.qutebrowser.org/happy-9th-birthday-qutebrowser.html</link><description>&lt;p&gt;qutebrowser is turning 9 today! I’ll use the opportunity for a – perhaps
slightly tl;dr – overview of how it all came to be. As you might notice
by the length of this post, stopping to write once I started writing
something like this… isn’t exactly my forte! Hopefully …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 14 Dec 2022 21:19:56 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2022-12-14:/happy-9th-birthday-qutebrowser.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Better nightly builds on CI, state of Qt 6 support, and steps towards v3</title><link>https://blog.qutebrowser.org/better-nightly-builds-on-ci-state-of-qt-6-support-and-steps-towards-v3.html</link><description>&lt;p&gt;Today I've worked on improving the nightly build support on CI, and nightly builds are now finally available as individual files instead of being zipped into one big one.&lt;/p&gt;
&lt;p&gt;This means it's now easier for people on macOS and Windows to test the latest changes before they are released, by …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 22 Jun 2022 15:17:28 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2022-06-22:/better-nightly-builds-on-ci-state-of-qt-6-support-and-steps-towards-v3.html</guid></item><item><title>CVE-2021-41146: Arbitrary command execution in qutebrowser on Windows via URL handler</title><link>https://blog.qutebrowser.org/cve-2021-41146-arbitrary-command-execution-in-qutebrowser-on-windows-via-url-handler.html</link><description>&lt;p&gt;I'm happy to announce that I just released qutebrowser v2.4.0!&lt;/p&gt;
&lt;p&gt;This release fixes a high-severity arbitrary command execution on Windows via
URL handlers, see the &lt;a class="reference external" href="https://github.com/qutebrowser/qutebrowser/security/advisories/GHSA-vw27-fwjf-5qxm"&gt;security advisory&lt;/a&gt;
and &lt;a class="reference external" href="https://github.com/qutebrowser/qutebrowser/commit/8f46ba3f6dc7b18375f7aa63c48a1fe461190430"&gt;commit message&lt;/a&gt;
for details.&lt;/p&gt;
&lt;p&gt;Windows users are urged to update as soon as possible. For everyone
else, this is a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 21 Oct 2021 19:28:57 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2021-10-21:/cve-2021-41146-arbitrary-command-execution-in-qutebrowser-on-windows-via-url-handler.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser moving to Libera Chat</title><link>https://blog.qutebrowser.org/qutebrowser-moving-to-libera-chat.html</link><description>&lt;p&gt;This blog has been lying dormant for almost a year now, but rest assured it's
still alive. I usually don't bother posting minor release announcements here
(they can be found on the &lt;a class="reference external" href="https://lists.schokokeks.org/mailman/listinfo.cgi/qutebrowser-announce"&gt;announcement mailinglist&lt;/a&gt; as
well as the &lt;a class="reference external" href="https://www.reddit.com/r/qutebrowser/"&gt;subreddit&lt;/a&gt;),
on top of that I totally forgot writing a blog post …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 26 May 2021 10:52:52 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2021-05-26:/qutebrowser-moving-to-libera-chat.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Paying it forward</title><link>https://blog.qutebrowser.org/paying-it-forward.html</link><description>&lt;p&gt;As mentioned in my &lt;a class="reference external" href="https://blog.qutebrowser.org/paving-the-road-towards-qutebrowser-v20.html"&gt;last post&lt;/a&gt;, I'm earning what's basically a small part-time
income from qutebrowser donations - thanks again to everyone who's donating
money, it means a lot!&lt;/p&gt;
&lt;p&gt;To pay it forward, I decided to donate to some of the projects qutebrowser is
relying on:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;3$ per month (indefinitely) to …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 12 Jun 2020 12:02:48 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2020-06-12:/paying-it-forward.html</guid></item><item><title>Paving the road towards qutebrowser v2.0</title><link>https://blog.qutebrowser.org/paving-the-road-towards-qutebrowser-v20.html</link><description>&lt;p&gt;Today, it's been exactly 6 months since I launched the
&lt;a class="reference external" href="https://github.com/sponsors/The-Compiler"&gt;GitHub Sponsors campaign&lt;/a&gt; - time flies!&lt;/p&gt;
&lt;p&gt;I wanted to use this opportunity to update everyone on what has been going on,
on my plans for qutebrowser's future, and on various other bits and bytes - I
have a lot of things I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 30 Apr 2020 22:15:46 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2020-04-30:/paving-the-road-towards-qutebrowser-v20.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>2019 qutebrowser crowdfunding - reminder</title><link>https://blog.qutebrowser.org/2019-qutebrowser-crowdfunding-reminder.html</link><description>&lt;p&gt;Two months ago, I wrote:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Just like in the 2017/2018 crowdfundings, it'll be possible to get t-shirts and stickers again. I'll also add some new swag to the mix :)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Just a quick reminder: If you want physical rewards with the current perk
levels, sign up to the &lt;a class="reference external" href="https://github.com/sponsors/The-Compiler/"&gt;GitHub Sponsors …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 30 Dec 2019 18:54:38 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-12-30:/2019-qutebrowser-crowdfunding-reminder.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser meetup Berlin (2019-11-28)</title><link>https://blog.qutebrowser.org/qutebrowser-meetup-berlin-2019-11-28.html</link><description>&lt;p&gt;I (The-Compiler) am currently in Berlin - I've met with Qt/QtWebEngine
developers at Qt Contributors Summit and had some very interesting development
discussions there. There are some
&lt;a class="reference external" href="https://wiki.qt.io/Category:QtCS2019"&gt;writeups&lt;/a&gt; available in the Qt Wiki.&lt;/p&gt;
&lt;p&gt;Next Thursday (28th) I'd like to have a small qutebrowser user meetup here :)
We'll meet at 19 …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 22 Nov 2019 20:55:50 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-11-22:/qutebrowser-meetup-berlin-2019-11-28.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>2019 qutebrowser crowdfunding with shirts, stickers and more!</title><link>https://blog.qutebrowser.org/2019-qutebrowser-crowdfunding-with-shirts-stickers-and-more.html</link><description>&lt;p&gt;I'm very happy to announce that the next qutebrowser crowdfunding went live
today! o/&lt;/p&gt;
&lt;p&gt;This time, I'm focused on recurring donations via GitHub Sponsors. Those
donations will allow me to work part-time on qutebrowser! Thanks to the GitHub
Matching Fund, all donations (up to $5000 in the first year) will …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 30 Oct 2019 14:51:15 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-10-30:/2019-qutebrowser-crowdfunding-with-shirts-stickers-and-more.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Current qutebrowser roadmap and next crowdfunding</title><link>https://blog.qutebrowser.org/current-qutebrowser-roadmap-and-next-crowdfunding.html</link><description>&lt;p&gt;More than half a year ago, I posted a qutebrowser &lt;a class="reference external" href="https://lists.schokokeks.org/pipermail/qutebrowser-announce/2019-March/000058.html"&gt;roadmap&lt;/a&gt; - I thought it's
about time for an update on how things are looking at the moment!&lt;/p&gt;
&lt;div class="section" id="upcoming-crowdfunding"&gt;
&lt;h2&gt;Upcoming crowdfunding&lt;/h2&gt;
&lt;p&gt;I finished my Bachelor of Science in September at the &lt;a class="reference external" href="https://www.hsr.ch/en/"&gt;University of Applied
Sciences&lt;/a&gt; in Rapperswil.&lt;/p&gt;
&lt;p&gt;Now I'm employed around 16h …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 21 Oct 2019 15:50:02 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-10-21:/current-qutebrowser-roadmap-and-next-crowdfunding.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Crowdfunding 2019 ideas</title><link>https://blog.qutebrowser.org/crowdfunding-2019-ideas.html</link><description>&lt;p&gt;Just a quick announcement: I'm planning another crowdfunding in 2019, likely
focused on monthly donations so I can spend 2-3 days a week on qutebrowser
soon!&lt;/p&gt;
&lt;p&gt;With this survey, I want to gather some ideas/opinions about possible
merchandise and some other topics:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://s.cmpl.cc/ideas"&gt;https://s.cmpl.cc/ideas&lt;/a&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 05 Aug 2019 16:46:38 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-08-05:/crowdfunding-2019-ideas.html</guid></item><item><title>Happy birthday, qutebrowser!</title><link>https://blog.qutebrowser.org/happy-birthday-qutebrowser.html</link><description>&lt;p&gt;5 years ago today, this happened:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
commit 11a94957dc038fc27c5ff976197ad2b2d0352d20
Author: Florian Bruhin &amp;lt;git&amp;#64;the-compiler.org&amp;gt;
Date:   Sat Dec 14 22:15:16 2013 +0100

    Initial commit
&lt;/pre&gt;
&lt;p&gt;That's how qutebrowser looked a day after that (and that commit still
seems to run!): &lt;a class="reference external" href="https://imgur.com/a/xoG1r4G"&gt;https://imgur.com/a/xoG1r4G&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Exactly a year later, things …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 05 Aug 2019 16:46:38 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2019-08-05:/happy-birthday-qutebrowser.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>CVE-2018-10895: Remote code execution due to CSRF in qutebrowser</title><link>https://blog.qutebrowser.org/cve-2018-10895-remote-code-execution-due-to-csrf-in-qutebrowser.html</link><description>&lt;div class="section" id="description"&gt;
&lt;h2&gt;Description&lt;/h2&gt;
&lt;p&gt;Due to a CSRF vulnerability affecting the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;qute://settings&lt;/span&gt;&lt;/tt&gt; page, it was
possible for websites to modify qutebrowser settings. Via settings like
&lt;tt class="docutils literal"&gt;editor.command&lt;/tt&gt;, this possibly allowed websites to execute arbitrary code.&lt;/p&gt;
&lt;p&gt;This issue has been assigned &lt;a class="reference external" href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10895"&gt;CVE-2018-10895&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="affected-versions"&gt;
&lt;h2&gt;Affected versions&lt;/h2&gt;
&lt;p&gt;The issue was introduced in v1.0.0, as …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 11 Jul 2018 18:02:29 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2018-07-11:/cve-2018-10895-remote-code-execution-due-to-csrf-in-qutebrowser.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser v1.3.3 released (security update!)</title><link>https://blog.qutebrowser.org/qutebrowser-v133-released-security-update.html</link><description>&lt;p&gt;I've just released qutebrowser v1.3.3, which fixes an XSS vulnerability
on the qute://history page (:history).&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;The vulnerability allowed websites to inject HTML into the page via a
crafted title tag …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 22 Jun 2018 02:04:18 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2018-06-22:/qutebrowser-v133-released-security-update.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser v1.2.0 released!</title><link>https://blog.qutebrowser.org/qutebrowser-v120-released.html</link><description>&lt;p&gt;I'm happy to announce that I just released qutebrowser v1.2.0!&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;This release comes with a long changelog, but the most interesting changes are
probably initial support for per-domain settings (I've had …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 09 Mar 2018 23:28:43 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2018-03-09:/qutebrowser-v120-released.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>T-Shirts shipped, initial implementation of per-domain settings</title><link>https://blog.qutebrowser.org/t-shirts-shipped-initial-implementation-of-per-domain-settings.html</link><description>&lt;p&gt;Last Saturday, I finally managed to ship all t-shirts with some much appreciated
help from a friend and my SO! You should hopefully get yours soon (I'd imagine
starting today for people from Germany). &lt;strong&gt;I'd really appreciate it if you could
send me a quick mail (mail&amp;#64;qutebrowser.org) or …&lt;/strong&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 20 Feb 2018 08:14:44 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2018-02-20:/t-shirts-shipped-initial-implementation-of-per-domain-settings.html</guid></item><item><title>Current state of per-domain settings</title><link>https://blog.qutebrowser.org/current-state-of-per-domain-settings.html</link><description>&lt;p&gt;Since I've been asked for the current state of per-domain various times, here's a quick overview:&lt;/p&gt;
&lt;div class="section" id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;I've planned to implement this as part of the recent &lt;a class="reference external" href="https://www.kickstarter.com/projects/the-compiler/qutebrowser-v10-with-per-domain-settings"&gt;crowdfunding&lt;/a&gt;,
but things have taken a bit longer than expected there (and I like doing things
properly rather than doing more but half-baked …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 06 Nov 2017 22:30:08 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-11-06:/current-state-of-per-domain-settings.html</guid></item><item><title>qutebrowser v1.0.0 released!</title><link>https://blog.qutebrowser.org/qutebrowser-v100-released.html</link><description>&lt;p&gt;I'm delighted to announce that I just released qutebrowser v1.0.0!&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;This release comes with many big breaking changes such as the new config and
QtWebEngine by default, so please take a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 12 Oct 2017 11:16:42 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-10-12:/qutebrowser-v100-released.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser v1.0.0 is coming closer</title><link>https://blog.qutebrowser.org/qutebrowser-v100-is-coming-closer.html</link><description>&lt;p&gt;just a quick update to let you know that the last one of four big changes is
now done:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;[x] The new completion, based on sqlite&lt;/li&gt;
&lt;li&gt;[x] The new config system&lt;/li&gt;
&lt;li&gt;[x] Dropping legacy support&lt;/li&gt;
&lt;li&gt;[x] &lt;strong&gt;Making QtWebEngine the default backend&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If QtWebEngine can't be used on your system for …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 28 Sep 2017 21:12:21 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-09-28:/qutebrowser-v100-is-coming-closer.html</guid></item><item><title>New config merged!</title><link>https://blog.qutebrowser.org/new-config-merged.html</link><description>&lt;p&gt;It's been a long time since the last post here - a new update is way overdue,
especially seeing that the new config was merged a week ago!&lt;/p&gt;
&lt;p&gt;Apologies for the delay! After my exams and holidays were finished, I worked for
another two days full-time (plus some more) last week …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Sat, 23 Sep 2017 19:15:11 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-09-23:/new-config-merged.html</guid></item><item><title>Config revolution - Part 1 finished</title><link>https://blog.qutebrowser.org/config-revolution-part-1-finished.html</link><description>&lt;p&gt;Since the last blogpost, I worked on the new config for another 5 days, so we're
on day 17 now (already! Gnah...).&lt;/p&gt;
&lt;p&gt;Sorry there wasn't an update in such a long time. I wanted to write a blog post
multiple times, even wrote about half of it, and then other …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 07 Jul 2017 16:18:28 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-07-07:/config-revolution-part-1-finished.html</guid></item><item><title>Refactoring more things, a working YAML config, and more!</title><link>https://blog.qutebrowser.org/refactoring-more-things-a-working-yaml-config-and-more.html</link><description>&lt;p&gt;It's day 12 of 20, and I did a lot more work on making everything (including
tests) use the new config. I also implemented initial support for reading
from/writing to YAML files.&lt;/p&gt;
&lt;p&gt;This is how things look now:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;154 files changed, 6128 insertions(+), 7000 deletions(-)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is with all …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 20 Jun 2017 21:01:28 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-06-20:/refactoring-more-things-a-working-yaml-config-and-more.html</guid></item><item><title>Refactoring all the things!</title><link>https://blog.qutebrowser.org/refactoring-all-the-things.html</link><description>&lt;div class="section" id="new-config"&gt;
&lt;h2&gt;New config&lt;/h2&gt;
&lt;p&gt;We're on day 8 already (time flies!), and I'm almost finished refactoring the
entire qutebrowser codebase to use the new config. There are still some issues
here and there and some missing changes (for &lt;tt class="docutils literal"&gt;:set&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;qute:config&lt;/tt&gt;
mostly), but qutebrowser is now mostly usable again without needing …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 14 Jun 2017 21:13:15 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-06-14:/refactoring-all-the-things.html</guid></item><item><title>First week</title><link>https://blog.qutebrowser.org/first-week.html</link><description>&lt;p&gt;Phew, days 3, 4 and 5 are over already, and it's more than time for another
update! Lots of code in this one... ;-)&lt;/p&gt;
&lt;div class="section" id="wednesday"&gt;
&lt;h2&gt;Wednesday&lt;/h2&gt;
&lt;p&gt;On Wednesday, I took a closer look at the &lt;a class="reference external" href="https://github.com/qutebrowser/qutebrowser/pull/2295"&gt;completion refactoring&lt;/a&gt; pull request
and some sqlite performance issues it had.&lt;/p&gt;
&lt;p&gt;I was able to get the …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 09 Jun 2017 22:48:36 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-06-09:/first-week.html</guid></item><item><title>First 2 days</title><link>https://blog.qutebrowser.org/first-2-days.html</link><description>&lt;p&gt;Today was the first day in my &amp;quot;office&amp;quot; (the local &lt;a class="reference external" href="https://www.ccczh.ch/"&gt;hackerspace&lt;/a&gt;) working on
qutebrowser, and day 2 of the crowdfunding in total!&lt;/p&gt;
&lt;p&gt;Right now I'm preparing some things for the new config to be possible, and also
finishing some work related to QtWebEngine and Qt 5.9.&lt;/p&gt;
&lt;p&gt;Here's what happened …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 06 Jun 2017 18:45:28 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-06-06:/first-2-days.html</guid></item><item><title>Getting started again</title><link>https://blog.qutebrowser.org/getting-started-again.html</link><description>&lt;p&gt;As you all probably know already, the &lt;a class="reference external" href="https://www.kickstarter.com/projects/the-compiler/qutebrowser-v10-with-per-domain-settings/description"&gt;crowdfunding&lt;/a&gt; for &lt;a class="reference external" href="https://www.qutebrowser.org/"&gt;qutebrowser&lt;/a&gt; ended
up being more than fully funded - thanks to everyone again!&lt;/p&gt;
&lt;p&gt;The funds arrived on my bank account yesterday, minus some 10% fees for
Kickstarter and payment processing. Yesterday also was the last day with
lectures before my summer holidays …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Sat, 03 Jun 2017 21:32:12 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-06-03:/getting-started-again.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Second qutebrowser crowdfunding launched!</title><link>https://blog.qutebrowser.org/second-qutebrowser-crowdfunding-launched.html</link><description>&lt;p&gt;Like last year, I'd love to spend my summer holidays working full-time
on qutebrowser again!&lt;/p&gt;
&lt;p&gt;This is why I started another crowdfunding - with the goal of finally
implementing the new config system. See the &lt;a class="reference external" href="https://www.kickstarter.com/projects/the-compiler/qutebrowser-v10-with-per-domain-settings?ref=1i8eaq"&gt;Kickstarter campaign&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;In a nutshell, that means:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;There's a separate (optional) config file, which …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 18 Apr 2017 17:53:11 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-04-18:/second-qutebrowser-crowdfunding-launched.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>qutebrowser v0.10.0 released</title><link>https://blog.qutebrowser.org/qutebrowser-v0100-released.html</link><description>&lt;p&gt;I'm happy to annouce the release of qutebrowser v0.10.0!&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;I haven't announced the v0.9.0 release in this blog (or any patch releases), but
for v0.10.0 it definitely …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Sat, 25 Feb 2017 22:22:14 +0100</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2017-02-25:/qutebrowser-v0100-released.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Wrapping up and looking at the future</title><link>https://blog.qutebrowser.org/wrapping-up-and-looking-at-the-future.html</link><description>&lt;div class="section" id="looking-back"&gt;
&lt;h2&gt;Looking back&lt;/h2&gt;
&lt;p&gt;As you might have noticed, it's gotten a bit more quiet here again. The reason
for that is that, unfortunately, the 40 crowd-funded days are over (plus a few
extra days), and today I'm starting to study computer science at the
&lt;a class="reference external" href="https://www.hsr.ch/Home.home.0.html?L=4"&gt;University of applied sciences in Rapperswil&lt;/a&gt; (with …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 19 Sep 2016 07:51:34 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-09-19:/wrapping-up-and-looking-at-the-future.html</guid></item><item><title>Days 39/40/41: Lots of features!</title><link>https://blog.qutebrowser.org/days-394041-lots-of-features.html</link><description>&lt;p&gt;A new blogpost is overdue, as I worked on qutebrowser again for the past three
days! A lot of new features arrived, and this will hopefully make QtWebEngine
usable as a daily driver for some people!&lt;/p&gt;
&lt;div class="section" id="adblocking"&gt;
&lt;h2&gt;Adblocking&lt;/h2&gt;
&lt;p&gt;Perhaps the most exciting news first: &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/02bd42cbed8a1faf606efdf107b010c2aba2d064"&gt;adblocking&lt;/a&gt; is now available with
QtWebEngine! The …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 07 Sep 2016 22:44:21 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-09-07:/days-394041-lots-of-features.html</guid></item><item><title>Days 37/38: Hints in master, tests</title><link>https://blog.qutebrowser.org/days-3738-hints-in-master-tests.html</link><description>&lt;div class="section" id="hints"&gt;
&lt;h2&gt;Hints&lt;/h2&gt;
&lt;p&gt;Yesterday I merged the &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1868"&gt;pull request&lt;/a&gt; I opened for the rewritten hint drawing
and &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/9226e3eece7be77ff9d27fae5e97ba11994c59ac"&gt;implemented&lt;/a&gt; the missing bits so only visible hints are considered.&lt;/p&gt;
&lt;p&gt;Together with some other small fixes and cleanups, I then merged the
&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/2b6f4f06986b95b2f520d7ddd484925837d5b890"&gt;qtwebengine-hints&lt;/a&gt; branch, which means hints are now working fine apart from
some corner …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 19 Aug 2016 20:23:01 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-19:/days-3738-hints-in-master-tests.html</guid></item><item><title>Day 36: Hints!</title><link>https://blog.qutebrowser.org/day-36-hints.html</link><description>&lt;p&gt;Today I did a lot more work on hints! After some &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/compare/7c17af3889b15845fbccf9af07c224ca4c4dbe29...new-hints"&gt;refinements&lt;/a&gt; on my hint
drawing branch, I &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1868"&gt;opened&lt;/a&gt; a pull request to get some feedback from other
developers.&lt;/p&gt;
&lt;p&gt;After that, I &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/compare/new-hints...webengine-hints"&gt;continued&lt;/a&gt; working on hints for QtWebEngine, and got the basics
to work:&lt;/p&gt;
&lt;a class="reference external image-reference" href="/images/hints_webengine.png"&gt;&lt;img alt="basic hints with QtWebEngine!" src="/images/hints_webengine_small.png" /&gt;&lt;/a&gt;
&lt;p&gt;However, it doesn't filter hints which …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 18 Aug 2016 00:23:23 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-18:/day-36-hints.html</guid></item><item><title>Days 33-35: Mouse functionality, and rewriting hints</title><link>https://blog.qutebrowser.org/days-33-35-mouse-functionality-and-rewriting-hints.html</link><description>&lt;p&gt;Past Friday and on Monday I wasn't working on qutebrowser (apart from some
usual maintaince tasks) as I was traveling to/from &lt;a class="reference external" href="http://www.evoke.eu/"&gt;Evoke&lt;/a&gt; (which was great!).
But there's a lot to write about from Wednesday, Thursday and today!&lt;/p&gt;
&lt;div class="section" id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;The first thing I got to work on Wednesday was the …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 16 Aug 2016 23:35:50 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-16:/days-33-35-mouse-functionality-and-rewriting-hints.html</guid></item><item><title>Days 31/32: More web elements</title><link>https://blog.qutebrowser.org/days-3132-more-web-elements.html</link><description>&lt;p&gt;Apart from &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/627f743c26f72792293126e12118d3e53f25d161"&gt;fixing&lt;/a&gt; some QtWebEngine &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/27330bd4d1ed67447ce610a0b03784e0b3baaadf"&gt;bugs&lt;/a&gt;, yesterday and today I made some
big progress with the web element code. I successfully &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/dfbadaf7c24f3245e387f33f1347c2e53d74b820"&gt;split&lt;/a&gt; the web element
code into a generic and a QtWebKit part, and then did a first &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/b8e2d5f8f6a3547fede59e1dbc8e65f5e3c7358f"&gt;implementation&lt;/a&gt;
of the web element code for QtWebEngine, which made &lt;tt class="docutils literal"&gt;:navigate prev …&lt;/tt&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 09 Aug 2016 19:40:22 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-09:/days-3132-more-web-elements.html</guid></item><item><title>Days 29/30: Web elements</title><link>https://blog.qutebrowser.org/days-2930-web-elements.html</link><description>&lt;p&gt;A lot of code got moved around last Thursday/Friday!&lt;/p&gt;
&lt;p&gt;I &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/764c23203386b10bd37271ffdd966244bf49071b"&gt;finished&lt;/a&gt; working on the web inspector, which made dealing with javascript
a lot easier! I also &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/08b70f0f4cfb102f41b1105b1b06681d30362c59"&gt;added&lt;/a&gt; a new &lt;tt class="docutils literal"&gt;utils.javascript&lt;/tt&gt; Python module for
various javascript-related utilities.&lt;/p&gt;
&lt;p&gt;While working on the Python/Javascript bridge for web elements, I noticed …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 08 Aug 2016 09:37:17 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-08:/days-2930-web-elements.html</guid></item><item><title>Days 27/28: Settings and web inspector</title><link>https://blog.qutebrowser.org/days-2728-settings-and-web-inspector.html</link><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Yesterday, just as I was getting started with splitting up settings, I noticed
a bad &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/issues/1742"&gt;bug&lt;/a&gt; in how the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;private-browsing&lt;/span&gt;&lt;/tt&gt; setting was handled. Due to …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 08 Aug 2016 09:37:03 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-08:/days-2728-settings-and-web-inspector.html</guid></item><item><title>Day 24-26: Refactoring the WebElement API</title><link>https://blog.qutebrowser.org/day-24-26-refactoring-the-webelement-api.html</link><description>&lt;p&gt;Last Thursday I finished the WebElement API refactoring to the point where the
QtWebKit code and all related tests work normally again, and I merged the
branch.&lt;/p&gt;
&lt;p&gt;On Friday, I did some work because of a major pytest-qt release (2.0) and fixed
some other small issues. After that, I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 01 Aug 2016 18:39:08 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-08-01:/day-24-26-refactoring-the-webelement-api.html</guid></item><item><title>Day 21-23: After Europython and releases</title><link>https://blog.qutebrowser.org/day-21-23-after-europython-and-releases.html</link><description>&lt;p&gt;This week I came back from &lt;a class="reference external" href="https://ep2016.europython.eu/en/"&gt;EuroPython&lt;/a&gt; (which was awesome!), so on Monday I
was busy with responding to issues, reading crash reports and reviewing PRs
which accumulated during my &amp;quot;holiday&amp;quot;.&lt;/p&gt;
&lt;p&gt;Yesterday I &lt;a class="reference external" href="https://blog.qutebrowser.org/qutebrowser-v080-released.html"&gt;released&lt;/a&gt; qutebrowser v0.8.0, as I had to get a new release out
ASAP because of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 27 Jul 2016 18:22:36 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-27:/day-21-23-after-europython-and-releases.html</guid></item><item><title>Day 19/20: Bugs everywhere!</title><link>https://blog.qutebrowser.org/day-1920-bugs-everywhere.html</link><description>&lt;p&gt;If you're a programmer, you might know these days where everything just seems
to fall apart from all the bugs you run into. Thursday and Friday were those
days for me... ;)&lt;/p&gt;
&lt;p&gt;But let's start with the things which went well first! I implemented more
scrolling functionality with QtWebEngine (&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/7adc8ab2d61c63bdcf6eba16fde90979c03725fe"&gt;7adc8ab&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/695864281bd480bbfdb9afb752a4cb47663e6f12"&gt;6958642 …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 26 Jul 2016 14:29:08 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-26:/day-1920-bugs-everywhere.html</guid></item><item><title>qutebrowser v0.8.0 released</title><link>https://blog.qutebrowser.org/qutebrowser-v080-released.html</link><description>&lt;p&gt;I'm happy to annouce the release of qutebrowser v0.8.0!&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;The main reason for this release is that v0.7.0 will break with
PyQt 5.7 which is soon going to …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 26 Jul 2016 14:29:08 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-26:/qutebrowser-v080-released.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Day 18: Javascript</title><link>https://blog.qutebrowser.org/day-18-javascript.html</link><description>&lt;p&gt;Today I was mostly busy with javascript related functionality and writing some
javascript:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Added &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/9c49900f9e98fc9f11115ce2bca864ece6899b59"&gt;logging&lt;/a&gt; for javascript console logging with QtWebEngine&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/e0ab70c8cff1c096d7a8d8c0ede043fe9fc57147"&gt;Don't fail&lt;/a&gt; tests with QtWebEngine &lt;tt class="docutils literal"&gt;STUB: ...&lt;/tt&gt; messages&lt;/li&gt;
&lt;li&gt;Implement :&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/b78b89f04f75c3b113e62179a863dca3395112ec"&gt;scroll-perc&lt;/a&gt; via javascript&lt;/li&gt;
&lt;li&gt;Implement :&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/602d10c495b2ba5eb3318fd346d968008625bb44"&gt;scroll-px&lt;/a&gt; and &lt;tt class="docutils literal"&gt;scroll.to_point&lt;/tt&gt; (used for e.g. marks) via javascript&lt;/li&gt;
&lt;li&gt;Implement :&lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/commit/c83a8a64dcb56e9b47aff4473a6e273b9ca7ca74"&gt;scroll-page&lt;/a&gt; via javascript&lt;/li&gt;
&lt;li&gt;Various related …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 13 Jul 2016 20:17:06 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-13:/day-18-javascript.html</guid></item><item><title>Day 17: Printing and searching</title><link>https://blog.qutebrowser.org/day-17-printing-and-searching.html</link><description>&lt;p&gt;After looking at a &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1639"&gt;pull request&lt;/a&gt; adding a &lt;tt class="docutils literal"&gt;:print &lt;span class="pre"&gt;--pdf&lt;/span&gt;&lt;/tt&gt; flag to directly
print to PDF (and an accompanying test), I noticed I totally forgot to add
printing support to the new tab API. This wasn't caught previously because
there was no test for printing (as it's hard to use …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Wed, 13 Jul 2016 20:16:52 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-13:/day-17-printing-and-searching.html</guid></item><item><title>Sending out qutebrowser and pytest stickers</title><link>https://blog.qutebrowser.org/sending-out-qutebrowser-and-pytest-stickers.html</link><description>&lt;p&gt;Last Thursday, I sent out 68 letters to 19 countries, containing the stickers
for the pytest and qutebrowser crowdfundings!&lt;/p&gt;
&lt;p&gt;I already had the pytest stickers for a while, and recently recieved the
qutebrowser ones as well:&lt;/p&gt;
&lt;a class="reference external image-reference" href="/images/stickers/stickers_1.jpg"&gt;&lt;img alt="qutebrowser stickers" src="/images/stickers/stickers_1_small.jpg" /&gt;&lt;/a&gt;
&lt;a class="reference external image-reference" href="/images/stickers/stickers_2.jpg"&gt;&lt;img alt="qutebrowser and pytest stickers" src="/images/stickers/stickers_2_small.jpg" /&gt;&lt;/a&gt;
&lt;p&gt;As I had the data in a (somewhat messy) CSV from Indiegogo with notes …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 12 Jul 2016 10:50:15 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-12:/sending-out-qutebrowser-and-pytest-stickers.html</guid><category>pytest</category></item><item><title>Day 15/16: Merged!</title><link>https://blog.qutebrowser.org/day-1516-merged.html</link><description>&lt;p&gt;On Friday and today (Monday) a dealt with a lot of little annoying issues, but
I finally got the &lt;tt class="docutils literal"&gt;qtwebengine&lt;/tt&gt; branch with the initial refactoring merged!&lt;/p&gt;
&lt;p&gt;After incoperating some great code review &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1629"&gt;feedback&lt;/a&gt; I got on Thursday and
doing some other cleanups, I thought I was really close to merging …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 11 Jul 2016 19:07:23 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-11:/day-1516-merged.html</guid></item><item><title>Day 13/14: Almost merged!</title><link>https://blog.qutebrowser.org/day-1314-almost-merged.html</link><description>&lt;p&gt;The past two days I was busy with getting stickers shipped out to everyone most
of the time - I'll post a dedicated blogpost about that tomorrow with some
pictures!&lt;/p&gt;
&lt;p&gt;I still got some work in the &lt;tt class="docutils literal"&gt;qtwebengine&lt;/tt&gt; branch done:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Lots and lots of cleanups and small fixes&lt;/li&gt;
&lt;li&gt;Marked failing session …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 07 Jul 2016 23:41:54 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-07:/day-1314-almost-merged.html</guid></item><item><title>Day 12: Tests running!</title><link>https://blog.qutebrowser.org/day-12-tests-running.html</link><description>&lt;p&gt;Today I got all end-to-end tests for the &lt;tt class="docutils literal"&gt;qtwebengine&lt;/tt&gt; branch (still with the
QtWebKit backend!) to work:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;671 passed, 9 skipped, 8 xfailed&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This means almost all qutebrowser code is now refactored to use a well-defined
API over QtWebKit!&lt;/p&gt;
&lt;p&gt;There are still some places (hints/downloads/editor) where I'm cheating …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 05 Jul 2016 23:20:41 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-05:/day-12-tests-running.html</guid></item><item><title>Day 10/11: Refactoring!</title><link>https://blog.qutebrowser.org/day-1011-refactoring.html</link><description>&lt;p&gt;I haven't blogged on Friday, so consider this the blog post for Friday and
Monday!&lt;/p&gt;
&lt;p&gt;On Friday I had to go to the dentist again, so not as much time available as
I'd hoped. I was mainly busy with some more organizational stuff for the
crowdfunding and general maintenance. I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 04 Jul 2016 23:18:12 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-04:/day-1011-refactoring.html</guid></item><item><title>Day 9: A bit of everything</title><link>https://blog.qutebrowser.org/day-9-a-bit-of-everything.html</link><description>&lt;p&gt;I'm back from the pytest sprint, which unfortunately got interrupted by me
having to get my wisdom tooth out (which started to hurt shortly before the
sprint...).&lt;/p&gt;
&lt;p&gt;I'm back on track, but yesterday and today was full with various little things
as aftermath of the sprint, and because I left …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 01 Jul 2016 00:02:47 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-07-01:/day-9-a-bit-of-everything.html</guid></item><item><title>Day 8: More fixing and pytest sprint/training</title><link>https://blog.qutebrowser.org/day-8-more-fixing-and-pytest-sprinttraining.html</link><description>&lt;p&gt;(This blog post is actually a day late as I was busy packing for the pytest
sprint yesterday)&lt;/p&gt;
&lt;p&gt;Not too much exciting stuff this time - I mostly continued working on getting
basic stuff like scrolling and zooming to work after the refactoring, and added
a temporary fix for &lt;tt class="docutils literal"&gt;:navigate&lt;/tt&gt; and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 16 Jun 2016 11:05:15 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-16:/day-8-more-fixing-and-pytest-sprinttraining.html</guid><category>pytest</category><category>pyplanet</category></item><item><title>Day 7: Fixing things</title><link>https://blog.qutebrowser.org/day-7-fixing-things.html</link><description>&lt;div class="section" id="handling-callbacks"&gt;
&lt;h2&gt;Handling callbacks&lt;/h2&gt;
&lt;p&gt;I did a small experiment today, trying to make it easier to use QtWebEngine
functions which expect a callback, like &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;QWebEnginePage::runJavaScript&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Normally, you'd call such a function like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;view&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;data: {}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;view&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runJavaScript&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1 + 1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cb&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;What I …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 14 Jun 2016 21:23:53 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-14:/day-7-fixing-things.html</guid><category>pyplanet</category></item><item><title>Day 6: Branching off</title><link>https://blog.qutebrowser.org/day-6-branching-off.html</link><description>&lt;p&gt;After &lt;a class="reference external" href="https://blog.qutebrowser.org/qutebrowser-v070-released.html"&gt;releasing&lt;/a&gt; v0.7.0 last Friday, I could finally start refactoring stuff
for QtWebEngine support today.&lt;/p&gt;
&lt;p&gt;Nothing really works properly yet, but I was able to open a website:&lt;/p&gt;
&lt;a class="reference external image-reference" href="/images/day_6.png"&gt;&lt;img alt="qutebrowser with QtWebEngine user agent" src="/images/day_6_small.png" /&gt;&lt;/a&gt;
&lt;p&gt;I also merged a &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1570"&gt;pull request&lt;/a&gt; to master which adds a &lt;tt class="docutils literal"&gt;{host}&lt;/tt&gt; replacement
for the title/tab-title format settings, and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 13 Jun 2016 18:08:10 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-13:/day-6-branching-off.html</guid></item><item><title>qutebrowser v0.7.0 released</title><link>https://blog.qutebrowser.org/qutebrowser-v070-released.html</link><description>&lt;p&gt;I'm happy to annouce the release of qutebrowser v0.7.0!&lt;/p&gt;
&lt;p&gt;qutebrowser is a keyboard driven browser with a vim-like, minimalistic
interface. It's written using PyQt and cross-platform.&lt;/p&gt;
&lt;p&gt;As usual the source release is available, binary releases
(Windows as usual, and now also a standalone OS X .app/.dmg and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Fri, 10 Jun 2016 15:55:57 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-10:/qutebrowser-v070-released.html</guid><category>pyplanet</category><category>qtplanet</category></item><item><title>Day 4: Playing whack-a-mole</title><link>https://blog.qutebrowser.org/day-4-playing-whack-a-mole.html</link><description>&lt;p&gt;Today, I felt like I was forced to play whack-a-mole:&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="whack-a-mole" src="/images/mole.png" /&gt;
&lt;p class="caption"&gt;(Image cc by-nc-sa by &lt;a class="reference external" href="https://www.flickr.com/photos/mommysaurus75/5518643830/"&gt;Mommysaurus75&lt;/a&gt; on Flickr)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-good"&gt;
&lt;h2&gt;The good&lt;/h2&gt;
&lt;p&gt;Everything started nicely: Someone posted a &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1564"&gt;pull request&lt;/a&gt; to handle links
with (non-standard) spaces correctly with hints
(&lt;tt class="docutils literal"&gt;&amp;lt;a href=&amp;quot; &lt;span class="pre"&gt;http://example.com&lt;/span&gt; &amp;quot;&amp;gt;&lt;/tt&gt;), I told them how to add a test, they …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 09 Jun 2016 23:04:19 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-09:/day-4-playing-whack-a-mole.html</guid><category>pytest</category></item><item><title>Day 3: Last pull requests and managing requirement files</title><link>https://blog.qutebrowser.org/day-3-last-pull-requests-and-managing-requirement-files.html</link><description>&lt;div class="section" id="managing-requirement-files"&gt;
&lt;h2&gt;Managing requirement files&lt;/h2&gt;
&lt;p&gt;Yesterday evening, I got side-tracked with another &amp;quot;small&amp;quot; side project which
turned out to be a bit bigger.&lt;/p&gt;
&lt;p&gt;qutebrowser comes with &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/tree/master/misc/requirements"&gt;requirement files&lt;/a&gt; which &lt;a class="reference external" href="http://nvie.com/posts/pin-your-packages/"&gt;pin all dependencies&lt;/a&gt; for
the automated tests and other tasks (like linters).&lt;/p&gt;
&lt;p&gt;This includes indirect dependencies to make sure builds are reproducible. For …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Thu, 09 Jun 2016 00:22:21 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-09:/day-3-last-pull-requests-and-managing-requirement-files.html</guid><category>pyplanet</category></item><item><title>Day 2: More pull requests and nicer test output</title><link>https://blog.qutebrowser.org/day-2-more-pull-requests-and-nicer-test-output.html</link><description>&lt;div class="section" id="better-bdd-output"&gt;
&lt;h2&gt;Better BDD output&lt;/h2&gt;
&lt;p&gt;Yesterday evening, a contributor had a nice &lt;a class="reference external" href="https://github.com/The-Compiler/qutebrowser/pull/1552#issuecomment-224047282"&gt;idea&lt;/a&gt; of a better output for
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Behavior_Driven_Development"&gt;BDD&lt;/a&gt; style tests when they fail.&lt;/p&gt;
&lt;p&gt;qutebrowser tests a lot of functionality using end-to-end tests which are
written using the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Gherkin_(software)"&gt;Gherkin&lt;/a&gt; language with the &lt;a class="reference external" href="https://github.com/pytest-dev/pytest-bdd"&gt;pytest-bdd&lt;/a&gt; plugin. Those look
like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Scenario:&lt;/span&gt;&lt;span class="nf"&gt; Going back without …&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Tue, 07 Jun 2016 19:18:07 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-07:/day-2-more-pull-requests-and-nicer-test-output.html</guid><category>pytest</category></item><item><title>Day 1: Merging pull requests, and a stupid bug</title><link>https://blog.qutebrowser.org/day-1-merging-pull-requests-and-a-stupid-bug.html</link><description>&lt;p&gt;Today was my first day of working on QtWebEngine, and as mentioned in the
previous post I started with merging some pull requests before they diverge too
much because of all the planned refactoring.&lt;/p&gt;
&lt;p&gt;In the morning I was in the train without an internet connection, so I worked
on …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Mon, 06 Jun 2016 20:47:30 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-06:/day-1-merging-pull-requests-and-a-stupid-bug.html</guid></item><item><title>About and Timeline</title><link>https://blog.qutebrowser.org/about-and-timeline.html</link><description>&lt;div class="section" id="introduction"&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;A bit over two months ago, I started a &lt;a class="reference external" href="http://igg.me/at/qutebrowser"&gt;crowdfunding campaign&lt;/a&gt; for
&lt;a class="reference external" href="http://www.qutebrowser.org/"&gt;qutebrowser&lt;/a&gt;, with the goal of working full-time on adding &lt;a class="reference external" href="http://doc.qt.io/qt-5/qtwebengine-index.html"&gt;QtWebEngine&lt;/a&gt;
support to it, which will bring more stability, security and features.&lt;/p&gt;
&lt;p&gt;I asked for 3000€ to fund a month of full-time work before starting my studies
in …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florian Bruhin</dc:creator><pubDate>Sun, 05 Jun 2016 13:08:59 +0200</pubDate><guid isPermaLink="false">tag:blog.qutebrowser.org,2016-06-05:/about-and-timeline.html</guid><category>pyplanet</category><category>qtplanet</category><category>pytest</category></item></channel></rss>