config.source('C:\\Users\\USERNAME\\Sync\\Qutebrowser\\config2.py')
config.source
Ongoing
According to
Repology,
the latest
packaged
qutebrowser
is
.
2022-May-22
As of today, this evolving[1]
article
has been on
the web
for
This article assumes you know the basics about the qutebrowser web browser. To learn about qutebrowser, see Infinite Ink’s #qutebrowser Portal.
To get the most flexibility configuring qutebrowser, I recommend
that you use a config.py
file.
To learn
how to create this file
and view
a list of
almost[2]
all
possible
settings,
see Infinite Ink’s
qutebrowser’s Template config.py.
One way to edit your config.py
is to
do the following.
In a plain text editor, open config.py
.[3]
Edit the file.
Save your edits.
Within qutebrowser run the colon command
:config-source
.
Another way
to
edit your config.py
is to do
the following
within qutebrowser.
Run the colon command :config-edit
. This will open config.py
in the editor specified by the c.editor.command
configuration setting.
Edit the file,
save your edits, and quit the editor. qutebrowser will automatically source
the newly edited config.py
.
ℹ | Examples of |
config.source
If you want to use multiple configuration files
or put
some of
your
configuration
settings somewhere other
than qutebrowser’s
config
directory,[3]
you can put a line like the following in your config.py
.
config.source('C:\\Users\\USERNAME\\Sync\\Qutebrowser\\config2.py')
This setting works on my Windows devices
(with USERNAME
replaced with my user name).
💡 |
|
This section is now part of Infinite Ink’s qutebrowser Key Bindings.
Here are
some of my
config.py
settings.
Note that…
A line that begins with a hash (#
) is a comment and is ignored by qutebrowser.
The
emphasized
lines are useful for
editing config.py
from within qutebrowser.
Doing this
is discussed
in
1.2. Via qutebrowser’s configured editor
above.
## In v2.0.0+, one of the following two lines is REQUIRED
# config.load_autoconfig(False)
config.load_autoconfig(True)
c.content.autoplay = False
## In v2.0.0+, use next if you use Adblock Plus AND hosts blocking
c.content.blocking.method = 'both'
c.content.default_encoding = 'utf-8'
c.content.geolocation = False
## Display PDFs within qutebrowser
c.content.pdfjs = True
c.scrolling.bar = 'always'
c.zoom.default = '150%'
config.bind('<Ctrl-=>', 'zoom-in')
config.bind('<Ctrl-->', 'zoom-out')
## Next works on my Windows devices
## Note: 'code.cmd' works but 'code' does not work
c.editor.command = ['code.cmd', '-n', '{file}', '-w']
## Next works on my Windows devices (but is commented out for now)
## Note: 'gvim.bat' works but 'gvim' does not work
# c.editor.command = ['gvim.bat', '-f', '{file}', '-c', 'normal {line}G{column0}l']
## I like my start page(s) and default page to be blank
c.url.start_pages = ["about:blank"]
c.url.default_page = "about:blank"
## I like to save web pages in MHTML format
## Thanks to the next key binding, I can use ,sm to do that
config.bind(',sm', 'set-cmd-text :download --mhtml')
## Next works on Windows
c.downloads.location.directory = '%USERPROFILE%\\Downloads-2023-Q2\\'
## Next works on Windows if %YEARQUARTER% environment variable exists
# c.downloads.location.directory = '%USERPROFILE%\\Downloads-%YEARQUARTER%\\'
c.downloads.location.suggestion = 'both'
## ,ya is my shortcut to “yank asciidoc-formatted link”
config.bind(',ya', 'yank inline {url:pretty}[{title}]')
## ,ym is my shortcut to “yank markdown-formatted link”
## ym (without a leading comma) also works because it is built-in
config.bind(',ym', 'yank inline [{title}]({url:pretty})')
## next is a note to self about how to bind JavaScript code to a key shortcut
# config.bind(',hw', "jseval alert('Hello World')")
c.content.dns_prefetch = False
# c.url.searchengines = {'DEFAULT': 'https://duckduckgo.com/html?q={}'}
## Above is qutebrowser’s default, next is search engine I use
c.url.searchengines = {'DEFAULT': 'https://lite.qwant.com/?q={}'}
‼ | When specifying
an editor
command in Finding out the full executable name of
a command — for example the gcm gvim Get-Command gvim get-command gvim In Bash, run: which gvim In CMD[4] or Bash, run: where gvim |
Sometimes
environment variables work in a config.py
file. For example,
the following settings, which are in
my settings in the previous section,
both work.
c.downloads.location.directory = '%USERPROFILE%\\Downloads-2023-Q2\\' c.downloads.location.directory = '%USERPROFILE%\\Downloads-%YEARQUARTER%\\'
But sometimes environment variables do not work. For example, I have
been unable
to figure out how to use an environment variable in
either of the following
config.py
settings.
config.source('C:\\Users\\USERNAME\\Sync\\qb\\config2.py') config.bind(',t', 'spawn -u "C:\\Users\\USERNAME\\Sync\\qb\\tumblelog-wrapper.cmd"')
qutebrowser variables can be used in the arguments of a qutebrowser command. Here is an excerpt from qutebrowser.org/doc/help/commands.html:
{url}
expands to the URL of the current page
{url:pretty}
expands to the URL in decoded format
{url:host}
, {url:domain}
, {url:auth}
, {url:scheme}
,
{url:username}
,
{url:password}
,
{url:port}
, {url:path}
and {url:query}
expand to the respective parts of the current URL
{title}
expands to the current page’s title
{clipboard}
expands to the clipboard contents
{primary}
expands to the primary selection contents
💡 | To see the difference between
To view what was yanked
by
|
qutebrowser’s default is:
c.content.javascript.enabled = True
If you want to surf the web without
JavaScript,[5]
put the following in your config.py
:
c.content.javascript.enabled = False
If you go to a website that you trust and want to turn on JavaScript, run the following command in qutebrowser:
tsh
This means toggle scripting for the current host during the current qutebrowser session. If you want to make this permanent for this host, use capital letter S, i.e.:
tSh
If you want to include subdomains of the current host, use capital letter H, i.e., one of the following.
tsH tSH
ℹ | t means toggle so if JavaScript is True, a
t[Ss][Hh]
command will change it to False. |
If you use tSh
or tSH
to
permanently allow JavaScript on a host, this
permanence is stored in
a file named
autoconfig.yml
in your qutebrowser config
directory.
The next qutebrowser session will not know
about
autoconfig.yml
settings unless
one of
the following
equivalent
lines is in your config.py
.
config.load_autoconfig(True) config.load_autoconfig()
This section is now part of Infinite Ink’s qutebrowser Userscripts on Windows.
Within qutebrowser, you can display all your
non-default
config.py
and
autoconfig.yml
settings with
any of the following three equivalent commands.
:config-diff :open qute://configdiff o qute://configdiff
Starting with v1.9.0, sometimes — although rarely — qutebrowser crashes. Unfortunately, once a single crash happens, more crashes regularly happen. The fix for this depends on the qutebrowser version.
This type of crash is
not happening much, if at all,
in qutebrowser v2.0.0+.
If
it does happen, you can put the following in your config.py
.
c.qt.workarounds.remove_service_workers = True
In qutebrowser v1.14.1 and older, do the following.
Quit qutebrowser.
Rename
C:\Users\USERNAME\AppData\Roaming\qutebrowser\data\webengine\Service Worker\
to
C:\Users\USERNAME\AppData\Roaming\qutebrowser\data\webengine\Service Worker-2023-04-11-CRASH\
(with USERNAME
and 2023-04-11
replaced with my user name and the
Service Worker
directory’s date stamp).
Restart qutebrowser.
Information about this is in:
For more about qutebrowser, see Infinite Ink’s…
config.py
does not include the config.source
configuration setting, which is discussed above in 2. Compartmentalizing your config.py.:version
command from within qutebrowser.@nm@mathstodon.xyz
or
#InfiniteInk
in it.