aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--doc/man/smolbote.1.scd88
-rw-r--r--doc/man/smolbote.5.scd (renamed from doc/smolbote.5.asciidoc)25
-rw-r--r--doc/meson.build56
-rw-r--r--doc/smolbote.7.asciidoc39
-rw-r--r--linux/makepkg/PKGBUILD3
6 files changed, 125 insertions, 92 deletions
diff --git a/.gitignore b/.gitignore
index 9a8ff3a..367c3c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,9 +12,7 @@ test/plugins.d
.config
.config.old
-smolbote.*
-
# manpages
-doc/smolbote.5
-doc/smolbote.7
+smolbote.1
+smolbote.5
diff --git a/doc/man/smolbote.1.scd b/doc/man/smolbote.1.scd
new file mode 100644
index 0000000..4ca55b7
--- /dev/null
+++ b/doc/man/smolbote.1.scd
@@ -0,0 +1,88 @@
+smolbote(1)
+
+# NAME
+
+smolbote - yet another no-frills web browser
+
+# SYNOPSIS
+
+*poi* [options] [command/URL(s)]
+
+# DESCRIPTION
+
+smolbote is a cross-platform keep-it-simple free software web browser that
+uses Qt and QtWebEngine.
+
+# USAGE
+
+## Command-line options
+- `-h`, `--help`: Display command-line options list.
+- `-v`, `--version`: Display version information.
+- `--build`: Display build commit.
+- `-c`, `--config`: Set configuration file.
+- `--no-remote`: Don't check for other instances when starting.
+- `-s, --session`: Open the selected session.
+- `--pick-session`: Open all available sessions and select which one to open.
+
+## Profiles
+A Profile is a collection of settings, policies, scripts, cookies, cache and
+history. Profiles can be used to isolate pages from each other.
+
+Off-the-record profiles only use in-memory cache and save no files to disk.
+
+Profiles can be either temporary or permanent. Temporary profiles expire when
+the application is closed, whereas permanent profiles are kept between runs.
+
+Each window has a default profile it uses when opening new tabs. This can be
+changed from the window's menu. Additionally, tabs can have their profiles
+individually changed from their context menu.
+
+Because profiles store all their data separately, you can log in into the same
+site with a different account from each profile. However, links opened into new
+tabs will still use the subwindow's default profile. For example, you can set a
+profile to hold login information for a site, but all new tabs opened from that
+site would still be using the default off-the-record profile.
+
+## Plugins
+Plugins a way of extending smolbote's functionality using the Qt plugin system.
+They are not to be confused with NPAPI/PPAPI or WebExtension plugins.
+
+To enable a plugin either copy it or symlink it in the plugins.path location,
+or set its absolute path as the plugins.path.
+
+## Filters
+smolbote has a singular URL request filter that is installed onto all profiles.
+Any setting applied to it will be applied to all profiles.
+
+filter.header: A list of header-value pairs, separated by a colon (':').
+
+You can specify multiple headers by using --filter.header multiple times:
+```
+poi --filter.header "Dnt:1" --filter.header "Accept:text/html"
+```
+
+# SEE ALSO
+
+*smolbote*(5) - configuration file and options
+
+# AUTHORS
+
+Maintained by <aqua@iserlohn-fortress.net>.
+
+Up-to-date sources can be found at https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote
+
+Bug reports and patches can be submitted by email to <aqua@iserlohn-fortress.net>.
+
+# COPYRIGHT
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 3 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/smolbote.5.asciidoc b/doc/man/smolbote.5.scd
index 5b17a36..063a050 100644
--- a/doc/smolbote.5.asciidoc
+++ b/doc/man/smolbote.5.scd
@@ -1,14 +1,11 @@
-= smolbote(5)
-:doctype: manpage
-:man source: smolbote configuration
-:man manual: smolbote configuration manpage
-:toc:
-:homepage: https://neueland.iserlohn-fortress.net/smolbote/
-
-== Name
+smolbote(5) "smolbote configuration"
+
+# NAME
+
smolbote - configuration file and options description
-== Description
+# DESCRIPTION
+
The smolbote configuration is loaded at startup, and is not reloaded when
changed. By default (without any plugins), the browser does not change its
configuration or overwrite this file. Thus, it can be made read-only.
@@ -20,9 +17,9 @@ Lines starting with *#* are considered comments and ignored.
Options taking multiple values (list options) can have multiple values set by
using the same option name multiple times.
-== Sections
+# SECTIONS
-=== Browser Options
+## Browser Options
*browser.stylesheet* (arg):: TODO
@@ -53,7 +50,7 @@ Default downloads location.
*downloads.shortcut* (arg=Ctrl+D)::
Show/Hide downloads widget shortcut.
-=== UI Options
+## UI Options
*mainwindow.height* (arg=720)
*mainwindow.width* (arg=1280)
@@ -93,8 +90,8 @@ Show/Hide downloads widget shortcut.
*subwindow.shortcuts.moveRight* (arg=Ctrl+Shift+P):: Move tab to the right
*subwindow.shortcuts.fullscreen* (arg=F11):: Show page fullscreen
-=== Security Options
-
+## Security Options
+
*filter.hosts* (arg=~/.config/smolbote/hosts.d):: Hostlist
*filter.adblock* arg:: TODO
*filter.header* (list)::
diff --git a/doc/meson.build b/doc/meson.build
index 26175ce..95ca486 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -1,42 +1,30 @@
-asciidoctor = find_program('asciidoctor', required: get_option('manpage'), disabler: true)
+scdoc = find_program('scdoc', required: get_option('manpage'), disabler: true)
+sh = find_program('sh', required: get_option('manpage'), native: true, disabler: true)
-custom_target('manpage.7',
- # list depend_files so the output can be updated if any of them are changed
- depend_files: ['smolbote.7.asciidoc', 'Usage/CommandLine.asciidoc', 'Usage/Configuration.asciidoc', 'Usage/Profile.asciidoc', 'Usage/Plugins.asciidoc', 'Usage/Filter.asciidoc'],
-
- input: 'smolbote.7.asciidoc',
- output: 'smolbote.7',
+man_files = ['man/smolbote.1.scd', 'man/smolbote.5.scd']
- command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'],
+foreach input : man_files
+ topic = input.split('/')[-1].split('.')[-3]
+ section = input.split('.')[-2]
+ output = '@0@.@1@'.format(topic, section)
- build_by_default: get_option('manpage').enabled(),
- install: get_option('manpage').enabled(),
- install_dir: join_paths(get_option('mandir'), 'man7')
-)
+ message('creating manpage target ' + output)
+ custom_target(output,
+ build_by_default: true,
-custom_target('manpage.5',
- # list of files this target depends on
- depend_files: ['smolbote.5.asciidoc'],
+ input: input,
+ output: output,
- input: 'smolbote.5.asciidoc',
- output: 'smolbote.5',
+ # scdoc takes input from stdin, and prints its output to stdout
+ # meson uses 'capture' to store stdout to output, but there is no stdin toggle
+ #command: [scdoc],
+ #capture: true,
- command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'],
+ # workaround using sh
+ command: [sh, '-c', '@0@ < @INPUT0@ > @OUTPUT0@'.format(scdoc.path())],
- build_by_default: get_option('manpage').enabled(),
- install: get_option('manpage').enabled(),
- install_dir: get_option('mandir') / 'man5'
-)
-
-custom_target('manual',
- depend_files: ['smolbote.asciidoc'],
-
- input: 'smolbote.asciidoc',
- output: 'manual.html',
-
- command: [asciidoctor, '-a', 'imagesdir=images', '--out-file=@OUTPUT@', '@INPUT@'],
-
- build_by_default: false,
- install: false
-)
+ install: true,
+ install_dir: '@0@/man@1@'.format(get_option('mandir'), section)
+ )
+endforeach
diff --git a/doc/smolbote.7.asciidoc b/doc/smolbote.7.asciidoc
deleted file mode 100644
index a950816..0000000
--- a/doc/smolbote.7.asciidoc
+++ /dev/null
@@ -1,39 +0,0 @@
-= smolbote(7)
-:doctype: manpage
-:man source: smolbote
-:man manual: smolbote manpage
-:toc:
-:homepage: https://neueland.iserlohn-fortress.net/smolbote/
-
-== Name
-smolbote - yet another no-frills web browser
-
-== Synopsis
-*poi* ['-OPTION' ['...']] ['COMMAND'] ['URL' ['...']]
-
-== Description
-smolbote is a cross-platform keep-it-simple free software web browser based on
-Qt and QtWebEngine.
-
-include::Usage/CommandLine.asciidoc[]
-
-include::Usage/Configuration.asciidoc[]
-
-include::Usage/Profile.asciidoc[]
-
-include::Usage/Plugins.asciidoc[]
-
-include::Usage/Filter.asciidoc[]
-
-== Copyright
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 3 as
-published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/linux/makepkg/PKGBUILD b/linux/makepkg/PKGBUILD
index 105d6f3..179dab3 100644
--- a/linux/makepkg/PKGBUILD
+++ b/linux/makepkg/PKGBUILD
@@ -14,7 +14,7 @@ license=('GPL3')
depends=('qt5-webengine>=5.11.0' 'boost-libs>=1.66.0')
optdepends=('firejail: launch a sandboxed instance')
-makedepends=('git' 'meson' 'boost' 'python-kconfiglib' 'openssl')
+makedepends=('git' 'meson' 'boost' 'python-kconfiglib' 'openssl' 'scdoc')
# this is the central repository
source=("git+https://neueland.iserlohn-fortress.net/gitea/aeon/smolbote.git"
@@ -85,6 +85,7 @@ build() {
# b_lto: Use link time optimization
meson --buildtype=plain --prefix=/usr/local --auto-features=disabled \
-Db_pie=true -Db_lto=true -Dcpp_link_args="-fuse-ld=gold" \
+ -Dmanpage=enabled \
$srcdir/build
# Run menuconfig