4 Copyright 2023-2024 Soren Stoutner <soren@stoutner.com>.
6 This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
8 Permission is granted to copy, distribute and/or modify this document
9 under the terms of the GNU Free Documentation License, Version 1.3
10 or any later version published by the Free Software Foundation;
11 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
13 You should have received a copy of the GNU Free Documentation License
14 along with Privacy Browser PC. If not, see <http://www.gnu.org/licenses/>. -->
16 <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
17 <!-- Privacy Browser’s name -->
18 <!ENTITY privacybrowser "<application>Privacy Browser</application>">
21 <!ENTITY Soren.Stoutner "<personname><firstname>Soren</firstname><surname>Stoutner</surname></personname>">
22 <!ENTITY Soren.Stoutner.mail "<email>soren@stoutner.com</email>">
24 <!-- Set the language of this documentation. -->
25 <!ENTITY % English "INCLUDE">
28 <book id="privacybrowser" lang="&language;">
30 <title>The &privacybrowser; Handbook</title>
33 <author>&Soren.Stoutner; &Soren.Stoutner.mail;</author>
35 <!-- Add translators here.-->
39 <year>2016-2017, 2021-2024</year>
40 <holder>&Soren.Stoutner;</holder>
43 <!-- Documentation license. -->
44 <legalnotice>&FDLNotice;</legalnotice>
47 <date>2024-01-06</date>
49 <!-- The version of Privacy Browser this documentation is written for. -->
50 <releaseinfo>&privacybrowser; version 0.5</releaseinfo>
52 <!-- Abstract about this handbook -->
55 &privacybrowser; is a web browser that respects your privacy.
59 The only way to prevent data from being abused is to prevent it from being collected in the first place.
63 <!-- This is a set of Keywords for indexing by search engines. -->
65 <keyword>KDE</keyword>
66 <keyword>privacy</keyword>
67 <keyword>browser</keyword>
71 <!-- Introduction. -->
72 <chapter id="introduction">
73 <title>Introduction</title>
76 &privacybrowser; is currently in an early alpha state.
77 Most of the features are not yet implemented, but I thought it would be useful to publish it so that users can track the progress and submit feedback.
81 To distinguish between the Android and the PC version, the website, issue tracker,
82 and code base refer to this version as <ulink url="https://www.stoutner.com/privacy-browser-pc/">Privacy Browser PC</ulink>.
86 The best place to discuss the development of Privacy Browser is <ulink url="https://redmine.stoutner.com/projects/privacy-browser-pc/boards">on the forum</ulink>.
87 I also frequently post on my <ulink url="https://fosstodon.org/@privacybrowser">Mastodon account</ulink> regarding the development status.
90 <!-- Qt WebEngine. -->
91 <sect1 id="qt-webengine">
92 <title>Qt WebEngine</title>
95 Privacy Browser uses <ulink url="https://doc.qt.io/qt-5/qtwebengine-index.html">Qt WebEngine</ulink> to render websites.
96 Qt WebEngine is based on the <ulink url="https://www.chromium.org/blink/">Chromium Blink</ulink> source code.
97 Because Privacy Browser is built on the <ulink url="https://api.kde.org/frameworks/index.html">KDE Framework</ulink>,
98 it currently uses the <ulink url="https://community.kde.org/Schedules/Plasma_6">Qt 5</ulink> packages.
102 The current Qt 5 packages are in long-term support mode.
103 From a feature perspective, Qt WebEngine 5.15.x is based on <ulink url="https://wiki.qt.io/QtWebEngine/ChromiumVersions">Chromium 87.0.4280.144</ulink>.
104 Security fixes are backported every few months with <ulink url="https://wiki.qt.io/Qt_5.15_Release#Release_Plan">each release</ulink>.
108 <!-- Bugs and missing features. -->
109 <sect1 id="bugs-and-missing-features">
110 <title>Bugs and Missing Features</title>
113 There is a list of feature requests and known bugs at <ulink url="https://redmine.stoutner.com/projects/privacy-browser-pc/issues">redmine.stoutner.com</ulink>.
114 Users should anticipate that all the current features of <ulink url="https://www.stoutner.com/privacy-browser-android/">Privacy Browser Android</ulink>
115 will also be implemented in Privacy Browser PC.
116 There is no need at this point to create features requests for these as they will be added as I start working on each feature and have a better idea of how they will be implemented.
117 However, each feature that has already been implemented should be bug free.
118 If you discover a bug that is not already documented at <ulink url="https://redmine.stoutner.com/projects/privacy-browser-pc/issues">redmine.stoutner.com</ulink> please add it.
122 Below is a list of known prominent bugs or missing features in this alpha release.
126 <listitem><para>The page zoom is <ulink url="https://redmine.stoutner.com/issues/799">momentarily reset</ulink> every time a new URL is loaded.</para></listitem>
127 <listitem><para>If domain settings change the user agent, loading of the new URL is interrupted and the
128 <ulink url="https://redmine.stoutner.com/issues/821">previous site is reloaded</ulink>.</para></listitem>
129 <listitem><para>Browser <ulink url="https://redmine.stoutner.com/issues/831">error messages are not displayed</ulink> unless JavaScript is enabled.</para></listitem>
130 <listitem><para>Filter lists are <ulink url="https://redmine.stoutner.com/issues/969">not yet implemented</ulink>.</para></listitem>
135 <!-- Using Privacy Browser. -->
136 <chapter id="using-privacy-browser">
137 <title>Using &privacybrowser;</title>
142 <imagedata fileref="privacybrowser-window.png" format="PNG"/>
146 <phrase>Screenshot</phrase>
152 <sect1 id="javascript">
153 <title>JavaScript</title>
156 JavaScript allows web pages to run scripts (programs) on your device. It allows web pages to function more like apps, but it also allows web pages to spy on you.
157 Most of the tracking on the internet does not work when JavaScript is disabled.
158 JavaScript can be toggled by clicking on the privacy shield, which is blue if JavaScript is disabled and red when it is enabled.
161 <imagedata fileref="javascript.png" format="PNG"/>
165 <phrase>JavaScript</phrase>
171 <!-- Local Storage. -->
172 <sect1 id="local-storage">
173 <title>Local Storage</title>
176 <ulink url="https://doc.qt.io/qt-5/qwebenginecookiestore.html#setCookieFilter">Local storage</ulink>
177 in Privacy Browser encompasses cookies, DOM storage, IndexedDB, service workers, and the filesystem API.
178 Local storage can be toggled through an action on the toolbar.
183 <title>Cookies</title>
186 <ulink url="https://en.wikipedia.org/wiki/HTTP_cookie">Cookies</ulink>
187 allow websites to store small pieces of information for a specific host that are sent in the HTTP header every time the browser connects to that host.
188 Privacy Browser allows a maximum of <ulink url="http://browsercookielimits.iain.guru/">180 cookies with a maximum size of 4096 bytes per cookie</ulink> to be set per domain.
189 Cookies are often used to track users across the web, particularly third-party cookies (which are completely blocked in Privacy Browser).
190 They are also used as a security mechanism on websites where you log in to identify it is you as you browse from page to page on a site.
196 <imagedata fileref="cookies.png" format="PNG"/>
200 <phrase>Cookies</phrase>
206 The cookies dialog is opened from <xref linkend="settings-cookies"/>.
207 Durable cookies are shared with all tabs that are opened after they are made durable and are preserved even when Privacy Browser is restarted.
208 This allows users to stay logged in to sites of their choosing. No cookies are durable by default. Making a cookie durable requires specific user interaction.
212 All other cookies are specific to the tab where they are created and are destroyed when the tab is closed.
216 <!-- DOM storage. -->
217 <sect2 id="dom-storage">
218 <title>DOM storage</title>
221 <ulink url="https://en.wikipedia.org/wiki/Web_storage">DOM (Document Object Model) storage</ulink>, also knows as web storage,
222 allows web pages to store information on a client device.
223 The storage capacity is larger than for cookies and the data is not automatically sent in the headers with every HTTP request.
224 In Privacy Browser, each website is allowed to store a <ulink url="https://arty.name/localstorage.html">5 MB of data</ulink> in DOM storage.
225 DOM storage requires JavaScript to function, and, in addition, requires an extra toggle to be enabled.
226 In Privacy Browser, DOM storage is limited to the tab where it is created and is destroyed when the tab is closed.
231 <sect2 id="indexeddb">
232 <title>IndexedDB</title>
235 <ulink url="https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API">IndexedDB</ulink>
236 provides web pages with a local database where they can store “significant amounts of structured data”.
237 There is disagreement on the internet about the maximum size of an IndexedDB database, probably because the various rendering engines keep changing their mind.
238 But it is usually listed at somewhere between 20% and 80% of <emphasis>your entire hard drive</emphasis> with each individual domain limited to some segment of that.
239 IndexedDB requires JavaScript to function.
240 In Privacy Browser, this database is limited to the tab where it is created and is destroyed when the tab is closed.
244 <!-- Service Workers. -->
245 <sect2 id="service-workers">
246 <title>Service Workers</title>
249 <ulink url="https://developer.chrome.com/docs/workbox/service-worker-overview/">Service workers</ulink> are offline JavaScript proxies of a website.
250 They have their own cache that is usually hidden and hard to clear.
251 They were designed by people who want the web browser to become the operating system and run full “apps”.
252 In Privacy Browser, service workers are limited to the tab where they are created and are destroyed when the tab is closed.
256 <!-- Filesystem API. -->
257 <sect2 id="filesystem-api">
258 <title>Filesystem API</title>
261 The <ulink url="https://developer.chrome.com/articles/file-system-access/">filesystem API</ulink> grants the browser direct access to the files on your system.
262 Like service workers, the filesystem API is a summarily bad idea thought up by those who want the browser to become an operating system.
263 Even when JavaScript and local storage are enabled, the filesystem API does not work in Privacy Browser.
269 <sect1 id="user-agent">
270 <title>User Agent</title>
273 The user agent is a text string that is sent as part of every HTTP header that identifies the browser to the web server.
274 Privacy Browser's default user agent is <code>PrivacyBrowser/1.0</code>.
275 Qt WebEngine 5.15.15’s default user agent is <code>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.15 Chrome/87.0.4280.144 Safari/537.36</code>.
279 Over the years user agents have become quite lengthy,
280 partially because they tend to include a <ulink url="https://webaim.org/blog/user-agent-string-history/">brief history of the internet</ulink>.
281 In the modern world they serve almost no good purpose, but some web developers still think they need them so they can send different version of their website to different browsers.
282 Some servers <ulink url="https://www.stoutner.com/user-agent-problems/">refuse to function correctly</ulink> if they don't like the user agent that is sent.
286 At some point in the future Privacy Browser will send no user agent by default.
287 Not only is that currently impossible because the Qt WebEngine doesn't allow you to not send a user agent (I will probably have to fork it to enable that functionality),
288 but even web servers that don't care what the user agent is often refuse to send an answer if there is no user agent at all.
289 Getting rid of this relic of the internet is going to take some time and a retraining of common expectations.
293 <!-- Domain Settings. -->
294 <sect1 id="domain-settings">
295 <title>Domain Settings</title>
298 Domain setting make it easy to automatically change JavaScript, local storage, user agent, and other settings when the domain changes.
299 Domain settings for the current domain can be accessed through the domain settings button at the far right of the URL line edit.
300 Domain settings for all domains can be accessed through <xref linkend="settings-domain-settings"/>. When domain settings are active, the URL line edit will have a green background.
305 <sect1 id="http-pings">
306 <title>HTTP Pings</title>
309 HTTP hyperlinks can have an extra <ulink url="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#ping">ping attribute</ulink> that sends a POST request to a different URL.
310 These HTTP pings are commonly used for tracking.
311 <ulink url="https://www.theregister.com/2019/04/06/apple_safari_changes/">Most browsers</ulink> send HTTP pings without informing the user
312 <ulink url="https://lists.w3.org/Archives/Public/public-html/2018May/0027.html">in any way</ulink>
313 (despite what The Register article says, current versions of FireFox also happily send HTTP pings).
317 Privacy Browser blocks all HTTP pings and presents a dialog informing the user every time the current tab attempts to send one.
318 Hopefully, as more people become aware of what HTTP pings are, web sites will become more embarrassed about using them.
319 This is a classic example of how those who wrote the HTTP specs do not have the best interests of internet users at heart.
320 I would like the day to come when this is removed from both the internet and the spec.
321 Here is an example of me <ulink url="https://forum.f-droid.org/t/the-f-droid-forum-should-stop-tracking-links-with-http-pings/">raising the issue</ulink> with F-Droid.
325 <!-- Spell Checking. -->
326 <sect1 id="spell-checking">
327 <title>Spell Checking</title>
330 Privacy Browser uses the binary <filename>.bdic</filename> Hunspell dictionary format
331 <ulink url="https://doc.qt.io/qt-5/qtwebengine-features.html#spellchecker">utilized by Qt WebEngine</ulink>
332 which was <ulink url="https://sites.google.com/a/chromium.org/dev/developers/how-tos/editing-the-spell-checking-dictionaries">created by Google for Chromium</ulink>.
333 Debian’s Hunspell dictionary language packages are slowly adding support for the <filename>.bdic</filename> format. Those which have are listed by Privacy Browser as suggested packages.
337 Once a <filename>.bdic</filename> dictionary is installed, it can be enabled in Privacy Browser’s settings.
343 <chapter id="commands">
344 <title>Command Reference</title>
346 <!-- Main Window. -->
347 <sect1 id="main-window">
348 <title>Main Window</title>
356 <varlistentry id="file-new-tab">
360 <keycombo action="simul">&Ctrl;<keycap>T</keycap></keycombo>
363 <guimenu>File</guimenu>
365 <guimenuitem>New Tab</guimenuitem>
377 <varlistentry id="file-new-window">
381 <keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
384 <guimenu>File</guimenu>
386 <guimenuitem>New Window</guimenuitem>
397 <!-- Save Archive. -->
398 <varlistentry id="file-save-archive">
402 <keycombo action="simul">&Ctrl;<keycap>A</keycap></keycombo>
405 <guimenu>File</guimenu>
407 <guimenuitem>Save Archive</guimenuitem>
413 Save the webpage as an MHT (MIME encapsulation of aggregate HTML documents) archive.
419 <varlistentry id="file-print">
423 <keycombo action="simul">&Ctrl;<keycap>P</keycap></keycombo>
426 <guimenu>File</guimenu>
428 <guimenuitem>Print</guimenuitem>
439 <!-- Print Preview. -->
440 <varlistentry id="file-print-preview">
444 <keycombo action="simul">&Ctrl;&Shift;<keycap>P</keycap></keycombo>
447 <guimenu>File</guimenu>
449 <guimenuitem>Print Preview</guimenuitem>
455 Display the print preview dialog.
461 <varlistentry id="file-quit">
465 <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
468 <guimenu>File</guimenu>
470 <guimenuitem>Quit</guimenuitem>
476 Quit &privacybrowser;.
489 <varlistentry id="edit-find">
493 <keycombo action="simul">&Ctrl;<keycap>F</keycap></keycombo>
496 <guimenu>Edit</guimenu>
498 <guimenuitem>Find</guimenuitem>
504 Display the find toolbar and focus the find text line edit. If the toolbar is already displayed, the find text line edit is refocused and the text it contains is selected.
511 <varlistentry id="edit-find-next">
518 <guimenu>Edit</guimenu>
520 <guimenuitem>Find Next</guimenuitem>
526 Find the next entry on the page that matches the specified text. This action is only displayed if the find toolbar is visible.
531 <!-- Find Previous. -->
532 <varlistentry id="edit-find-previous">
536 <keycombo action="simul">&Shift;<keycap>F3</keycap></keycombo>
539 <guimenu>Edit</guimenu>
541 <guimenuitem>Find Previous</guimenuitem>
547 Find the previous entry on the page that matches the specified text. This action is only displayed if the find toolbar is visible.
559 <!-- Zoom Default. -->
560 <varlistentry id="zoom-default">
564 <keycombo action="simul">&Ctrl;<keycap>0</keycap></keycombo>
567 <guimenu>View</guimenu>
569 <guimenuitem>Zoom Default</guimenuitem>
575 Return to either the app or the domain default zoom factor.
581 <varlistentry id="zoom-in">
585 <keycombo action="simul">&Ctrl;<keycap>+</keycap></keycombo>
588 <guimenu>View</guimenu>
590 <guimenuitem>Zoom In</guimenuitem>
596 Increment the zoom factor by 0.25. Valid factors range from 0.25 to 5.00.
603 <varlistentry id="zoom-out">
607 <keycombo action="simul">&Ctrl;<keycap>-</keycap></keycombo>
610 <guimenu>View</guimenu>
612 <guimenuitem>Zoom Out</guimenuitem>
618 Decrement the zoom factor by 0.25. Valid factors range from 0.25 to 5.00.
624 <varlistentry id="view-refresh">
631 <guimenu>View</guimenu>
633 <guimenuitem>Refresh</guimenuitem>
639 Reload the website in the current tab. When Refresh is visible, <xref linkend="view-stop"/> is hidden.
644 <!-- Reload and Bypass Cache. -->
645 <varlistentry id="view-reload-and-bypass-cache">
649 <keycombo action="simul">&Ctrl;<keycap>F5</keycap></keycombo>
652 <guimenu>View</guimenu>
654 <guimenuitem>Reload and Bypass Cache</guimenuitem>
660 Reload the website in the current tab bypassing any information in the cache and loading everything from the webserver.
666 <varlistentry id="view-stop">
670 <keycombo action="simul">&Ctrl;&Shift;<keycap>X</keycap></keycombo>
673 <guimenu>View</guimenu>
675 <guimenuitem>Stop</guimenuitem>
681 Stop the loading of the website in the current tab. When Stop is visible, <xref linkend="view-refresh"/> is hidden.
686 <!-- View Source. -->
687 <varlistentry id="view-source">
691 <keycombo action="simul">&Ctrl;<keycap>U</keycap></keycombo>
694 <guimenu>View</guimenu>
696 <guimenuitem>View Source</guimenuitem>
702 Toggle between viewing the source and viewing the rendered website.
707 <!-- View Source in New Tab. -->
708 <varlistentry id="view-source-in-new-tab">
712 <keycombo action="simul">&Ctrl;&Shift;<keycap>U</keycap></keycombo>
715 <guimenu>View</guimenu>
717 <guimenuitem>View Source in New Tab></guimenuitem>
723 Open a new tab displaying the source of the current tab, or a new tab displaying the rendered version if the source is already displayed.
724 Note that right-clicking on the background of a rendered website will display a context menu with a "View page source" entry, which performs the first of these actions.
729 <!-- Developer Tools. -->
730 <varlistentry id="view-developer-tools">
737 <guimenu>View</guimenu>
739 <guimenuitem>Developer Tools</guimenuitem>
745 Display the developer tools, which are used to debug websites.
750 <!-- Full Screen Mode. -->
751 <varlistentry id="view-full-screen-mode">
755 <keycombo action="simul">&Ctrl;&Shift;<keycap>F</keycap></keycombo>
758 <guimenu>View</guimenu>
760 <guimenuitem>Full Screen Mode</guimenuitem>
766 Toggle full screen mode. This performs the same action as <xref linkend="f11"/>.
779 <varlistentry id="go-back">
783 <keycombo action="simul">&Alt;<keycap>Left</keycap></keycombo>
786 <guimenu>Go</guimenu>
788 <guimenuitem>Back</guimenuitem>
794 Navigate back one step in the current tab’s history. The action is disabled if it is not possible to go back.
800 <varlistentry id="go-forward">
804 <keycombo action="simul">&Alt;<keycap>Right</keycap></keycombo>
807 <guimenu>Go</guimenu>
809 <guimenuitem>Forward</guimenuitem>
815 Navigate forward one step in the current tab’s history. The action is disabled if it is not possible to go forward.
821 <varlistentry id="go-home">
825 <keycombo action="simul">&Alt;<keycap>Home</keycap></keycombo>
828 <guimenu>Go</guimenu>
830 <guimenuitem>Home</guimenuitem>
836 Load the home page in the current tab.
843 <!-- On-The-Fly Settings. -->
845 <title>On-The-Fly Settings</title>
849 <varlistentry id="on-the-fly-settings-javascript">
853 <keycombo action="simul">&Ctrl;<keycap>J</keycap></keycombo>
856 <guimenu>On-The-Fly Settings</guimenu>
858 <guimenuitem>JavaScript</guimenuitem>
864 Toggle JavaScript in the current tab.
869 <!-- Local Storage. -->
870 <varlistentry id="on-the-fly-settings-local-storage">
874 <keycombo action="simul">&Ctrl;<keycap>L</keycap></keycombo>
877 <guimenu>On-The-Fly Settings</guimenu>
879 <guimenuitem>Local Storage</guimenuitem>
885 Toggle local storage in the current tab.
890 <!-- DOM Storage. -->
891 <varlistentry id="on-the-fly-settings-dom-storage">
895 <keycombo action="simul">&Ctrl;<keycap>D</keycap></keycombo>
898 <guimenu>On-The-Fly Settings</guimenu>
900 <guimenuitem>DOM Storage</guimenuitem>
906 Toggle DOM storage in the current tab.
914 <title>User Agent</title>
917 <!-- Privacy Browser. -->
918 <varlistentry id="user-agent-privacy-browser">
922 <keycombo action="simul">&Ctrl;&Alt;<keycap>P</keycap></keycombo>
925 <guimenu>On-The-Fly Settings</guimenu>
927 <guisubmenu>User Agent</guisubmenu>
929 <guimenuitem>Privacy Browser</guimenuitem>
935 Use the Privacy Browser user agent for the current tab.
940 <!-- WebEngine Default. -->
941 <varlistentry id="user-agent-webengine-default">
945 <keycombo action="simul">&Ctrl;&Alt;<keycap>W</keycap></keycombo>
948 <guimenu>On-The-Fly Settings</guimenu>
950 <guisubmenu>User Agent</guisubmenu>
952 <guimenuitem>WebEngine Default</guimenuitem>
958 Use the WebEngine Default user agent for the current tab.
963 <!-- Firefox on Linux. -->
964 <varlistentry id="user-agent-firefox-linux">
968 <keycombo action="simul">&Ctrl;&Alt;<keycap>F</keycap></keycombo>
971 <guimenu>On-The-Fly Settings</guimenu>
973 <guisubmenu>User Agent</guisubmenu>
975 <guimenuitem>Firefox on Linux</guimenuitem>
981 Use the Firefox on Linux user agent for the current tab.
986 <!-- Chromium on Linux. -->
987 <varlistentry id="user-agent-chromium-linux">
991 <keycombo action="simul">&Ctrl;&Alt;<keycap>C</keycap></keycombo>
994 <guimenu>On-The-Fly Settings</guimenu>
996 <guisubmenu>User Agent</guisubmenu>
998 <guimenuitem>Chromium on Linux</guimenuitem>
1004 Use the Chromium on Linux user agent for the current tab.
1009 <!-- Firefox on Windows. -->
1010 <varlistentry id="user-agent-firefox-windows">
1014 <keycombo action="simul">&Ctrl;&Alt;&Shift;<keycap>F</keycap></keycombo>
1017 <guimenu>On-The-Fly Settings</guimenu>
1019 <guisubmenu>User Agent</guisubmenu>
1021 <guimenuitem>Firefox on Windows</guimenuitem>
1027 Use the Firefox on Windows user agent for the current tab.
1032 <!-- Chrome on Windows. -->
1033 <varlistentry id="user-agent-chrome-windows">
1037 <keycombo action="simul">&Ctrl;&Alt;&Shift;<keycap>C</keycap></keycombo>
1040 <guimenu>On-The-Fly Settings</guimenu>
1042 <guisubmenu>User Agent</guisubmenu>
1044 <guimenuitem>Chrome on Windows</guimenuitem>
1050 Use the Chrome on Windows user agent for the current tab.
1055 <!-- Edge on Windows. -->
1056 <varlistentry id="user-agent-edge-windows">
1060 <keycombo action="simul">&Ctrl;&Alt;<keycap>E</keycap></keycombo>
1063 <guimenu>On-The-Fly Settings</guimenu>
1065 <guisubmenu>User Agent</guisubmenu>
1067 <guimenuitem>Edge on Windows</guimenuitem>
1073 Use the Edge on Windows user agent for the current tab.
1078 <!-- Safari on macOS. -->
1079 <varlistentry id="user-agent-safari-macOS">
1083 <keycombo action="simul">&Ctrl;&Alt;<keycap>S</keycap></keycombo>
1086 <guimenu>On-The-Fly Settings</guimenu>
1088 <guisubmenu>User Agent</guisubmenu>
1090 <guimenuitem>Safari on macOS</guimenuitem>
1096 Use the Safari on macOS user agent for the current tab.
1101 <!-- Custom User Agent. -->
1102 <varlistentry id="user-agent-custom">
1106 <keycombo action="simul">&Alt;&Shift;<keycap>C</keycap></keycombo>
1109 <guimenu>On-The-Fly Settings</guimenu>
1111 <guisubmenu>User Agent</guisubmenu>
1113 <guimenuitem>Custom</guimenuitem>
1119 Use the custom user agent for the current tab. This action is only active if a custom user agent is set in the settings.
1131 <!-- Zoom Factor. -->
1132 <varlistentry id="on-the-fly-settings-zoom-factor">
1136 <keycombo action="simul">&Ctrl;&Alt;<keycap>Z</keycap></keycombo>
1139 <guimenu>On-The-Fly Settings</guimenu>
1141 <guimenuitem>Zoom Factor</guimenuitem>
1147 Display the zoom factor dialog.
1154 <!-- Search Engine. -->
1156 <title>Search Engine</title>
1160 <varlistentry id="search-engine-mojeek">
1164 <keycombo action="simul">&Ctrl;&Shift;<keycap>M</keycap></keycombo>
1167 <guimenu>On-The-Fly Settings</guimenu>
1169 <guisubmenu>Search Engine</guisubmenu>
1171 <guimenuitem>Mojeek</guimenuitem>
1177 Use Mojeek as the search engine.
1183 <varlistentry id="search-engine-monocles">
1187 <keycombo action="simul">&Ctrl;&Shift;<keycap>O</keycap></keycombo>
1190 <guimenu>On-The-Fly Settings</guimenu>
1192 <guisubmenu>Search Engine</guisubmenu>
1194 <guimenuitem>Monocles</guimenuitem>
1200 Use Mojeek as the search engine.
1206 <varlistentry id="search-engine-metager">
1210 <keycombo action="simul">&Ctrl;&Shift;<keycap>E</keycap></keycombo>
1213 <guimenu>On-The-Fly Settings</guimenu>
1215 <guisubmenu>Search Engine</guisubmenu>
1217 <guimenuitem>MetaGer</guimenuitem>
1223 Use MetaGer as the search engine.
1229 <varlistentry id="search-engine-google">
1233 <keycombo action="simul">&Ctrl;&Shift;<keycap>G</keycap></keycombo>
1236 <guimenu>On-The-Fly Settings</guimenu>
1238 <guisubmenu>Search Engine</guisubmenu>
1240 <guimenuitem>Google</guimenuitem>
1246 Use Google as the search engine.
1252 <varlistentry id="search-engine-bing">
1256 <keycombo action="simul">&Ctrl;&Shift;<keycap>B</keycap></keycombo>
1259 <guimenu>On-The-Fly Settings</guimenu>
1261 <guisubmenu>Search Engine</guisubmenu>
1263 <guimenuitem>Bing</guimenuitem>
1269 Use Bing as the search engine.
1275 <varlistentry id="search-engine-yahoo">
1279 <keycombo action="simul">&Ctrl;&Shift;<keycap>Y</keycap></keycombo>
1282 <guimenu>On-The-Fly Settings</guimenu>
1284 <guisubmenu>Search Engine</guisubmenu>
1286 <guimenuitem>Yahoo</guimenuitem>
1292 Use Yahoo as the search engine.
1297 <!-- Custom Search Engine. -->
1298 <varlistentry id="search-engine-custom">
1302 <keycombo action="simul">&Ctrl;&Shift;<keycap>C</keycap></keycombo>
1305 <guimenu>On-The-Fly Settings</guimenu>
1307 <guisubmenu>Search Engine</guisubmenu>
1309 <guimenuitem>Custom</guimenuitem>
1315 Use the custom search engine. This action is only active if a custom search engine is set in the settings.
1325 <title>Bookmarks</title>
1328 <!-- Edit Bookmarks. -->
1329 <varlistentry id="bookmarks-edit-bookmarks">
1333 <keycombo action="simul">&Ctrl;&Alt;&Shift;<keycap>B</keycap></keycombo>
1336 <guimenu>Bookmarks</guimenu>
1338 <guimenuitem>Edit Bookamrks</guimenuitem>
1344 Open the bookmark editing dialog.
1349 <!-- View Bookmarks Toolbar. -->
1350 <varlistentry id="bookmarks-view-bookmarks-toolbar">
1354 <keycombo action="simul">&Ctrl;&Alt;<keycap>B</keycap></keycombo>
1357 <guimenu>Bookmarks</guimenu>
1359 <guimenuitem>View Bookmarks Toolbar</guimenuitem>
1365 Toggle the visibility of the bookmarks toolbar.
1370 <!-- Add Bookmark. -->
1371 <varlistentry id="bookmarks-add-bookmark">
1375 <keycombo action="simul">&Ctrl;<keycap>B</keycap></keycombo>
1378 <guimenu>Bookmarks</guimenu>
1380 <guimenuitem>Add Bookmark</guimenuitem>
1391 <!-- Add Folder. -->
1392 <varlistentry id="bookmarks-add-folder">
1396 <keycombo action="simul">&Meta;<keycap>F</keycap></keycombo>
1399 <guimenu>Bookmarks</guimenu>
1401 <guimenuitem>Add Folder</guimenuitem>
1407 Add a bookmark folder. The meta key on most keyboards is the Windows key.
1416 <title>Settings</title>
1419 <!-- Domain Settings. -->
1420 <varlistentry id="settings-domain-settings">
1424 <keycombo action="simul">&Ctrl;&Shift;<keycap>D</keycap></keycombo>
1427 <guimenu>Settings</guimenu>
1429 <guimenuitem>Domain Settings</guimenuitem>
1436 Display the domain settings dialog.
1442 <varlistentry id="settings-cookies">
1446 <keycombo action="simul">&Ctrl;<keycap>;</keycap></keycombo>
1449 <guimenu>Settings</guimenu>
1451 <guimenuitem>Cookies</guimenuitem>
1457 Display the cookies dialog.
1464 <!-- Common Settings and Help Entries. -->
1465 <sect2 id="common-settings-help-menus">
1466 <title>Common Settings and Help Entries</title>
1469 &privacybrowser; has many common &kde; <guimenu>Settings</guimenu> and <guimenu>Help</guimenu> menu items.
1470 For more information read the sections about the <ulink url="help:/fundamentals/ui.html#menus-settings">Settings Menu</ulink>
1471 and <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink>.
1475 <!-- Other Commands. -->
1477 <title>Other Commands</title>
1480 <!-- Find Case Sensitive. -->
1481 <varlistentry id="find-case-sensitive">
1484 &Ctrl;+<keycap>S</keycap>
1490 Toggle find case sensitive if the find toolbar is visible.
1495 <!-- Open link in new tab. -->
1496 <varlistentry id="new-tab">
1499 &Ctrl;+&Shift;+Click
1505 Open link in new tab. This performs the same action as right-clicking on the link and selecting “Open link in new tab”.
1510 <!-- Open link in background tab. -->
1511 <varlistentry id="new-background-tab">
1520 Open link in new background tab. This performs the same action as right-clicking on the link and selecting “Open link in new background tab”.
1525 <!-- Open link in new window. -->
1526 <varlistentry id="new-window">
1535 Open link in new window. This performs the same action as right-clicking on the link and selecting “Open link in new window”.
1541 <varlistentry id="save-link">
1550 Save link. This performs the same action as right-clicking on the link and selecting “Save link”.
1556 <varlistentry id="f11">
1559 <keycap>F11</keycap>
1565 Toggle full screen mode. This performs the same action as <xref linkend="view-full-screen-mode"/>.
1571 <varlistentry id="escape">
1574 <keycap>&Esc;</keycap>
1580 Escape runs the first command that applies from the following list.
1586 Exit full screen browsing.
1592 Clear the find text line edit and the find text highlights.
1598 Hide the find text toolbar.
1608 <!-- Cookies Dialog. -->
1609 <sect1 id="cookies-dialog">
1610 <title>Cookies Dialog</title>
1613 The cookies dialog is accessed through <xref linkend="settings-cookies"/> (see <xref linkend="cookies"/>).
1616 <sect2 id="cookies-dialog-commands">
1617 <title>Commands</title>
1620 <!-- Add Cookie. -->
1621 <varlistentry id="add-cookie">
1630 Open the add cookie dialog.
1635 <!-- Edit Cookie. -->
1636 <varlistentry id="edit-cookie">
1645 Open the edit cookie dialog. This command is only valid if a cookie is currently selected.
1650 <!-- Delete Cookies. -->
1651 <varlistentry id="delete-cookies">
1654 <keycap>D</keycap> or <keycap>∇</keycap>
1660 Delete the currently selected cookies. A dialog will confirm the deletion before it is processed.
1665 <!-- Delete All Cookies. -->
1666 <varlistentry id="delete-all-cookie">
1675 Delete all the cookies. A dialog will confirm the deletion before it is processed.
1681 <varlistentry id="close-cookies-dialog">
1684 <keycap>C</keycap> or <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
1690 Close the cookies dialog.
1698 <!-- Save Dialog. -->
1699 <sect1 id="save-dialog">
1700 <title>Save Dialog</title>
1703 The save dialog pops up when a download is initiated.
1706 <sect2 id="save-dialog-commands">
1707 <title>Commands</title>
1711 <varlistentry id="save-dialog-save">
1726 <varlistentry id="save-dialog-close">
1729 <keycap>C</keycap> or <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
1735 Close the save dialog without saving the file.
1745 <chapter id="changelog">
1746 <title>Changelog</title>
1748 <!-- Version 0.5. -->
1749 <sect1 id="version_0.5">
1750 <title><ulink url="https://www.stoutner.com/privacy-browser-pc-0-5/">0.5</ulink> -
1751 <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=commitdiff;h=a385ca128cb7bcc34ab5467edf21eb5e5664471a;ds=sidebyside">12 October 2023</ulink></title>
1754 <listitem><para>Add <ulink url="https://redmine.stoutner.com/issues/968">bookmarks</ulink>.</para></listitem>
1755 <listitem><para>Add <ulink url="https://redmine.stoutner.com/issues/1031">zoom controls</ulink> to the status bar and a
1756 <ulink url="https://redmine.stoutner.com/issues/1044">default zoom shortcut</ulink>.</para></listitem>
1757 <listitem><para>Add <ulink url="https://redmine.stoutner.com/issues/1037">keyboard shortcuts</ulink> for the URL toolbar actions.</para></listitem>
1758 <listitem><para>Add an action to <ulink url="https://redmine.stoutner.com/issues/1022">view page source</ulink>.</para></listitem>
1759 <listitem><para>Change the <ulink url="https://redmine.stoutner.com/issues/1019">domain settings combo boxes</ulink> to list
1760 <code>enabled</code> above <code>disabled</code>.</para></listitem>
1761 <listitem><para>File downloads can now <ulink url="https://redmine.stoutner.com/issues/869">show the size</ulink> before the download begins.</para></listitem>
1762 <listitem><para>Add PIE (<ulink url="https://redmine.stoutner.com/issues/1021">Position Independent Executable</ulink>) compiler flags.</para></listitem>
1763 <listitem><para>Fix a bug that sometimes allowed <ulink url="https://redmine.stoutner.com/issues/1018">multiple domain settings to be created</ulink>.</para></listitem>
1764 <listitem><para>Fix the download notification <ulink url="https://redmine.stoutner.com/issues/1017">not being cleared on Xfce</ulink>.</para></listitem>
1768 <!-- Version 0.4. -->
1769 <sect1 id="version_0.4">
1770 <title><ulink url="https://www.stoutner.com/privacy-browser-pc-0-4/">0.4</ulink> -
1771 <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=commitdiff;h=b4c8c8d02113d14c2a07751eb3b0c1bdeec7abb4">13 June 2023</ulink></title>
1774 <listitem><para>Add a setting to <ulink url="https://redmine.stoutner.com/issues/1002">control spatial navigation</ulink>.</para></listitem>
1775 <listitem><para>Add an action to <ulink url="https://redmine.stoutner.com/issues/982">reload and bypass cache</ulink>.</para></listitem>
1776 <listitem><para>Fix a crash if one Privacy Browser window is closed while a <ulink url="https://redmine.stoutner.com/issues/1010">tab within it is loading</ulink>.</para></listitem>
1777 <listitem><para>Add <ulink url="https://redmine.stoutner.com/issues/1009">keyboard+click commands</ulink> to the Handbook.</para></listitem>
1781 <!-- Version 0.3. -->
1782 <sect1 id="version_0.3">
1783 <title><ulink url="https://www.stoutner.com/privacy-browser-pc-0-3/">0.3</ulink> -
1784 <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=commitdiff;h=ace098e8677ac0d6468b825c73e65b82c0d6993e">8 May 2023</ulink></title>
1787 <listitem><para>Add the changelog <ulink url="https://redmine.stoutner.com/issues/1000">to the Handbook</ulink>.</para></listitem>
1788 <listitem><para>Add the missing <ulink url="https://redmine.stoutner.com/issues/999">current domain settings icon</ulink> on Gnome and Xfce.</para></listitem>
1789 <listitem><para>Make changes to <ulink url="https://redmine.stoutner.com/issues/1005">build on Guix</ulink>.</para></listitem>
1793 <!-- Version 0.2. -->
1794 <sect1 id="version_0.2">
1795 <title><ulink url="https://www.stoutner.com/privacy-browser-pc-0-2/">0.2</ulink> -
1796 <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=commitdiff;h=44b5d3a1f6a5e7fc2aa8530845f26eba7bc26f9a">17 April 2023</ulink></title>
1799 <listitem><para>Fix a crash on GNOME when <ulink url="https://redmine.stoutner.com/issues/994">downloading a file</ulink> with local storage disabled.</para></listitem>
1800 <listitem><para>Fix problems with <ulink url="https://redmine.stoutner.com/issues/992">missing</ulink>
1801 <ulink url="https://redmine.stoutner.com/issues/993">icons</ulink> on GNOME.</para></listitem>
1802 <listitem><para>Display an <ulink url="https://redmine.stoutner.com/issues/980">animated favorite icon</ulink> while a webpage is loading.</para></listitem>
1803 <listitem><para><ulink url="https://redmine.stoutner.com/issues/975">Fix the Handbook</ulink> on non-KDE systems.</para></listitem>
1804 <listitem><para>Change the <ulink url="https://redmine.stoutner.com/issues/978">order of entries</ulink> in the WebEngine context menu.</para></listitem>
1805 <listitem><para>Make spellcheck languages <ulink url="https://redmine.stoutner.com/issues/958">easier to click on</ulink>.</para></listitem>
1806 <listitem><para>Only generate a HTTP ping dialog if the <ulink url="https://redmine.stoutner.com/issues/979">request is made by the current tab</ulink>.</para></listitem>
1807 <listitem><para>Add a section to the Handbook about <ulink url="https://redmine.stoutner.com/issues/976">HTTP pings</ulink>.</para></listitem>
1811 <!-- Version 0.1. -->
1812 <sect1 id="version_0.1">
1813 <title><ulink url="https://www.stoutner.com/privacy-browser-pc-0-1/">0.1</ulink> -
1814 <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=commitdiff;h=73459c6685ec5e58d776f2594c9b587802363b1c">11 March 2023</ulink></title>
1817 <listitem><para>Initial release.</para></listitem>
1824 <title>Questions and Answers</title>
1826 <qandaset id="faqlist">
1828 <!-- Why are there no questions. -->
1831 Why are there no questions?
1837 Because Privacy Browser is so perfectly designed that none have ever been asked. Also, because this is an alpha release and nobody has had a chance to ask them yet. ;)
1845 <chapter id="credits">
1846 <title>Credits and License</title>
1849 Privacy Browser PC copyright 2016-2017,2021-2024 Soren Stoutner <ulink url="mailto:soren@stoutner.com">soren@stoutner.com</ulink>.
1853 <sect1 id="program">
1854 <title>Program</title>
1857 The source code is available at <ulink url="https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=summary">gitweb.stoutner.com</ulink>
1858 or by running <filename>git clone https://git.stoutner.com/PrivacyBrowserPC.git</filename>.
1866 Translations will be added in a future release.
1872 <!-- The program license. -->
1876 <!-- Documentation. -->
1877 <sect1 id="documentation">
1878 <title>Documentation</title>
1881 <filename>doc/index.docbook</filename> and <filename>src/com.stoutner.privacybrowser.appdata.xml</filename> are released under the
1882 <ulink url="https://www.gnu.org/licenses/fdl-1.3.html">GFDL-1.3 license</ulink> with no Front-Cover or Back-Cover Texts or Invariant Sections.
1883 All other documentation is released under the <ulink url="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</ulink>.
1886 <!-- The documentation license. -->
1892 <title>Icons</title>
1897 <imagedata fileref="privacybrowser.png" format="PNG"/>
1905 </inlinemediaobject>
1909 <imagedata fileref="javascript.png" format="PNG"/>
1917 </inlinemediaobject>
1921 <imagedata fileref="privacybrowser-monochrome.png" format="PNG"/>
1926 Privacy Browser Monochrome
1929 </inlinemediaobject>
1931 are derived from <filename>security</filename> and <filename>language</filename>, which are part of the <ulink url="https://fonts.google.com/icons">Android Material icon set</ulink>
1932 and are released under the <ulink url="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</ulink>. Modifications copyright 2016-2017,2021-2023 Soren Stoutner.
1933 The resulting images are released under the <ulink url="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</ulink>.
1939 <imagedata fileref="loading.gif" format="GIF"/>
1947 </inlinemediaobject>
1949 comes from <ulink url="https://github.com/Codelessly/FlutterLoadingGIFs/blob/master/packages/cupertino_activity_indicator_selective.gif">FlutterLoadingGIFs</ulink>
1950 where it is named <filename>cupertino_activity_indicator_selective.gif</filename>.
1951 It is released under the <ulink url="https://opensource.org/license/0bsd/">Zero-Clause BSD License</ulink>.