commit: f357139a192e249df9bb4b5e09ebdea501c8b6da
parent: 824e855ebce5f19697d280cb6c143932beace94b
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sat, 28 Sep 2019 21:57:14 +0200
Update 2019-09-28
Diffstat:
46 files changed, 3413 insertions(+), 252 deletions(-)
diff --git a/categories b/categories
@@ -0,0 +1,10 @@
+cross-armv7a-hardfloat-linux-musleabi
+cross-armv7hf-linux-musleabi
+cross-armv7a-hardfloat-linux-musl
+cross-armv7a-hardfloat-linux-gnueabi
+cross-avr-musl
+cross-avr
+cross-arm-none-musleabi
+cross-arm-none-eabi
+cross-x86_64-pc-linux-musl
+cross-arm-linux-musleabihf
diff --git a/env/gcc b/env/gcc
@@ -3,7 +3,7 @@ AR="gcc-ar"
CC="gcc"
CCC="g++"
CXX="g++"
-CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security"
+#CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security"
#CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wextra -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security"
CXXFLAGS="${CFLAGS}"
NM="gcc-nm"
diff --git a/make.conf b/make.conf
@@ -1,8 +1,10 @@
-PORTDIR="/usr/portage"
-PKGDIR="${PORTDIR}/packages"
-DISTDIR="${PORTDIR}/distfiles"
-USE=" -sslv3 libzfs libressl X dane -handbook cjk -suid xinerama startup-notification alsa -geoloc -geolocation lcms opengl -dbus -libnotify -nsplugin -pin-upstream-blobs -policykit -kwallet socks5 fontconfig latex grammar spell cacert injection xcb luajit cryptsetup -cups upnp icu llvm libproxy gold eme-free -kdesu smp force-gtk3 jumbo-build sasl stunnel idn gtk3 -exiv2 -printsupport libkms"
-USE="$USE jpeg gif png webp mod mikmod v4l wayland gles -gles2 egl clang libcxx acpi truetype -binary xft threads xcsecurity glamor -kde -gucharmap canna urandom lm_sensors d3d9 xa xvmc -vulkan vdpau vaapi (dri) nntp"
+CONFIG_PROTECT="${CONFIG_PROTECT} /usr/share/X11/xkb"
+
+PORTDIR="/var/db/repos/gentoo"
+PKGDIR="/var/cache/binpkgs"
+DISTDIR="/var/cache/distfiles"
+USE=" -sslv3 -webengine -gnome libzfs libressl X dane -handbook cjk -suid xinerama startup-notification alsa -geoloc -geolocation lcms opengl -dbus -libnotify -nsplugin -pin-upstream-blobs -policykit -kwallet socks5 fontconfig latex grammar spell cacert injection xcb luajit cryptsetup -cups upnp icu llvm libproxy gold eme-free -kdesu smp force-gtk3 jumbo-build sasl stunnel idn gtk3 -exiv2 -printsupport libkms"
+USE="$USE jpeg gif png webp mod mikmod modplug v4l wayland gles -gles2 egl clang libcxx acpi truetype -binary xft threads xcsecurity glamor -kde -gucharmap canna urandom lm_sensors d3d9 xa xvmc -vulkan vdpau vaapi (dri) nntp gpm ibus"
USE="$USE -luajittex -libunwind -pulseaudio"
USE="$USE -pax_kernel"
USE="$USE symlink xbuild developer"
@@ -12,7 +14,7 @@ QEMU_SOFTMMU_TARGETS="x86_64 arm arm64 i386 sparc64"
QEMU_USER_TARGETS="${QEMU_SOFTMMU_TARGETS}"
LIRC_DEVICES="all"
ALSA_CARDS="hda-intel usb-audio"
-INPUT_DEVICES="evdev keyboard mouse libinput wacom"
+INPUT_DEVICES="libinput wacom"
VIDEO_CARDS="nouveau (nvidia) (virgl)"
LUA_TARGETS="lua52"
#LUA_IGNORE_TARGET_DUPLICATION="yes" # I’m a maintainer
@@ -22,7 +24,7 @@ DOTNET_TARGETS="net46 net45 net40"
USE="$USE ${DOTNET_TARGETS}"
FEATURES="-nostrip splitdebug"
-GRUB_PLATFORMS="pc"
+GRUB_PLATFORMS="pc ieee1275" # ieee1275 is macppc OpenFirmware
CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
CHOST="x86_64-pc-linux-gnu"
@@ -38,7 +40,15 @@ AS="llvm-as"
CC="clang"
CCC="clang++"
CXX="clang++"
-CXXFLAGS="-Qunused-arguments ${CXXFLAGS}"
-CFLAGS="-Qunused-arguments ${CFLAGS}"
+#CXXFLAGS="-Wno-error=unused-arguments ${CXXFLAGS}" #
+#CFLAGS="-Wno-error=unused-arguments ${CFLAGS}"
NM="llvm-nm"
RANLIB="llvm-ranlib"
+
+# 17.1, remove on profile change in lanodanOverlay
+SYMLINK_LIB=no
+LIBDIR_x86=lib
+
+# Moving to HP dv7
+CFLAGS="-pipe -march=core2 -mtune=core2 -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security -O2 -fno-strict-aliasing"
+CXXFLAGS="${CFLAGS}"
diff --git a/make.conf.catalyst b/make.conf.catalyst
@@ -0,0 +1,16 @@
+# These settings were set by the catalyst build script that automatically
+# built this stage.
+# Please consult /usr/share/portage/config/make.conf.example for a more
+# detailed example.
+CFLAGS="-O2 -pipe"
+CXXFLAGS="${CFLAGS}"
+# WARNING: Changing your CHOST is not something that should be done lightly.
+# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
+CHOST="x86_64-pc-linux-gnu"
+# These are the USE and USE_EXPAND flags that were used for
+# buidling in addition to what is provided by the profile.
+USE="bindist"
+CPU_FLAGS_X86="mmx sse sse2"
+PORTDIR="/usr/portage"
+DISTDIR="${PORTDIR}/distfiles"
+PKGDIR="${PORTDIR}/packages"
diff --git a/make.profile b/make.profile
@@ -0,0 +1 @@
+../../var/db/repos/lanodanOverlay/profiles/client/amd64-pc+
\ No newline at end of file
diff --git a/package.accept_keywords b/package.accept_keywords
@@ -3,61 +3,28 @@ net-im/tootle::lanodanOverlay **
app-editors/vis ~*
www-plugins/passff ~*
www-plugins/passff-host ~*
+app-admin/pass-otp::gentoo ~*
games-arcade/oshu ~*
+app-shells/mksh ~*
+app-misc/g810-led ~*
-=dev-util/perf-4.1.5-r1 ~amd64
-=dev-libs/unibilium-1.1.4 ~amd64
-=dev-libs/libtermkey-0.19 ~amd64
-=sys-boot/grub-2.02 ~amd64
-~dev-python/cryptography-1.9 ~amd64
-=dev-python/asn1crypto-0.22.0 ~amd64
media-fonts/source-pro ~*
-=media-libs/openal-1.18.0 ~amd64
-=media-sound/milkytracker-1.0.0 ~amd64
-=media-sound/ibniz-1.18 ~amd64
-=dev-lang/tcc-0.9.26-r3 ~amd64
sys-firmware/nvidia-firmware ~amd64
dev-util/plan9port ~amd64
media-fonts/unifont ~amd64
-=games-arcade/spout-1.3 **
+~games-arcade/spout-1.3 ~*
=games-arcade/savagewheels-1.6.1-r1 ~amd64
www-client/weboob ~*
app-i18n/unicode-data ~amd64
-=dev-libs/nspr-4.16 ~amd64
=net-misc/drawterm-9999 ~amd64
virtual/pmake ~amd64
=sys-devel/bmake-20170510 ~amd64
=dev-util/amtterm-1.6 ~amd64
-=dev-python/scandir-1.5 ~amd64
-=dev-python/pathlib2-2.3.0 ~amd64
-=app-shells/thefuck-3.18 ~amd64
-=app-i18n/translate-shell-0.9.6.2 ~*
-media-gfx/krita::lanodanOverlay ~amd64
-=games-engines/love-0.10.2 ~amd64
-dev-util/shellcheck ~amd64
=media-gfx/arss-0.2.3-r1 ~amd64
-=media-libs/fontconfig-2.12.4 ~*
=dev-python/scfbuild-0_p20170226 ~amd64
media-fonts/emojione-color-font ~amd64
=dev-util/svgo-0.7.2 ~amd64
-=sys-libs/binutils-libs-2.28.1 ~amd64
-=net-libs/tox-0.1.10 ~amd64
-=net-im/toxic-0.7.2-r1 ~amd64
-=net-im/qtox-1.11.0 ~amd64
-=dev-libs/capstone-3.0.5_rc2-r1 ~amd64
-=app-emulation/wine-mono-4.5.6 ~amd64
-=app-emulation/wine-1.8.7-r3 ~amd64
-=app-emulation/wine-gecko-2.40 ~amd64
-=app-emulation/wine-vanilla-1.8.7-r5 ~amd64
-=app-eselect/eselect-wine-1.5-r1 ~amd64
-=dev-libs/wayland-protocols-1.10 ~amd64
-~dev-python/urllib3-1.20 ~* # support for socks5h:// and socks4a://
-=net-proxy/redsocks-0.5 ~amd64
-app-text/texlive-core ~*
-app-text/texlive ~*
-dev-texlive/* ~*
app-crypt/signify ~amd64
-app-shells/mksh ~*
sci-libs/libticonv ~amd64
sci-libs/libtifiles2 ~amd64
sci-calculators/tilp2 ~amd64
@@ -65,60 +32,20 @@ sci-libs/libticalcs2 ~amd64
sci-libs/libticables2 ~amd64
~dev-python/m2crypto-0.25.1 ~*
=app-misc/bb-1.3.0_rc1-r4 ~amd64
-=app-crypt/johntheripper-1.7.9-r11 ~amd64
=net-vpn/iodine-0.7.0-r2 ~amd64
-=net-vpn/tinc-1.1_pre15 ~amd64
=net-wireless/reaver-1.4-r3 ~amd64
=app-misc/crunch-3.6 ~amd64
-=media-libs/libpng-1.6.32 ~amd64
-=dev-lang/mono-5.2.0.224 ~amd64
-=dev-libs/nss-3.33::gentoo ~amd64
-=media-gfx/gmic-2.0.0 ~*
-=media-gfx/mypaint-1.2.1 ~*
-=media-libs/libmypaint-1.3.0 ~amd64
-=media-libs/cimg-2.0.0 ~amd64
-=app-eselect/eselect-lua-2 ~amd64
+~media-gfx/mypaint-1.2.1 ~*
+app-eselect/eselect-lua::lua ~amd64
~dev-lang/lua-5.2.4 ~amd64
=dev-lang/lua-5.1.5-r101 ~amd64
=media-fonts/fira-mono-3.205 ~amd64
-=dev-texlive/texlive-metapost-2017 ~amd64
-=dev-python/unicodedata2-10.0.0 ~amd64
-=dev-python/defcon-0.3.4 ~amd64
-=dev-python/fonttools-3.15.1 ~amd64
-=dev-python/MutatorMath-2.0.4 ~amd64
-=dev-python/ufoLib-2.1.0 ~amd64
=dev-util/afdko-2.5.65781_p20170727 ~amd64
-=dev-python/pyclipper-1.0.6 ~amd64
-=dev-python/booleanOperations-0.7.1 ~amd64
-=dev-python/fontMath-0.4.3 ~amd64
-=dev-python/compositor-0_p20170303 ~amd64
-=dev-util/patchbin-20160208 ~amd64
-=app-emulation/wine-vanilla-1.8.7-r7 ~amd64
-=app-shells/thefuck-3.23 ~amd64
-=app-eselect/eselect-wine-1.5.2 ~amd64
-=dev-lua/mpack-1.0.4 ~amd64
-=dev-libs/msgpack-1.2.0 ~amd64
-=dev-libs/libvterm-0.0_pre20160305 ~amd64
-=app-editors/neovim-0.2.0 ~amd64
-=www-client/dillo-3.0.5-r1 ~amd64
-=www-client/torbrowser-52.4.0.7.0.5.1.1 ~amd64
-=www-client/qutebrowser-0.9.1 ~amd64
-=www-client/dooble-1.56c ~amd64
-=dev-python/pygments-2.2.0 ~amd64
-=www-client/midori-0.5.11-r2 ~amd64
=dev-python/pypeg2-2.15.2 ~amd64
-=games-misc/ponysay-3.0.2 ~amd64
=games-misc/doge-3.5.0 ~amd64
-=sys-auth/oath-toolkit-2.6.2 ~amd64
-=app-admin/pass-otp-1.0.0 ~amd64
-=sys-power/powerstat-0.02.11 ~amd64
=app-forensics/radamsa-0.5-r1 ~amd64
=app-admin/paxtest-0.9.15-r1 ~amd64
=app-forensics/scalpel-2.0 ~amd64
-=dev-util/radare2-2.0.1 ~*
-=app-forensics/afl-2.51b ~amd64
-=net-libs/ldns-1.6.17-r1 ~*
-=www-plugins/lightspark-0.8.0 ~amd64
~dev-dotnet/msbuildcontrib-2014.06.05.01 ~amd64
~dev-dotnet/dotnetzip-semverd-1.9.3-r1 ~amd64
=sys-fs/ecryptfs-utils-108-r1 ~amd64
@@ -132,110 +59,52 @@ sci-libs/libticables2 ~amd64
~dev-dotnet/msbuild-defaulttasks-15.3-r2 ~amd64
~dev-dotnet/msbuildtasks-1.5.0.240-r3 ~amd64
~dev-dotnet/dotnetzip-semverd-1.9.3-r2 ~amd64
-=dev-lang/mono-5.4.0.201::lanodanOverlay ~*
=sci-biology/ugene-1.20.0 ~amd64
-=net-vpn/tor-0.3.2.10 ~*
=sys-apps/linux-misc-apps-4.4-r1 ~amd64
=games-roguelike/zangband-2.7.4c ~amd64
-=app-eselect/eselect-wine-1.5.3 ~amd64
-media-gfx/inkscape ~*
-=media-gfx/scour-0.36 ~amd64
sys-apps/yarn ~amd64
net-libs/nodejs::libressl ~amd64
net-libs/nodejs::chaoslab ~amd64
-=dev-libs/libuv-1.17.0 ~amd64
-=sys-libs/db-5.1.29-r1 ~amd64
-
-=www-apps/ctpp2-2.8.3:mva ~amd64
=games-misc/katawa-shoujo-1.3 ~amd64
-=www-apps/ctpp2-2.8.3 ~amd64
=net-analyzer/openbsd-netcat-1.105-r1 ~amd64
=dev-java/gradle-3.4 ~amd64
-=app-misc/freeplane-1.5.18 ~amd64
=x11-misc/qarma-1 ~amd64
-=dev-python/python-evdev-0.7.0 ~amd64
-=games-util/lutris-0.4.14 ~amd64
<=dev-lang/erlang-20.1 ~*
=x11-plugins/purple-discord-9999 ~amd64
-=games-engines/scummvm-2.0.0 ~amd64
-=games-strategy/openra-20141029-r2 ~amd64
+~games-engines/scummvm-2.0.0 ~amd64
+=games-emulation/mupen64plus-2.5 ~amd64
=games-emulation/mupen64plus-rsp-hle-2.5 ~amd64
-=games-fps/xonotic-0.8.2 ~amd64
-=games-misc/katawa-shoujo-1.3.1 ~amd64
-=games-board/cockatrice-20170505 ~amd64
=games-emulation/mupen64plus-audio-sdl-2.5 ~amd64
=games-emulation/mupen64plus-input-sdl-2.5 ~amd64
=games-emulation/mupen64plus-core-2.5-r1 ~amd64
=games-emulation/mupen64plus-ui-console-2.5 ~amd64
-=games-action/noiz2sa-0.51a-r1 ~amd64
=games-emulation/mupen64plus-video-glide64mk2-2.5 ~amd64
=games-emulation/mupen64plus-video-rice-2.5 ~amd64
+=games-action/noiz2sa-0.51a-r1 ~amd64
+=games-fps/xonotic-0.8.2 ~amd64
+~games-misc/katawa-shoujo-1.3.1 ~amd64
-=games-emulation/m64py-0.2.3-r2 ~amd64
=dev-libs/d0_blind_id-1.0 ~amd64
-=games-misc/rfksay-0.1-r1 ~amd64
-=games-misc/funny-manpages-1.3_rc5-r1 ~amd64
-=games-emulation/mupen64plus-2.5 ~amd64
+~games-misc/rfksay-0.1-r1 ~amd64
+games-misc/funny-manpages ~amd64
=gnustep-base/gnustep-make-2.7.0 ~amd64 # Trying to fix Obj-C setup error… https://pouet.it/@lanodan_tmp/99248554766667217
=gnustep-base/libobjc2-1.8.1 ~amd64
-=sys-devel/slibtool-0.5.17 ~amd64
=net-misc/cadaver-0.23.3 ~amd64
-=app-misc/khard-0.11.4 ~amd64
-=dev-python/vdirsyncer-0.16.0-r1 ~amd64
-=dev-python/vobject-0.9.5 ~amd64
-=dev-python/requests-toolbelt-0.8.0 ~amd64
-=dev-python/atomicwrites-1.1.5-r2 ~amd64
=dev-python/click-threading-0.3.0 ~amd64
=dev-python/click-log-0.1.8 ~amd64
=app-misc/khal-0.9.7 ~amd64
-=dev-python/freezegun-0.3.9 ~amd64
-=net-misc/pussh-9999::lanodanOverlay **
-
-=www-client/netsurf-3.6 ~amd64
-=media-libs/libnsbmp-0.1.4 ~amd64
-=dev-libs/libcss-0.7.0 ~amd64
-=dev-libs/libcss-0.6.1 ~amd64
-=media-libs/libnspsl-0.1.2 ~amd64
-=dev-libs/nsgenbind-0.5 ~amd64
-=dev-libs/libnsutils-0.0.3 ~amd64
-=media-libs/libnsgif-0.2.0 ~amd64
-=dev-libs/libnsfb-0.1.6 ~amd64
-=dev-libs/libwapcaplet-0.4.0 ~amd64
-=dev-libs/libutf8proc-1.3.1_p3 ~amd64
-=net-libs/libdom-0.3.2 ~amd64
-=media-libs/librosprite-0.1.2-r1 ~amd64
-=media-libs/libsvgtiny-0.1.6 ~amd64
-
-=games-board/gnushogi-1.4.1-r1 ~amd64
-=games-board/xboard-4.8.0-r1 ~amd64
-
-=dev-python/sip-4.19.6 ~amd64
-=sys-kernel/genkernel-3.5.2.5 ~amd64
-=app-misc/pax-utils-1.2.2-r2 ~amd64
sys-firmware/intel-microcode ~*
-=media-gfx/opentoonz-1.2.0 ~amd64
=media-gfx/brlcad-7.24.2 ~amd64
=sci-libs/tnt-3.0.12 ~amd64
=games-action/bzflag-2.4.12 ~amd64
-=sys-apps/fwupdate-9 ~amd64
=sys-apps/fwts-17.02.00 ~amd64
-=dev-python/pyliblzma-0.5.3-r1 ~amd64
-=sys-apps/fwupd-1.0.3 ~amd64
-=media-plugins/calf-0.0.60-r1 ~amd64
-=media-sound/lmms-1.2.0_rc4 ~amd64
=games-engines/scummvm-tools-2.0.0-r1 ~amd64
-=mail-mta/sendmail-8.14.9-r1 ~amd64
-=dev-libs/cyrus-sasl-2.1.26-r11 ~amd64
-=mail-mta/opensmtpd-6.0.2_p1-r2 ~amd64
-=net-misc/stunnel-5.44 ~*
media-fonts/fontawesome ~amd64
-=media-plugins/gst-plugins-zbar-1.12.3 ~amd64
-=net-dns/getdns-1.3.0 ~amd64
=dev-haskell/qtah-qt5-0.4.0 ~amd64
=dev-haskell/hoppy-std-0.3.0 ~amd64
=dev-haskell/qtah-generator-0.3.0 ~amd64
@@ -248,27 +117,15 @@ media-fonts/fontawesome ~amd64
=dev-haskell/hoppy-generator-0.2.0 ~amd64
=dev-haskell/hoppy-std-0.2.0 ~amd64
=dev-haskell/qtah-generator-0.1.2 ~amd64
-=dev-embedded/esptool-2.2 ~*
=media-sound/sfxr-1.2.1 ~amd64
=dev-python/firmtool-1.3 ~amd64
games-visualnovel/doki-doki-litterature-club ~amd64
-=net-libs/serf-1.3.9 ~amd64
-=dev-lua/lpeg-1.0.1 ~amd64
-=net-misc/ntpsec-1.0.0-r2 ~amd64
-=app-editors/kakoune-0_pre20171120 ~amd64
mail-client/mutt ~*
-=app-i18n/uim-1.8.6-r2 ~*
-=net-vpn/wireguard-0.0.20180304 ~amd64
=dev-cpp/luabind-0.9 ~amd64
-app-admin/pass-otp::gentoo ~*
<dev-util/svgo-9999 ~*
=dev-ruby/nokogumbo-1.5.0 ~amd64
=dev-libs/gumbo-0.10.1 ~amd64
-dev-libs/libsass ~*
-=net-misc/ntpsec-1.0.0-r6 ~amd64
-=dev-lang/erlang-20.3 ~*
=games-misc/bsd-games-2.17-r5 ~amd64
-# required by app-text/base91-2.0.0::lanodanOverlay
=dev-haskell/mono-traversable-1.0.8.1 ~amd64
=dev-haskell/vector-th-unbox-0.2.1.6 ~amd64
=dev-haskell/math-functions-0.2.1.0 ~amd64
@@ -277,66 +134,30 @@ dev-libs/libsass ~*
=x11-misc/slop-7.4 ~amd64
dev-util/cargo::libressl ~*
=games-arcade/tinymania-9999 **
-
=sys-fs/zfs-auto-snapshot-1.2.4 ~amd64
-dev-lang/elixir ~amd64
-
-=www-plugins/browserpass-2.0.21 ~amd64
-=dev-libs/nss-3.37 ~amd64
-=dev-util/cargo-0.27.0 ~amd64
-=dev-libs/granite-0.5.0 ~amd64
-media-gfx/gmic::4nykey ~*
-=media-libs/cimg-2.2.3 ~amd64
=media-fonts/ahem-1.0 ~amd64
=media-libs/cimg-2.3.1 ~amd64
app-misc/neofetch ~*
-~media-gfx/maim-5.5.1 ~amd64
+~media-gfx/maim-5.5.3 ~amd64
=dev-libs/libb64-1.2.1 ~amd64
-=dev-util/sysdig-0.21.0 ~amd64
-=sys-devel/lld-6.0.1 ~amd64
-=dev-util/lldb-6.0.1 ~amd64
-dev-lang/rust:stable ~*
app-portage/gverify ~*
-=dev-libs/nss-3.38 ~amd64
-=dev-libs/nspr-4.19 ~amd64
-=dev-util/cargo-0.29.0 ~amd64
-=www-client/luakit-2017.08.10 ~amd64
-www-client/luakit **
=games-arcade/osu-lazer-9999.999.9 ~amd64
=games-arcade/crack-attack-1.1.14-r2 ~amd64
-=dev-lang/python-3.7.0 ~amd64
-=app-misc/g810-led-0.2.7 ~amd64
=media-video/ffmpeg-4.0.2 ~amd64
-=app-text/mandoc-1.14.4 ~amd64
-net-im/gajim::tastytea ~*
=dev-perl/Crypt-OpenSSL-ECDSA-0.80.0 ~amd64
=dev-perl/Crypt-OpenSSL-EC-1.310.0 ~amd64
net-vpn/i2pd ~amd64
=dev-cpp/websocketpp-0.8.1 ~amd64
-=games-strategy/freeciv-2.6.0 ~amd64
-=dev-go/go-tools-0_pre20180817 ~amd64
-=dev-go/go-text-0.3.0 ~amd64
-=dev-go/go-crypto-0_pre20180816 ~amd64
-=dev-go/go-net-0_pre20180816 ~amd64
-=dev-go/go-sys-0_pre20180816 ~amd64
+~games-strategy/freeciv-2.6.0 ~amd64
games-emulation/pcsxr ~*
-dev-qt/qtnetwork::libressl ~*
+<dev-qt/qtnetwork-5.13::libressl ~*
media-fonts/twemoji-color-font::jorgicio ~*
net-misc/youtube-dl ~*
=dev-python/phonenumbers-8.3.1 ~amd64
-=dev-python/arrow-0.12.1 ~amd64
=dev-python/py-gfm-0.1.1 ~amd64
-=dev-python/humanize-0.5.1 ~amd64
=virtual/gradle-0 ~amd64
=app-eselect/eselect-gradle-0.1 ~amd64
-=dev-util/meson-0.48.2 ~amd64
-=app-text/scdoc-1.5.2 ~amd64
-=dev-libs/json-c-0.13.1-r1 ~amd64
-# move dev-libs/wlroots gui-libs/wlroots
-gui-libs/wlroots ~amd64
-# move dev-libs/sway gui-wm/sway
-gui-wm/sway ~amd64
=games-board/mah-jong-1.14-r1 ~amd64
sys-libs/netbsd-csu ~*
@@ -346,21 +167,11 @@ gnustep-base/gnustep-base ~*
=x11-libs/pixman-0.36.0 ~*
=games-puzzle/pingus-0.7.6-r1 ~amd64
=media-fonts/polarsys-b612-fonts-1.003 ~amd64
-=dev-python/cssutils-1.0.2 ~amd64
-=dev-python/precis-i18n-1.0.0 ~amd64
-=dev-python/python-axolotl-curve25519-0.4.1_p2-r1 ~amd64
-=dev-python/python-axolotl-0.1.42-r1 ~amd64
-=media-video/ffmpeg-4.1.1 ~amd64
-=dev-libs/openssl-1.0.2q-r200 ~amd64
-~dev-python/pipenv-9.0.0 ~*
=dev-python/pythonz-bd-1.11.4 ~amd64
=dev-python/pew-1.1.1 ~amd64
=dev-python/shutilwhich-1.1.0 ~amd64
=dev-python/resumable-urlretrieve-0.1.5 ~amd64
=dev-python/m2crypto-0.31.0-r1 ~*
-=gui-apps/swaylock-1.3 ~amd64
-=gui-apps/swayidle-1.2 ~amd64
-=app-text/scdoc-1.9.3-r1 ~amd64
=dev-libs/libgit2-0.28.1 ~*
=dev-python/pygit2-0.27.4 ~*
<dev-libs/libgit2-0.28.0 ~*
@@ -379,7 +190,6 @@ sec-policy/apparmor-profiles ~amd64
=dev-haskell/hayland-0.1.0.1 ~amd64
=dev-haskell/utility-ht-0.0.14 ~amd64
=dev-haskell/storable-record-0.0.4 ~amd64
-~sys-devel/llvm-6.0.1 ~*
=dev-util/meson-0.49.2 ~*
~x11-libs/libdrm-2.4.97 ~* # Required by x11-drivers/xf86-video-nouveau (apparently)
<media-plugins/gst-plugins-libav-1.14.5 ~*
@@ -405,10 +215,9 @@ sec-policy/apparmor-profiles ~amd64
=dev-haskell/config-schema-0.5.0.1-r1 ~amd64
=dev-haskell/unliftio-core-0.1.2.0 ~amd64
=dev-haskell/th-abstraction-0.2.11.0 ~amd64
-=dev-haskell/stm-2.5.0.0 ~amd64
=dev-haskell/formatting-6.3.4 ~amd64
=dev-haskell/invariant-0.5.1 ~amd64
-=dev-haskell/stm-2.4.5.0 ~amd64
+<dev-haskell/stm-2.5 ~amd64
media-fonts/unifont::gentoo ~*
media-fonts/symbola::gentoo ~*
media-fonts/symbola::flussence ~*
@@ -416,13 +225,48 @@ media-fonts/symbola::flussence ~*
=www-client/badwolf-9999 **
=net-dns/c-ares-1.15.0 ~amd64
=net-libs/nghttp2-1.37.0 ~amd64
-=net-libs/http-parser-2.9.0-r1 ~amd64
=dev-libs/libuv-1.27.0 ~amd64
dev-haskell/cpphs ~*
=x11-terms/st-0.8.2 ~*
=media-libs/libpng-1.6.36 ~*
x11-drivers/xf86-video-nouveau ~*
-media-libs/mesa ~*
-~sys-devel/llvmgold-7 ~amd64
-~sys-devel/llvm-7.0.1 ~amd64
+<media-libs/mesa-19.1 ~*
+=gui-apps/swaybg-1.0 ~amd64
+<x11-wm/xmonad-0.15 ~*
+<x11-wm/xmonad-contrib-0.15 ~*
+www-client/epiphany ~*
+~net-libs/http-parser-2.9.2 ~amd64
+gui-wm/cage **
+=games-fps/gzdoom-4.1.1 ~amd64
+=games-fps/doom-data-1-r2 ~amd64
+=dev-python/python-dateutil-2.7.5 ~amd64
+=dev-python/idna-2.8 ~amd64
+=games-emulation/dgen-sdl-1.33-r1 ~amd64
+=games-emulation/sdlmame-0.209 ~amd64
+=games-emulation/mednafen-0.9.46 ~amd64
+dev-perl/Net-SSLeay::flussence ~*
+=dev-lang/rust-1.35.0 ~amd64
x11-libs/gtk+::flussence ~*
+~dev-libs/libgit2-0.28.2
+=net-misc/streamlink-1.0.0 ~amd64
+=dev-libs/libfmt-5.3.0 ~amd64
+=dev-libs/spdlog-1.3.1 ~amd64
+~media-video/mpv-0.29.1 ~*
+=app-benchmarks/glmark2-2014.03 ~amd64
+mail-client/aerc ~*
+www-client/michabo **
+=x11-misc/keynav-20150730 ~amd64
+dev-libs/glib::gentoo ~*
+=app-i18n/ibus-1.5.20::gentoo ~*
+dev-libs/granite::tastytea ~*
+~dev-perl/Net-SSLeay-1.880.0::gentoo ~*
+=dev-libs/angelscript-2.33.0 ~amd64
+=games-action/supertuxkart-1.0 ~amd64
+=media-libs/libopenglrecorder-0.1.0 ~amd64
+gui-wm/sway ~*
+gui-libs/wlroots ~*
+=games-puzzle/monsterz-0.7.1-r4 ~amd64
+=sys-boot/grub-2.04-r1 ~amd64
+
+dev-haskell/glib::haskell ~*
+dev-haskell/gtk2hs-buildtools::haskell ~*
diff --git a/package.env/gcc b/package.env/gcc
@@ -22,7 +22,7 @@
=sys-devel/gcc-7.3.0-r3:7.3.0/7.3.0::gentoo gcc
=sys-firmware/seabios-1.10.1::gentoo gcc
=sys-firmware/seabios-1.10.2::gentoo gcc
-=sys-libs/glibc-2.27-r6:2.2/2.2::gentoo gcc
+sys-libs/glibc::gentoo gcc
=x11-libs/fltk-1.3.3-r3::gentoo gcc
=x11-libs/gtk+-2.24.31-r1::gentoo gcc
=app-misc/g810-led-0.3.1::lanodanOverlay gcc
@@ -35,3 +35,14 @@
=sys-libs/glibc-2.28-r5::gentoo gcc
=app-shells/mksh-57-r1 gcc
=media-libs/mesa-18.3.6::gentoo gcc
+~app-text/openjade-1.3.2 gcc
+sys-devel/llvm:7 gcc
+sys-devel/clang:7 gcc
+sys-devel/clang-runtime:7 gcc
+sys-devel/clang-common:7 gcc
+sys-libs/libcxx gcc
+sys-libs/libcxxabi gcc
+=games-emulation/dosbox-0.74_p20160629::gentoo gcc
+~dev-libs/elfutils-0.176 gcc
+=sys-firmware/seabios-1.12.0:0/0::gentoo gcc
+=sys-firmware/ipxe-1.0.0_p20190728::gentoo gcc
diff --git a/package.env/gcc-as b/package.env/gcc-as
@@ -2,3 +2,4 @@
=app-emulation/qemu-3.1.0-r1::gentoo gcc-as
=app-emulation/qemu-3.1.0-r4::gentoo gcc-as
+~app-emulation/qemu-4.0.0 gcc-as
diff --git a/package.license b/package.license
@@ -26,3 +26,8 @@ games-arcade/stepmania CC-BY-NC-4.0
games-arcade/oshu CC-BY-NC-4.0
games-arcade/osu-lazer CC-BY-NC-4.0
games-emulation/snes9x Snes9x
+sys-kernel/linux-firmware linux-fw-redistributable
+app-dicts/myspell-ru myspell-ru_RU-AlexanderLebedev
+app-doc/single-unix-specification sus4-copyright
+games-fps/doom-data freedist
+sys-firmware/b43-firmware Broadcom
diff --git a/package.mask/NOPE b/package.mask/NOPE
@@ -1,3 +1,4 @@
media-sound/audacity # See https://social.hacktivis.me/objects/08872b3a-a670-49b3-94d8-2181642329f5
media-fonts/firacode # unreadable ligatures, anti-dyslexia
dev-util/electron
dev-util/electron
+dev-python/unicodedata2
diff --git a/package.mask/fails b/package.mask/fails
@@ -1 +1,3 @@
=media-gfx/exiv2-0.26_p20180319::gentoo
+=sys-boot/grub-2.02-r4
+=net-firewall/nftables-0.9.0-r5:0/0::gentoo
diff --git a/package.provided b/package.provided
@@ -0,0 +1 @@
+sys-apps/less-9999
diff --git a/package.unmask b/package.unmask
@@ -3,3 +3,6 @@ sys-kernel/hardened-sources
dev-libs/openssl::lanodanOverlay
=media-video/ffmpeg-4.0.2
=media-video/mpv-0.29.0
+
+# GRblblbl
+media-gfx/exiv2
diff --git a/package.use/01-deps b/package.use/01-deps
@@ -70,3 +70,4 @@ x11-libs/libxcb xkb
app-accessibility/brltty python
dev-libs/liblouis python
app-accessibility/speech-dispatcher python
+media-libs/gegl cairo # required by media-gfx/gimp
diff --git a/package.use/02-user b/package.use/02-user
@@ -28,7 +28,6 @@ dev-lang/erlang dirty-schedulers tk wxwidgets
dev-lang/luajit lua52compat
dev-lang/python tk
dev-lang/ruby -rdoc
-dev-lang/rust clang libcxx
dev-libs/capstone python
dev-libs/libgcrypt o-flag-munging
dev-libs/nss utils
@@ -66,11 +65,11 @@ media-libs/mlt ffmpeg xml sdl qt5 kdenlive melt
media-libs/phonon -vlc
media-libs/sdl-mixer flac mp3 vorbis mad
media-libs/sdl-sound flac mikmod mp3
-media-plugins/gst-plugins-meta aac flac modplug mp3 ogg opus vpx http libass wavpack x264 mpeg theora ffmpeg
+media-plugins/gst-plugins-meta aac flac mp3 ogg opus libass wavpack mpeg theora ffmpeg vorbis http
media-sound/lmms fluidsynth ogg sdl
media-sound/ncmpc search-screen song-screen artist-screen
media-sound/sbagen mp3 vorbis
-media-video/ffmpeg alsa gnutls libass libdrm mp3 opus vorbis vpx x265 sdl
+media-video/ffmpeg alsa gnutls libass libdrm mp3 opus vorbis vpx sdl
media-video/mpv drm dvd lcms tools vaapi archive cli
net-analyzer/wireshark tfshark lua -gtk
net-dns/getdns stubby
@@ -92,7 +91,6 @@ sys-apps/firejail x11
sys-apps/groff -X
sys-apps/smartmontools -daemon -caps
sys-boot/grub device-mapper
-sys-devel/clang default-compiler-rt default-libcxx
sys-devel/clang-runtime crt
sys-devel/llvm clang
=sys-firmware/edk2-ovmf-2017_pre20170505 binary # Fails to build, needs patch for -fPIC
@@ -119,9 +117,22 @@ x11-wm/dwm savedconfig
x11-wm/xmonad -default-term
x11-wm/xmonad* doc
app-editors/vis lpeg lua
-media-plugins/gst-plugins-meta mp3 mpeg ogg opus theora vorbis vpx wavpack x264 lame
www-client/badwolf savedconfig
x11-libs/gtk+ gtk-doc
sys-apps/openrc init
gui-wm/cage xwayland
gui-libs/wlroots rootston x11-backend
+dev-lang/erlang doc
+media-libs/freetype -infinality cleartype_hinting
+net-libs/glib-networking gnutls
+x11-base/xorg-server suid
+gui-apps/waybar network
+gui-apps/waybar udev
+app-shells/bash -net
+sys-apps/iproute2 -iptables
+dev-libs/glib gtk-doc
+mail-client/aerc html
+net-libs/webkit-gtk -wpe
+games-action/supertuxkart nettle recorder
+media-gfx/graphicsmagick imagemagick
+media-libs/mesa lm-sensors
diff --git a/package.use/04-constrait b/package.use/04-constrait
@@ -1 +1,2 @@
dev-libs/opensc -pcsc-lite
+<sys-fs/cryptsetup-2.2.1 -openssl
diff --git a/package.use/05-no-dbus b/package.use/05-no-dbus
@@ -0,0 +1 @@
+dev-qt/qtgui -ibus
diff --git a/package.use/05-no-python2 b/package.use/05-no-python2
@@ -1,24 +1,22 @@
-=dev-vcs/git-2.19.2::gentoo -python
-=dev-vcs/git-2.21.0::gentoo -python
-=dev-python/m2crypto-0.31.0-r1 python_targets_python2_7
-=dev-python/setuptools-40.6.3 python_targets_python2_7
-=dev-python/certifi-2018.4.16 python_targets_python2_7
-=virtual/python-typing-0-r1 python_targets_python2_7
-=dev-python/typing-3.6.2-r1 python_targets_python2_7
-=app-emulation/xen-tools-4.10.3-r2::gentoo python_targets_python2_7
-=dev-python/lxml-4.2.5 python_targets_python2_7
-=dev-python/pypam-0.5.0-r3 python_targets_python2_7
-=dev-python/bz2file-0.98::gentoo python_targets_python2_7
-=dev-python/pygtk-2.24.0-r4::gentoo python_targets_python2_7
-=dev-python/pygobject-2.28.6-r55::gentoo python_targets_python2_7
-=net-libs/nodejs-10.15.0::libressl python_targets_python2_7
-=dev-vcs/mercurial-4.9::gentoo python_targets_python2_7
-=games-engines/renpy-6.99.12.4-r3::gentoo python_targets_python2_7
-=dev-python/misaka-1.0.2::gentoo python_targets_python2_7
-=dev-python/rst2pdf-0.93-r3::gentoo python_targets_python2_7
-=dev-util/gtk-doc-1.25-r1::gentoo python_targets_python2_7
-=dev-util/itstool-2.0.2::gentoo python_targets_python2_7
-=x11-misc/arandr-0.1.9::gentoo python_targets_python2_7
-=sys-devel/clang-6.0.1::gentoo python_targets_python2_7
-=dev-python/pycairo-1.17.0-r1 python_targets_python2_7 # required by pygtk (argument)
-=net-libs/nodejs-10.15.3::libressl python_targets_python2_7
+~app-emulation/xen-tools-4.10.3::gentoo python_targets_python2_7
+~dev-python/bz2file-0.98::gentoo python_targets_python2_7
+~dev-python/certifi-2018.4.16 python_targets_python2_7
+~dev-python/m2crypto-0.31.0 python_targets_python2_7
+~dev-python/misaka-1.0.2::gentoo python_targets_python2_7
+~dev-python/pycairo-1.17.0 python_targets_python2_7 # required by pygtk (argument)
+~dev-python/pypam-0.5.0 python_targets_python2_7
+~dev-python/setuptools-40.6.3 python_targets_python2_7
+~dev-python/typing-3.6.2 python_targets_python2_7
+~dev-util/gtk-doc-1.25::gentoo python_targets_python2_7
+~dev-vcs/git-2.21.0::gentoo -python
+~games-engines/renpy-6.99.12.4::gentoo python_targets_python2_7
+~net-libs/nodejs-10.15.3::libressl python_targets_python2_7
+~sys-devel/clang-6.0.1::gentoo python_targets_python2_7
+~virtual/python-typing-0 python_targets_python2_7
+~x11-misc/arandr-0.1.9::gentoo python_targets_python2_7
+~sys-devel/clang-7.1.0 python_targets_python2_7
+~sys-devel/clang-8.0.1 python_targets_python2_7
+dev-python/certifi python_targets_python2_7 # required by dev-python/setuptools
+~games-puzzle/monsterz-0.7.1 python_targets_python2_7
+dev-python/pygame python_targets_python2_7 # required by games-puzzle/monsterz
+dev-python/numpy python_targets_python2_7 # required by games-puzzle/monsterz
diff --git a/package.use/06-tmp-dbus b/package.use/06-tmp-dbus
@@ -0,0 +1 @@
+dev-libs/glib dbus
diff --git a/package.use/x86_32 b/package.use/x86_32
@@ -31,3 +31,8 @@ x11-libs/libXvMC abi_x86_32
x11-libs/libXxf86vm abi_x86_32
x11-libs/libdrm abi_x86_32
x11-libs/libxcb abi_x86_32
+sys-libs/gpm abi_x86_32
+x11-libs/libva-vdpau-driver abi_x86_32
+x11-libs/libva abi_x86_32
+x11-libs/libvdpau abi_x86_32
+dev-libs/wayland abi_x86_32 # # required by media-libs/mesa[wayland]
diff --git a/patches/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff b/patches.disabled/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff
diff --git a/patches.disabled/sys-devel/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch b/patches.disabled/sys-devel/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
@@ -0,0 +1,43 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Enable PIE by default for Alpine Linux
+
+Alpine Linux uses PIE by default.
+
+https://github.com/alpinelinux/aports/blob/master/main/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
+
+--- a/lib/Driver/Tools.cpp
++++ b/lib/Driver/Tools.cpp
+@@ -9258,7 +9258,9 @@
+ if (!D.SysRoot.empty())
+ CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
+
+- if (IsPIE)
++ if (Args.hasArg(options::OPT_nopie))
++ CmdArgs.push_back("-nopie");
++ else if (IsPIE)
+ CmdArgs.push_back("-pie");
+
+ CmdArgs.push_back("--eh-frame-hdr");
+--- a/test/Driver/pic.c
++++ b/test/Driver/pic.c
+@@ -244,6 +244,18 @@
+ // RUN: %clang %s -target i386-pc-openbsd -nopie -### 2>&1 \
+ // RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD
+ //
++// On Alpine Linux, we want similar PIE-by-default behavior
++// RUN: %clang -c %s -target x86_64-alpine-linux-musl -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target i686-alpine-linux-musl -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target armv6-alpine-linux-musleabihf -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target armv7-alpine-linux-musleabihf -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang %s -target x86_64-alpine-linux-musl -nopie -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD
++//
+ // On Android PIC is enabled by default
+ // RUN: %clang -c %s -target i686-linux-android -### 2>&1 \
+ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2
diff --git a/patches/app-i18n/uim/uim-1.8.8_clang_fix.patch b/patches/app-i18n/uim/uim-1.8.8_clang_fix.patch
@@ -0,0 +1,23 @@
+From bb25aac568359efbfb68e52dd8d9ee85e65d754b Mon Sep 17 00:00:00 2001
+From: Haelwenn Monnier <lanodan@users.noreply.github.com>
+Date: Thu, 25 Oct 2018 09:10:16 +0200
+Subject: [PATCH] xim/main.cpp: FIx build against clang
+
+main.cpp:68:55: error: invalid suffix on literal; C++11 requires a space between literal and identifier
+---
+ xim/main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xim/main.cpp b/xim/main.cpp
+index a0b0beceb..c5818ca4a 100644
+--- a/xim/main.cpp
++++ b/xim/main.cpp
+@@ -65,7 +65,7 @@ int g_option_mask;
+ int scr_width, scr_height;
+ int host_byte_order;
+
+-#define VERSION_NAME "uim-xim under the way! Version "PACKAGE_VERSION"\n"
++#define VERSION_NAME "uim-xim under the way! Version " PACKAGE_VERSION "\n"
+ const char *version_name=VERSION_NAME;
+ const char *usage=
+ "--help , --version :Show usage or version\n"
diff --git a/patches/app-office/abiword-3.0.2-r2/abiword-3.0.2-r2_cx11_syntax.patch b/patches/app-office/abiword-3.0.2-r2/abiword-3.0.2-r2_cx11_syntax.patch
@@ -0,0 +1,13 @@
+diff --git a/src/wp/ap/gtk/ap_UnixApp.cpp b/src/wp/ap/gtk/ap_UnixApp.cpp
+index 061a304..260f8e5 100644
+--- a/src/wp/ap/gtk/ap_UnixApp.cpp
++++ b/src/wp/ap/gtk/ap_UnixApp.cpp
+@@ -863,7 +863,7 @@ static bool is_so (const char *file) {
+ if (len < (strlen(G_MODULE_SUFFIX) + 2)) // this is ".so" and at least one char for the filename
+ return false;
+ const char *suffix = file+(len-3);
+- if(0 == strcmp (suffix, "."G_MODULE_SUFFIX))
++ if(0 == strcmp (suffix, "." G_MODULE_SUFFIX))
+ return true;
+ return false;
+ }
diff --git a/patches/app-text/evince/0001-Remove-last-used-directory-tracking.patch b/patches/app-text/evince/0001-Remove-last-used-directory-tracking.patch
@@ -0,0 +1,126 @@
+From 57308187053270e625a32a7861d726e7dd1a39c9 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Sat, 15 Jun 2019 01:07:06 +0200
+Subject: [PATCH] Remove last-used directory tracking
+
+---
+ data/org.gnome.Evince.gschema.xml.in | 8 ----
+ shell/ev-window.c | 63 ++++------------------------
+ 2 files changed, 7 insertions(+), 64 deletions(-)
+
+diff --git a/data/org.gnome.Evince.gschema.xml.in b/data/org.gnome.Evince.gschema.xml.in
+index fda312b..c0881bf 100644
+--- a/data/org.gnome.Evince.gschema.xml.in
++++ b/data/org.gnome.Evince.gschema.xml.in
+@@ -18,14 +18,6 @@
+ <_summary>Automatically reload the document</_summary>
+ <_description>The document is automatically reloaded on file change.</_description>
+ </key>
+- <key name="document-directory" type="ms">
+- <default>nothing</default>
+- <_summary>The URI of the directory last used to open or save a document</_summary>
+- </key>
+- <key name="pictures-directory" type="ms">
+- <default>nothing</default>
+- <_summary>The URI of the directory last used to save a picture</_summary>
+- </key>
+ <key name="page-cache-size" type="u">
+ <default>50</default>
+ <_summary>Page cache size in MiB</_summary>
+diff --git a/shell/ev-window.c b/shell/ev-window.c
+index cfed16c..d9f90af 100644
+--- a/shell/ev-window.c
++++ b/shell/ev-window.c
+@@ -263,8 +263,6 @@ struct _EvWindowPrivate {
+ #define GS_OVERRIDE_RESTRICTIONS "override-restrictions"
+ #define GS_PAGE_CACHE_SIZE "page-cache-size"
+ #define GS_AUTO_RELOAD "auto-reload"
+-#define GS_LAST_DOCUMENT_DIRECTORY "document-directory"
+-#define GS_LAST_PICTURES_DIRECTORY "pictures-directory"
+ #define GS_ALLOW_LINKS_CHANGE_ZOOM "allow-links-change-zoom"
+
+ #define SIDEBAR_DEFAULT_SIZE 132
+@@ -2557,51 +2555,16 @@ ev_window_reload_document (EvWindow *ev_window,
+ }
+ }
+
+-static const gchar *
+-get_settings_key_for_directory (GUserDirectory directory)
+-{
+- switch (directory) {
+- case G_USER_DIRECTORY_PICTURES:
+- return GS_LAST_PICTURES_DIRECTORY;
+- case G_USER_DIRECTORY_DOCUMENTS:
+- default:
+- return GS_LAST_DOCUMENT_DIRECTORY;
+- }
+-}
+-
+ static void
+ ev_window_file_chooser_restore_folder (EvWindow *window,
+ GtkFileChooser *file_chooser,
+ const gchar *uri,
+ GUserDirectory directory)
+ {
+- const gchar *dir;
+- gchar *folder_uri;
+-
+- g_settings_get (ev_window_ensure_settings (window),
+- get_settings_key_for_directory (directory),
+- "ms", &folder_uri);
+- if (folder_uri == NULL && uri != NULL) {
+- GFile *file, *parent;
+-
+- file = g_file_new_for_uri (uri);
+- parent = g_file_get_parent (file);
+- g_object_unref (file);
+- if (parent) {
+- folder_uri = g_file_get_uri (parent);
+- g_object_unref (parent);
+- }
+- }
+-
+- if (folder_uri) {
+- gtk_file_chooser_set_current_folder_uri (file_chooser, folder_uri);
+- } else {
+- dir = g_get_user_special_dir (directory);
+- gtk_file_chooser_set_current_folder (file_chooser,
+- dir ? dir : g_get_home_dir ());
+- }
+-
+- g_free (folder_uri);
++ (void)window;
++ (void)file_chooser;
++ (void)uri;
++ (void)directory;
+ }
+
+ static void
+@@ -2609,21 +2572,9 @@ ev_window_file_chooser_save_folder (EvWindow *window,
+ GtkFileChooser *file_chooser,
+ GUserDirectory directory)
+ {
+- gchar *uri, *folder;
+-
+- folder = gtk_file_chooser_get_current_folder (file_chooser);
+- if (g_strcmp0 (folder, g_get_user_special_dir (directory)) == 0) {
+- /* Store 'nothing' if the folder is the default one */
+- uri = NULL;
+- } else {
+- uri = gtk_file_chooser_get_current_folder_uri (file_chooser);
+- }
+- g_free (folder);
+-
+- g_settings_set (ev_window_ensure_settings (window),
+- get_settings_key_for_directory (directory),
+- "ms", uri);
+- g_free (uri);
++ (void)window;
++ (void)file_chooser;
++ (void)directory;
+ }
+
+ static void
+--
+2.21.0
+
diff --git a/patches/gui-wm/cage-0.1/61894994f3c784d9694de50eb3e7e70c3089410b.patch b/patches/gui-wm/cage-0.1/61894994f3c784d9694de50eb3e7e70c3089410b.patch
@@ -0,0 +1,53 @@
+From 61894994f3c784d9694de50eb3e7e70c3089410b Mon Sep 17 00:00:00 2001
+From: Jan Beich <jbeich@FreeBSD.org>
+Date: Thu, 25 Apr 2019 07:08:04 +0000
+Subject: [PATCH] Cage: drop root on startup like Sway
+
+wlroots may need setuid to run on DRM if built without (e)logind
+support.
+---
+ cage.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/cage.c b/cage.c
+index d4cf210..9c7098a 100644
+--- a/cage.c
++++ b/cage.c
+@@ -65,6 +65,25 @@ spawn_primary_client(char *argv[], pid_t *pid_out)
+ return true;
+ }
+
++static bool
++drop_permissions(void)
++{
++ if (getuid() != geteuid() || getgid() != getegid()) {
++ if (setuid(getuid()) != 0 || setgid(getgid()) != 0) {
++ wlr_log(WLR_ERROR, "Unable to drop root, refusing to start");
++ return false;
++ }
++ }
++
++ if (setuid(0) != -1) {
++ wlr_log(WLR_ERROR, "Unable to drop root (we shouldn't be able to "
++ "restore it after setuid), refusing to start");
++ return false;
++ }
++
++ return true;
++}
++
+ static int
+ handle_signal(int signal, void *data)
+ {
+@@ -184,6 +203,11 @@ main(int argc, char *argv[])
+ goto end;
+ }
+
++ if (!drop_permissions()) {
++ ret = 1;
++ goto end;
++ }
++
+ renderer = wlr_backend_get_renderer(server.backend);
+ wlr_renderer_init_wl_display(renderer, server.wl_display);
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch b/patches/net-libs/webkitgtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch
@@ -0,0 +1,24 @@
+From 0c051cbef11d0cbe32ea649d03524baadc514413 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Fri, 5 Apr 2019 04:08:33 +0200
+Subject: [PATCH 01/11] TextCodec.cpp: Fix snprintf
+
+---
+ Source/WebCore/platform/text/TextCodec.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Source/WebCore/platform/text/TextCodec.cpp b/Source/WebCore/platform/text/TextCodec.cpp
+index 86b89cfc..4be00cee 100644
+--- a/Source/WebCore/platform/text/TextCodec.cpp
++++ b/Source/WebCore/platform/text/TextCodec.cpp
+@@ -28,6 +28,7 @@
+ #include "TextCodec.h"
+
+ #include <array>
++#include <stdio.h>
+
+ namespace WebCore {
+
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0002-Defang-anchor-element-ping-attribute.patch b/patches/net-libs/webkitgtk-2.24.2/0002-Defang-anchor-element-ping-attribute.patch
@@ -0,0 +1,87 @@
+From 72fe4c2fbd5185d2ff069671d5d628494a37bb06 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Fri, 5 Apr 2019 09:03:39 +0200
+Subject: [PATCH 02/11] Defang anchor element ping attribute
+
+---
+ Source/WebCore/html/HTMLAnchorElement.cpp | 11 --------
+ Source/WebCore/loader/PingLoader.cpp | 34 -----------------------
+ 2 files changed, 45 deletions(-)
+
+diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp
+index 37d98a33..815ed314 100644
+--- a/Source/WebCore/html/HTMLAnchorElement.cpp
++++ b/Source/WebCore/html/HTMLAnchorElement.cpp
+@@ -363,15 +363,6 @@ bool HTMLAnchorElement::isLiveLink() const
+
+ void HTMLAnchorElement::sendPings(const URL& destinationURL)
+ {
+- if (!document().frame())
+- return;
+-
+- if (!hasAttributeWithoutSynchronization(pingAttr) || !document().settings().hyperlinkAuditingEnabled())
+- return;
+-
+- SpaceSplitString pingURLs(attributeWithoutSynchronization(pingAttr), false);
+- for (unsigned i = 0; i < pingURLs.size(); i++)
+- PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL);
+ }
+
+ #if USE(SYSTEM_PREVIEW)
+@@ -493,8 +484,6 @@ void HTMLAnchorElement::handleClick(Event& event)
+ ASSERT(!adClickAttribution || adClickAttribution->url().isNull());
+
+ frame->loader().urlSelected(completedURL, effectiveTarget, &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo, WTFMove(adClickAttribution));
+-
+- sendPings(completedURL);
+ }
+
+ // Falls back to using <base> element's target if the anchor does not have one.
+diff --git a/Source/WebCore/loader/PingLoader.cpp b/Source/WebCore/loader/PingLoader.cpp
+index 2c0b2a3b..9225fdde 100644
+--- a/Source/WebCore/loader/PingLoader.cpp
++++ b/Source/WebCore/loader/PingLoader.cpp
+@@ -113,40 +113,6 @@ void PingLoader::loadImage(Frame& frame, const URL& url)
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing
+ void PingLoader::sendPing(Frame& frame, const URL& pingURL, const URL& destinationURL)
+ {
+- ASSERT(frame.document());
+-
+- if (!pingURL.protocolIsInHTTPFamily())
+- return;
+-
+- ResourceRequest request(pingURL);
+- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw))
+- return;
+-
+- auto& document = *frame.document();
+- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load);
+-
+- request.setHTTPMethod("POST");
+- request.setHTTPContentType("text/ping");
+- request.setHTTPBody(FormData::create("PING"));
+- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0");
+-
+- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields();
+-
+- frame.loader().addExtraFieldsToSubresourceRequest(request);
+-
+- auto& sourceOrigin = document.securityOrigin();
+- FrameLoader::addHTTPOriginIfNeeded(request, sourceOrigin.toString());
+- request.setHTTPHeaderField(HTTPHeaderName::PingTo, destinationURL);
+- if (!SecurityPolicy::shouldHideReferrer(pingURL, frame.loader().outgoingReferrer())) {
+- request.setHTTPHeaderField(HTTPHeaderName::PingFrom, document.url());
+- if (!sourceOrigin.isSameSchemeHostPort(SecurityOrigin::create(pingURL).get())) {
+- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), pingURL, frame.loader().outgoingReferrer());
+- if (!referrer.isEmpty())
+- request.setHTTPReferrer(referrer);
+- }
+- }
+-
+- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes, ContentSecurityPolicyImposition::DoPolicyCheck);
+ }
+
+ void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, Ref<FormData>&& report, ViolationReportType reportType)
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkitgtk-2.24.2/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch
@@ -0,0 +1,55 @@
+From 3a70f0ed0d9dfa714a7fb67b5be6a0267a5b5ead Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Fri, 2 Nov 2018 17:59:57 +0100
+Subject: [PATCH 03/11]
+ Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c
+ support in the console
+
+---
+ .../UserInterface/Views/ConsoleMessageView.js | 23 -------------------
+ 1 file changed, 23 deletions(-)
+
+diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js
+index 4cf58fd3..f53f9ab7 100644
+--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js
++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js
+@@ -674,26 +674,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object
+ }
+
+ var currentStyle = null;
+- function styleFormatter(obj)
+- {
+- currentStyle = {};
+- var buffer = document.createElement("span");
+- buffer.setAttribute("style", obj.description);
+- for (var i = 0; i < buffer.style.length; i++) {
+- var property = buffer.style[i];
+- if (isWhitelistedProperty(property))
+- currentStyle[property] = buffer.style[property];
+- }
+- }
+-
+- function isWhitelistedProperty(property)
+- {
+- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) {
+- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix))
+- return true;
+- }
+- return false;
+- }
+
+ // Firebug uses %o for formatting objects.
+ var formatters = {};
+@@ -705,9 +685,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object
+ formatters.i = integerFormatter;
+ formatters.d = integerFormatter;
+
+- // Firebug uses %c for styling the message.
+- formatters.c = styleFormatter;
+-
+ // Support %O to force object formatting, instead of the type-based %o formatting.
+ formatters.O = parameterFormatter.bind(this, true);
+
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkitgtk-2.24.2/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch
@@ -0,0 +1,26 @@
+From 697444bbce31d382a557e27175c3d6919765064b Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Tue, 6 Nov 2018 15:09:22 +0100
+Subject: [PATCH 04/11] CMakeLists.txt: Explain which variable is used to
+ define a port if undefined
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 31adc449..03b80113 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -48,7 +48,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_
+
+ list(FIND ALL_PORTS ${PORT} RET)
+ if (${RET} EQUAL -1)
+- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})")
++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})")
+ endif ()
+
+ string(TOLOWER ${PORT} WEBKIT_PORT_DIR)
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkitgtk-2.24.2/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch
@@ -0,0 +1,25 @@
+From 4663c2402292cc912eaaa1b6d53b354bd038ef36 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Tue, 6 Nov 2018 15:13:28 +0100
+Subject: [PATCH 05/11] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake
+ defaults
+
+---
+ Source/cmake/OptionsGTK.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
+index 43e1ab2f..0fe64ce4 100644
+--- a/Source/cmake/OptionsGTK.cmake
++++ b/Source/cmake/OptionsGTK.cmake
+@@ -72,6 +72,7 @@ endif ()
+ # Public options specific to the GTK+ port. Do not add any options here unless
+ # there is a strong reason we should support changing the value of the option,
+ # and the option is not relevant to any other WebKit ports.
++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED
+ WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT})
+ WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF)
+ WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON)
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0006-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch b/patches/net-libs/webkitgtk-2.24.2/0006-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch
@@ -0,0 +1,72 @@
+From 7f250f3d15d1f27e1fc778f08638c642590485b2 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Sun, 2 Dec 2018 02:33:31 +0100
+Subject: [PATCH 06/11] Source/WebCore/page/RuntimeEnabledFeatures.h:
+ hard-disable some features
+
+---
+ Source/WebCore/page/RuntimeEnabledFeatures.h | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h
+index 0f7e7a50..2030412e 100644
+--- a/Source/WebCore/page/RuntimeEnabledFeatures.h
++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h
+@@ -50,13 +50,13 @@ public:
+ bool displayContentsEnabled() const { return m_isDisplayContentsEnabled; }
+
+ void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; }
+- bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; }
++ bool linkPreloadEnabled() const { return false; }
+
+ void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; }
+- bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; }
++ bool linkPrefetchEnabled() const { return false; }
+
+ void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; }
+- bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; }
++ bool mediaPreloadingEnabled() const { return false; }
+
+ void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; }
+ bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; }
+@@ -70,19 +70,19 @@ public:
+ bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; }
+
+ void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; }
+- bool inputEventsEnabled() const { return m_inputEventsEnabled; }
++ bool inputEventsEnabled() const { return false; }
+
+ void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; }
+ bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; }
+
+ void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; }
+- bool customElementsEnabled() const { return m_areCustomElementsEnabled; }
++ bool customElementsEnabled() const { return false; }
+
+ void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; }
+ bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; }
+
+ void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; }
+- bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; }
++ bool directoryUploadEnabled() const { return false; }
+
+ #if ENABLE(DARK_MODE_CSS)
+ void setDarkModeCSSEnabled(bool isEnabled) { m_isDarkModeCSSEnabled = isEnabled; }
+@@ -320,12 +320,12 @@ public:
+
+ #if ENABLE(ENCRYPTED_MEDIA)
+ void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; }
+- bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; }
++ bool encryptedMediaAPIEnabled() const { return false; }
+ #endif
+
+ #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
+ void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; }
+- bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; }
++ bool legacyEncryptedMediaAPIEnabled() const { return false; }
+ #endif
+
+ #if ENABLE(SERVICE_WORKER)
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0007-lanodan-TODO-New.patch b/patches/net-libs/webkitgtk-2.24.2/0007-lanodan-TODO-New.patch
@@ -0,0 +1,84 @@
+From f2e5c2495f52000b88c94f54c39845ac9541856c Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Sun, 2 Dec 2018 11:11:22 +0100
+Subject: [PATCH 07/11] lanodan-TODO: New
+
+---
+ lanodan-TODO | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 65 insertions(+)
+ create mode 100644 lanodan-TODO
+
+diff --git a/lanodan-TODO b/lanodan-TODO
+new file mode 100644
+index 00000000..d8acc42c
+--- /dev/null
++++ b/lanodan-TODO
+@@ -0,0 +1,65 @@
++## Javascript
++- [x] Console Styling (%c)
++- [ ] GeoLocation
++- [ ] AudioAPI
++- [ ] Gamepad (runtime, off by default): https://www.w3.org/TR/gamepad/
++- [ ] Service Workers (runtime, off by default)
++- [ ] IndexedDB (runtime, off by default)
++- [ ] Object Storage (runtime, off by default)
++- [ ] canvas (runtime, off by default)
++- [ ] WebGL (runtime, off by default)
++- [ ] Sensors
++ - [x] Battery (WebKit: Not Considering)
++ - [ ] microphone (runtime, off by default)
++ - [ ] video(webcam, screen, …) (runtime, off by default)
++ - …
++- [x] Web Bluetooth (WebKit: Not Considering)
++- [x] Web MIDI (WebKit: Not Considering)
++- [x] Web USB (WebKit: Not Considering)
++- [ ] Input Events
++ - [ ] Pointer Events
++ - [ ] Scroll Events
++ - [ ] Focus Events
++ - …
++- [ ] Timings
++ - Navigation Timing
++ - Resource Timing
++ - Performance Timeline: https://w3c.github.io/performance-timeline/
++ - High Resolution Time
++ - …
++- [ ] Viewport size
++- [ ] Elements size
++- [ ] multimedia player stats (FPS, caching, …)
++- [ ] Payment Request: https://www.w3.org/TR/payment-request/
++- [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/
++
++## Headers
++- [ ] referer
++- [ ] user-agent (spoof Intel Apple one?)
++- [ ] Cookies (runtime, off by default)
++
++## HTML
++- [ ] noscript
++- [x] Link ping
++- [x] Link prefetch
++- [x] Link preloading
++- [x] Media preloading
++- [x] custom elements
++- [ ] DNS prefetch
++- [ ] srcset (images)
++
++## CSS
++- [ ] Engine-specific extensions
++- [ ] WebFont (runtime, off by default)
++
++## TLS
++- [ ] Disable known-bad ciphers
++- [ ] TOFU?
++- [ ] DANE
++
++## Codebase
++- [ ] Remove Third-Party directory
++
++
++- https://webkit.org/status/
++- https://github.com/WICG
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0008-defang-AdClickAttribution.patch b/patches/net-libs/webkitgtk-2.24.2/0008-defang-AdClickAttribution.patch
@@ -0,0 +1,309 @@
+From 69ca1a17fda572ee42e925ecd1c948adfcbc7b09 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Fri, 5 Apr 2019 06:44:31 +0200
+Subject: [PATCH 08/11] defang AdClickAttribution
+
+---
+ Source/WebCore/html/HTMLAnchorElement.cpp | 52 --------------------
+ Source/WebCore/html/HTMLAnchorElement.h | 3 --
+ Source/WebCore/html/HTMLAnchorElement.idl | 2 -
+ Source/WebCore/loader/AdClickAttribution.cpp | 42 +---------------
+ Source/WebCore/loader/AdClickAttribution.h | 48 +-----------------
+ Source/WebCore/loader/FrameLoader.cpp | 3 --
+ Source/WebCore/page/RuntimeEnabledFeatures.h | 4 +-
+ lanodan-TODO | 7 +--
+ 8 files changed, 10 insertions(+), 151 deletions(-)
+
+diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp
+index 815ed314..9f3691e1 100644
+--- a/Source/WebCore/html/HTMLAnchorElement.cpp
++++ b/Source/WebCore/html/HTMLAnchorElement.cpp
+@@ -24,7 +24,6 @@
+ #include "config.h"
+ #include "HTMLAnchorElement.h"
+
+-#include "AdClickAttribution.h"
+ #include "DOMTokenList.h"
+ #include "ElementIterator.h"
+ #include "EventHandler.h"
+@@ -388,52 +387,6 @@ bool HTMLAnchorElement::isSystemPreviewLink() const
+ }
+ #endif
+
+-Optional<AdClickAttribution> HTMLAnchorElement::parseAdClickAttribution() const
+-{
+- using Campaign = AdClickAttribution::Campaign;
+- using Source = AdClickAttribution::Source;
+- using Destination = AdClickAttribution::Destination;
+-
+- if (!RuntimeEnabledFeatures::sharedFeatures().adClickAttributionEnabled() || !UserGestureIndicator::processingUserGesture())
+- return WTF::nullopt;
+-
+- if (!hasAttributeWithoutSynchronization(adcampaignidAttr) && !hasAttributeWithoutSynchronization(addestinationAttr))
+- return WTF::nullopt;
+-
+- auto adCampaignIDAttr = attributeWithoutSynchronization(adcampaignidAttr);
+- auto adDestinationAttr = attributeWithoutSynchronization(addestinationAttr);
+-
+- if (adCampaignIDAttr.isEmpty() || adDestinationAttr.isEmpty()) {
+- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "Both adcampaignid and addestination need to be set for Ad Click Attribution to work."_s);
+- return WTF::nullopt;
+- }
+-
+- RefPtr<Frame> frame = document().frame();
+- if (!frame || !frame->isMainFrame()) {
+- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "Ad Click Attribution is only supported in the main frame."_s);
+- return WTF::nullopt;
+- }
+-
+- auto adCampaignID = parseHTMLNonNegativeInteger(adCampaignIDAttr);
+- if (!adCampaignID) {
+- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "adcampaignid can not be converted to a non-negative integer which is required for Ad Click Attribution."_s);
+- return WTF::nullopt;
+- }
+-
+- if (adCampaignID.value() >= AdClickAttribution::MaxEntropy) {
+- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, makeString("adcampaignid must have a non-negative value less than ", AdClickAttribution::MaxEntropy, " for Ad Click Attribution."));
+- return WTF::nullopt;
+- }
+-
+- URL adDestinationURL { URL(), adDestinationAttr };
+- if (!adDestinationURL.isValid() || !adDestinationURL.protocolIsInHTTPFamily()) {
+- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "adddestination could not be converted to a valid HTTP-family URL."_s);
+- return WTF::nullopt;
+- }
+-
+- return AdClickAttribution { Campaign(adCampaignID.value()), Source(document().domain()), Destination(adDestinationURL.host().toString()) };
+-}
+-
+ void HTMLAnchorElement::handleClick(Event& event)
+ {
+ event.setDefaultHandled();
+@@ -478,11 +431,6 @@ void HTMLAnchorElement::handleClick(Event& event)
+ else if (hasRel(Relation::NoOpener) || (RuntimeEnabledFeatures::sharedFeatures().blankAnchorTargetImpliesNoOpenerEnabled() && equalIgnoringASCIICase(effectiveTarget, "_blank")))
+ newFrameOpenerPolicy = NewFrameOpenerPolicy::Suppress;
+
+- auto adClickAttribution = parseAdClickAttribution();
+- // A matching conversion event needs to happen before the complete ad click attributionURL can be
+- // created. Thus, it should be empty for now.
+- ASSERT(!adClickAttribution || adClickAttribution->url().isNull());
+-
+ frame->loader().urlSelected(completedURL, effectiveTarget, &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo, WTFMove(adClickAttribution));
+ }
+
+diff --git a/Source/WebCore/html/HTMLAnchorElement.h b/Source/WebCore/html/HTMLAnchorElement.h
+index 61315ced..7f41385c 100644
+--- a/Source/WebCore/html/HTMLAnchorElement.h
++++ b/Source/WebCore/html/HTMLAnchorElement.h
+@@ -32,7 +32,6 @@
+
+ namespace WebCore {
+
+-class AdClickAttribution;
+ class DOMTokenList;
+
+ // Link relation bitmask values.
+@@ -97,8 +96,6 @@ private:
+
+ void sendPings(const URL& destinationURL);
+
+- Optional<AdClickAttribution> parseAdClickAttribution() const;
+-
+ void handleClick(Event&);
+
+ enum EventType {
+diff --git a/Source/WebCore/html/HTMLAnchorElement.idl b/Source/WebCore/html/HTMLAnchorElement.idl
+index 0d21fc7d..b7f59462 100644
+--- a/Source/WebCore/html/HTMLAnchorElement.idl
++++ b/Source/WebCore/html/HTMLAnchorElement.idl
+@@ -19,8 +19,6 @@
+ */
+
+ interface HTMLAnchorElement : HTMLElement {
+- [CEReactions=NotNeeded, EnabledAtRuntime=AdClickAttribution, Reflect] attribute DOMString adcampaignid;
+- [CEReactions=NotNeeded, EnabledAtRuntime=AdClickAttribution, Reflect] attribute DOMString addestination;
+ [CEReactions=NotNeeded, Reflect] attribute DOMString charset;
+ [CEReactions=NotNeeded, Reflect] attribute DOMString coords;
+ [CEReactions=NotNeeded, Conditional=DOWNLOAD_ATTRIBUTE, EnabledAtRuntime=DownloadAttribute, Reflect] attribute DOMString download;
+diff --git a/Source/WebCore/loader/AdClickAttribution.cpp b/Source/WebCore/loader/AdClickAttribution.cpp
+index bdc06393..2dab9617 100644
+--- a/Source/WebCore/loader/AdClickAttribution.cpp
++++ b/Source/WebCore/loader/AdClickAttribution.cpp
+@@ -34,59 +34,21 @@ namespace WebCore {
+
+ bool AdClickAttribution::isValid() const
+ {
+- return m_conversion
+- && m_conversion.value().isValid()
+- && m_campaign.isValid()
+- && !m_source.registrableDomain.isEmpty()
+- && !m_destination.registrableDomain.isEmpty()
+- && m_earliestTimeToSend;
++ return false;
+ }
+
+ void AdClickAttribution::setConversion(Conversion&& conversion)
+ {
+- if (!conversion.isValid() || (m_conversion && m_conversion->priority > conversion.priority))
+- return;
+-
+- m_conversion = WTFMove(conversion);
+- // 24-48 hour delay before sending. This helps privacy since the conversion and the attribution
+- // requests are detached and the time of the attribution does not reveal the time of the conversion.
+- m_earliestTimeToSend = m_timeOfAdClick + 24_h + Seconds(randomNumber() * (24_h).value());
++ return;
+ }
+
+ URL AdClickAttribution::url() const
+ {
+- if (!isValid())
+- return URL();
+-
+- StringBuilder builder;
+- builder.appendLiteral("https://");
+- builder.append(m_source.registrableDomain);
+- builder.appendLiteral("/.well-known/ad-click-attribution/");
+- builder.appendNumber(m_conversion.value().data);
+- builder.append('/');
+- builder.appendNumber(m_campaign.id);
+-
+- URL url { URL(), builder.toString() };
+- if (url.isValid())
+- return url;
+-
+ return URL();
+ }
+
+ URL AdClickAttribution::referrer() const
+ {
+- if (!isValid())
+- return URL();
+-
+- StringBuilder builder;
+- builder.appendLiteral("https://");
+- builder.append(m_destination.registrableDomain);
+- builder.append('/');
+-
+- URL url { URL(), builder.toString() };
+- if (url.isValid())
+- return url;
+-
+ return URL();
+ }
+
+diff --git a/Source/WebCore/loader/AdClickAttribution.h b/Source/WebCore/loader/AdClickAttribution.h
+index 34af2f2d..af6bf69c 100644
+--- a/Source/WebCore/loader/AdClickAttribution.h
++++ b/Source/WebCore/loader/AdClickAttribution.h
+@@ -150,41 +150,7 @@ void AdClickAttribution::encode(Encoder& encoder) const
+ template<class Decoder>
+ Optional<AdClickAttribution> AdClickAttribution::decode(Decoder& decoder)
+ {
+- Optional<CampaignId> campaignId;
+- decoder >> campaignId;
+- if (!campaignId)
+- return WTF::nullopt;
+-
+- Optional<String> sourceRegistrableDomain;
+- decoder >> sourceRegistrableDomain;
+- if (!sourceRegistrableDomain)
+- return WTF::nullopt;
+-
+- Optional<String> destinationRegistrableDomain;
+- decoder >> destinationRegistrableDomain;
+- if (!destinationRegistrableDomain)
+- return WTF::nullopt;
+-
+- Optional<WallTime> timeOfAdClick;
+- decoder >> timeOfAdClick;
+- if (!timeOfAdClick)
+- return WTF::nullopt;
+-
+- Optional<Optional<Conversion>> conversion;
+- decoder >> conversion;
+- if (!conversion)
+- return WTF::nullopt;
+-
+- Optional<Optional<WallTime>> earliestTimeToSend;
+- decoder >> earliestTimeToSend;
+- if (!earliestTimeToSend)
+- return WTF::nullopt;
+-
+- AdClickAttribution attribution { Campaign { WTFMove(*campaignId) }, Source { WTFMove(*sourceRegistrableDomain) }, Destination { WTFMove(*destinationRegistrableDomain) } };
+- attribution.m_conversion = WTFMove(*conversion);
+- attribution.m_earliestTimeToSend = WTFMove(*earliestTimeToSend);
+-
+- return attribution;
++ return WTF::nullopt;
+ }
+
+ template<class Encoder>
+@@ -196,17 +162,7 @@ void AdClickAttribution::Conversion::encode(Encoder& encoder) const
+ template<class Decoder>
+ Optional<AdClickAttribution::Conversion> AdClickAttribution::Conversion::decode(Decoder& decoder)
+ {
+- Optional<ConversionData> data;
+- decoder >> data;
+- if (!data)
+- return WTF::nullopt;
+-
+- Optional<PriorityValue> priority;
+- decoder >> priority;
+- if (!priority)
+- return WTF::nullopt;
+-
+- return Conversion { WTFMove(*data), Priority { WTFMove(*priority) } };
++ return WTF::nullopt;
+ }
+
+ } // namespace WebCore
+diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp
+index 766b7e1e..8563f462 100644
+--- a/Source/WebCore/loader/FrameLoader.cpp
++++ b/Source/WebCore/loader/FrameLoader.cpp
+@@ -1376,9 +1376,6 @@ void FrameLoader::loadURL(FrameLoadRequest&& frameLoadRequest, const String& ref
+ NavigationAction action { frameLoadRequest.requester(), request, frameLoadRequest.initiatedByMainFrame(), newLoadType, isFormSubmission, event, frameLoadRequest.shouldOpenExternalURLsPolicy(), frameLoadRequest.downloadAttribute() };
+ action.setLockHistory(lockHistory);
+ action.setLockBackForwardList(frameLoadRequest.lockBackForwardList());
+- if (adClickAttribution && m_frame.isMainFrame())
+- action.setAdClickAttribution(WTFMove(*adClickAttribution));
+-
+ if (!targetFrame && !effectiveFrameName.isEmpty()) {
+ action = action.copyWithShouldOpenExternalURLsPolicy(shouldOpenExternalURLsPolicyToApply(m_frame, frameLoadRequest));
+ policyChecker().checkNewWindowPolicy(WTFMove(action), WTFMove(request), WTFMove(formState), effectiveFrameName, [this, allowNavigationToInvalidURL, openerPolicy, completionHandler = completionHandlerCaller.release()] (const ResourceRequest& request, WeakPtr<FormState>&& formState, const String& frameName, const NavigationAction& action, ShouldContinue shouldContinue) mutable {
+diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h
+index 2030412e..f693ebd3 100644
+--- a/Source/WebCore/page/RuntimeEnabledFeatures.h
++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h
+@@ -341,8 +341,8 @@ public:
+ void setCSSLogicalEnabled(bool isEnabled) { m_CSSLogicalEnabled = isEnabled; }
+ bool cssLogicalEnabled() const { return m_CSSLogicalEnabled; }
+
+- bool adClickAttributionEnabled() const { return m_adClickAttributionEnabled; }
+- void setAdClickAttributionEnabled(bool isEnabled) { m_adClickAttributionEnabled = isEnabled; }
++ bool adClickAttributionEnabled() const { return false; }
++ void setAdClickAttributionEnabled(bool isEnabled) { }
+
+ WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
+
+diff --git a/lanodan-TODO b/lanodan-TODO
+index d8acc42c..ef507ac4 100644
+--- a/lanodan-TODO
++++ b/lanodan-TODO
+@@ -40,9 +40,10 @@
+
+ ## HTML
+ - [ ] noscript
+-- [x] Link ping
+-- [x] Link prefetch
+-- [x] Link preloading
++- [x] Anchor ping
++- [x] Anchor prefetch
++- [x] Anchor preloading
++- [x] Anchor AdClickAttribution
+ - [x] Media preloading
+ - [x] custom elements
+ - [ ] DNS prefetch
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0009-lanodan-TODO-Beacon.patch b/patches/net-libs/webkitgtk-2.24.2/0009-lanodan-TODO-Beacon.patch
@@ -0,0 +1,24 @@
+From 6e06790f6c5fa8b32e155daa89c89af3f2c77d06 Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Fri, 5 Apr 2019 08:29:03 +0200
+Subject: [PATCH 09/11] lanodan-TODO: Beacon
+
+---
+ lanodan-TODO | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lanodan-TODO b/lanodan-TODO
+index ef507ac4..86487345 100644
+--- a/lanodan-TODO
++++ b/lanodan-TODO
+@@ -32,6 +32,7 @@
+ - [ ] multimedia player stats (FPS, caching, …)
+ - [ ] Payment Request: https://www.w3.org/TR/payment-request/
+ - [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/
++- [ ] Beacon API: https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API
+
+ ## Headers
+ - [ ] referer
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch b/patches/net-libs/webkitgtk-2.24.2/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch
@@ -0,0 +1,26 @@
+From 3c98087b8b5f6b631a9032a15ce1b4fc4c8ae81f Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Thu, 20 Jun 2019 23:31:40 +0200
+Subject: [PATCH 10/11] WebKitWebViewGtk.cpp: Allow the user to override the
+ advertised MIME filter
+
+---
+ Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
+index 4f0e151c..fccbc89c 100644
+--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
++++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
+@@ -94,7 +94,7 @@ gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRe
+ #endif
+
+ if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request))
+- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
++ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection);
+
+ if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request))
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.2/0011-fr.po-Stash.patch b/patches/net-libs/webkitgtk-2.24.2/0011-fr.po-Stash.patch
@@ -0,0 +1,1126 @@
+From a3940fa6b5c27bbce275e14c797d0d16327915ac Mon Sep 17 00:00:00 2001
+From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
+Date: Thu, 20 Jun 2019 23:34:26 +0200
+Subject: [PATCH 11/11] fr.po: Stash
+
+---
+ Source/WebCore/platform/gtk/po/fr.po | 400 +++++++++++----------------
+ 1 file changed, 161 insertions(+), 239 deletions(-)
+
+diff --git a/Source/WebCore/platform/gtk/po/fr.po b/Source/WebCore/platform/gtk/po/fr.po
+index 319a79f7..abb509ad 100644
+--- a/Source/WebCore/platform/gtk/po/fr.po
++++ b/Source/WebCore/platform/gtk/po/fr.po
+@@ -63,7 +63,7 @@ msgstr "Passer la vidéo en mode _plein écran"
+
+ #: ../LocalizedStringsGtk.cpp:93
+ msgid "_Delete"
+-msgstr ""
++msgstr "_Suppression"
+
+ #: ../LocalizedStringsGtk.cpp:98
+ msgid "Select _All"
+@@ -108,33 +108,33 @@ msgstr "RLO F_orçage droite-à-gauche"
+
+ #: ../LocalizedStringsGtk.cpp:148
+ msgid "PDF _Pop directional formatting"
+-msgstr "PDF _Dépilement de formatage directionnel"
++msgstr "PDF _Arrêter le formatage directionnel"
+
+ #: ../LocalizedStringsGtk.cpp:153
+ msgid "ZWS _Zero width space"
+-msgstr "ZWS E_space sans chasse"
++msgstr "ZWS E_space sans largeur"
+
+ #: ../LocalizedStringsGtk.cpp:158
+ msgid "ZWJ Zero width _joiner"
+-msgstr "ZWJ _Liant sans chasse"
++msgstr "ZWJ _Liant sans largeur"
+
+ #: ../LocalizedStringsGtk.cpp:163
+ msgid "ZWNJ Zero width _non-joiner"
+-msgstr "ZWNJ _Anti-liant sans chasse"
++msgstr "ZWNJ N_on-liant sans largeur"
+
+ #: ../LocalizedStringsGtk.cpp:169
+ #, c-format
+ msgid "Use at least one character"
+ msgid_plural "Use at least %d characters"
+-msgstr[0] ""
+-msgstr[1] ""
++msgstr[0] "Utiliser au moins un charactère"
++msgstr[1] "Utiliser au moins %d charactères"
+
+ #: ../LocalizedStringsGtk.cpp:175
+ #, c-format
+ msgid "Use no more than one character"
+ msgid_plural "Use no more than %d characters"
+-msgstr[0] ""
+-msgstr[1] ""
++msgstr[0] "N'utiliser plus de un charactère"
++msgstr[1] "N'utiliser plus de %d charactères"
+
+ #: ../LocalizedStringsGtk.cpp:181
+ msgid "Unacceptable TLS certificate"
+@@ -151,8 +151,7 @@ msgstr "Réinitialiser"
+
+ #: ../../LocalizedStrings.cpp:107
+ msgid "This is a searchable index. Enter search keywords: "
+-msgstr ""
+-"Ceci est un index de recherche. Saisissez des mots-clés de recherche : "
++msgstr "Ceci est un index de recherche. Saisir des mots-clés : "
+
+ #: ../../LocalizedStrings.cpp:113
+ msgid "Submit"
+@@ -249,7 +248,7 @@ msgstr "_Ajouter le mot"
+ #: ../../LocalizedStrings.cpp:238
+ #, c-format
+ msgid "Look Up “%s”"
+-msgstr ""
++msgstr "Rechercher “%s”"
+
+ #: ../../LocalizedStrings.cpp:246
+ msgid "_Open Link"
+@@ -301,7 +300,7 @@ msgstr "_Souligné"
+
+ #: ../../LocalizedStrings.cpp:303
+ msgid "_Outline"
+-msgstr "_Encadrements"
++msgstr "_Cernage"
+
+ #: ../../LocalizedStrings.cpp:309
+ msgid "Paragraph Direction"
+@@ -365,7 +364,7 @@ msgstr "En boucle"
+
+ #: ../../LocalizedStrings.cpp:386
+ msgid "Enter Full Screen"
+-msgstr "activer le mode plein écran"
++msgstr "Activer le mode plein écran"
+
+ #: ../../LocalizedStrings.cpp:391
+ msgctxt "Video Exit Fullscreen context menu item"
+@@ -414,7 +413,7 @@ msgstr "marqueur de liste"
+
+ #: ../../LocalizedStrings.cpp:453
+ msgid "image map"
+-msgstr "carte cliquable"
++msgstr "image interactive"
+
+ #: ../../LocalizedStrings.cpp:458
+ msgid "heading"
+@@ -534,11 +533,11 @@ msgstr "sauter"
+
+ #: ../../LocalizedStrings.cpp:621
+ msgid "password auto fill"
+-msgstr ""
++msgstr "auto-remplissage de mot de passe"
+
+ #: ../../LocalizedStrings.cpp:626
+ msgid "contact info auto fill"
+-msgstr ""
++msgstr "auto-remplissage d'infos de contacts"
+
+ #: ../../LocalizedStrings.cpp:631
+ msgid "Missing Plug-in"
+@@ -575,7 +574,7 @@ msgstr "Inconnue"
+ #: ../../LocalizedStrings.cpp:675
+ #, c-format
+ msgid "%s %d×%d pixels"
+-msgstr "%s %dx%d pixels"
++msgstr "%s %d×%d pixels"
+
+ #: ../../LocalizedStrings.cpp:683
+ msgid "Loading…"
+@@ -796,22 +795,22 @@ msgstr ""
+ #: ../../LocalizedStrings.cpp:865
+ #, c-format
+ msgid "Use at least %d characters"
+-msgstr ""
++msgstr "Utiliser au moins %s charactères"
+
+ #: ../../LocalizedStrings.cpp:871
+ #, c-format
+ msgid "Use no more than %d characters"
+-msgstr ""
++msgstr "N'utiliser plus de %s charactères"
+
+ #: ../../LocalizedStrings.cpp:881
+ #, c-format
+ msgid "Value must be greater than or equal to %s"
+-msgstr ""
++msgstr "La valeur doit être suppérieure ou égale à %s"
+
+ #: ../../LocalizedStrings.cpp:893
+ #, c-format
+ msgid "Value must be less than or equal to %s"
+-msgstr ""
++msgstr "La valeur doit être inférieure ou égale à %s"
+
+ #: ../../LocalizedStrings.cpp:902
+ msgid "Enter a valid value"
+@@ -831,7 +830,7 @@ msgstr "Sous-titres"
+
+ #: ../../LocalizedStrings.cpp:924
+ msgid "Off"
+-msgstr ""
++msgstr "Désactivés"
+
+ #: ../../LocalizedStrings.cpp:929
+ msgid "Auto (Recommended)"
+@@ -849,7 +848,7 @@ msgstr "Inconnue"
+
+ #: ../../LocalizedStrings.cpp:985
+ msgid "Snapshotted Plug-In"
+-msgstr ""
++msgstr "Capture de Greffon"
+
+ #: ../../LocalizedStrings.cpp:990
+ msgid "Click to restart"
+@@ -857,16 +856,16 @@ msgstr "Cliquer pour redémarrer"
+
+ #: ../../LocalizedStrings.cpp:995
+ msgid "Show in blocked plug-in"
+-msgstr ""
++msgstr "Affiché pour un greffon bloqué"
+
+ #: ../../LocalizedStrings.cpp:1005
+ #, c-format
+ msgid "%s WebCrypto Master Key"
+-msgstr ""
++msgstr "%s Clé maitre WebCrypto"
+
+ #: ../../LocalizedStrings.cpp:1013
+ msgid "Used to encrypt WebCrypto keys in persistent storage, such as IndexedDB"
+-msgstr ""
++msgstr "Utilisée pour chiffrer les clés WebCrypto de manière persistance, telle que IndexedDB"
+
+ #: ../../network/soup/NetworkStorageSessionSoup.cpp:276
+ msgid "WebKitGTK+ password"
+@@ -878,7 +877,7 @@ msgstr "L'utilisation du port réseau restreint est interdite"
+
+ #: ../../../../WebKit2/Shared/WebErrors.cpp:46
+ msgid "The URL was blocked by a content blocker"
+-msgstr ""
++msgstr "L'URL à été blockqué par un bloqueur de contenu"
+
+ #: ../../../../WebKit2/Shared/WebErrors.cpp:51
+ #, fuzzy
+@@ -894,7 +893,7 @@ msgstr "Le chargement du cadre a été interrompu"
+
+ #: ../../../../WebKit2/Shared/WebErrors.cpp:62
+ msgid "The URL was blocked by a content filter"
+-msgstr ""
++msgstr "L'URL à été bloquée par un filtreur de contenu"
+
+ #: ../../../../WebKit2/Shared/WebErrors.cpp:68
+ #, fuzzy
+@@ -910,7 +909,7 @@ msgstr "Le greffon va gérer le chargement"
+
+ #: ../../../../WebKit2/Shared/WebErrors.cpp:78
+ msgid "WebKit encountered an internal error"
+-msgstr ""
++msgstr "WebKit à rencontré une erreur interne"
+
+ #: ../../../../WebKit2/Shared/glib/WebErrorsGlib.cpp:43
+ msgid "Load request cancelled"
+@@ -935,29 +934,29 @@ msgstr "L'utilisateur a annulé le téléchargement"
+ #. Title of the HTTP authentication dialog.
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:93
+ msgid "Authentication Required"
+-msgstr ""
++msgstr "Authentification Requise"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:104
+ #, fuzzy
+ #| msgid "cancel"
+ msgid "_Cancel"
+-msgstr "annuler"
++msgstr "_Annuler"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:110
+ msgid "_Authenticate"
+-msgstr ""
++msgstr "A_uthentification"
+
+ #. Prompt on the HTTP authentication dialog.
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:122
+ #, c-format
+ msgid "Authentication required by %s:%i"
+-msgstr ""
++msgstr "Authentification requise par %s:%i"
+
+ #. Label on the HTTP authentication dialog. %s is a (probably English) message from the website.
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:131
+ #, c-format
+ msgid "The site says: “%s”"
+-msgstr ""
++msgstr "Le site écrit : « %s »"
+
+ #. Check button on the HTTP authentication dialog.
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:138
+@@ -976,21 +975,19 @@ msgstr "Mot de _passe :"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp:151
+ msgid "Identifier"
+-msgstr ""
++msgstr "Identifiant"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp:152
+ msgid "The automation session identifier"
+-msgstr ""
++msgstr "Identifiant de session automatique"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:131
+ msgid "Current RGBA color"
+-msgstr ""
++msgstr "Couleur RVGA actuelle"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:132
+-#, fuzzy
+-#| msgid "The current active URI of the resource"
+ msgid "The current RGBA color for the request"
+-msgstr "L'URI actif actuel de la ressource"
++msgstr "L'URI actif actuel de la requête"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:164
+ msgid "Destination"
+@@ -998,7 +995,7 @@ msgstr "Destination"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:165
+ msgid "The local URI to where the download will be saved"
+-msgstr "URI local où le téléchargement sera enregistré"
++msgstr "URI locale où le téléchargement sera enregistré"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:177
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:123
+@@ -1019,23 +1016,19 @@ msgstr "Détermine la progression actuelle du téléchargement"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:214
+ msgid "Allow Overwrite"
+-msgstr ""
++msgstr "Permettre une réécriture"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:215
+-#, fuzzy
+-#| msgid "Whether the window can be resized."
+ msgid "Whether the destination may be overwritten"
+-msgstr "Indique si la fenêtre peut être redimensionnée."
++msgstr "Indique si la destination peut être réécrite."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp:85
+-#, fuzzy
+-#| msgid "Viewport Attributes"
+ msgid "Typing Attributes"
+-msgstr "Attributs de la zone d'affichage"
++msgstr "Attributs d'écriture"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp:86
+ msgid "Flags with the typing attributes"
+-msgstr ""
++msgstr "Étiquettes avec les attributs d’écritures"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:142
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:328
+@@ -1168,16 +1161,12 @@ msgid "The media URI"
+ msgstr "L'URI du média"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:113
+-#, fuzzy
+-#| msgid "Navigation type"
+ msgid "Navigation action"
+-msgstr "Type de navigation"
++msgstr "Action de navigation"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:114
+-#, fuzzy
+-#| msgid "The type of navigation triggering this decision"
+ msgid "The WebKitNavigationAction triggering this decision"
+-msgstr "Le type de navigation qui déclenche cette décision"
++msgstr "La WebKitNavigationAction qui déclenche cette décision"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:130
+ msgid "Navigation type"
+@@ -1225,13 +1214,11 @@ msgstr "Nom du nouveau cadre ciblé par cette action de navigation"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:103
+ msgid "ID"
+-msgstr ""
++msgstr "ID"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:104
+-#, fuzzy
+-#| msgid "The target frame for the navigation"
+ msgid "The unique id for the notification"
+-msgstr "Le cadre de destination de la navigation"
++msgstr "L'identifiant unique pour la notification"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:118
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:135
+@@ -1240,42 +1227,36 @@ msgid "Title"
+ msgstr "Titre"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:119
+-#, fuzzy
+-#| msgid "The target frame for the navigation"
+ msgid "The title for the notification"
+-msgstr "Le cadre de destination de la navigation"
++msgstr "Le titre pour la notification"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:133
+ msgid "Body"
+-msgstr ""
++msgstr "Corps de Texte"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:134
+-#, fuzzy
+-#| msgid "The target frame for the navigation"
+ msgid "The body for the notification"
+-msgstr "Le cadre de destination de la navigation"
++msgstr "Le corps de texte pour la notification"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:148
+ msgid "Tag"
+-msgstr ""
++msgstr "Étiquette"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:149
+-#, fuzzy
+-#| msgid "The target frame for the navigation"
+ msgid "The tag identifier for the notification"
+-msgstr "Le cadre de destination de la navigation"
++msgstr "L'identifiant de l'étiquette pour la navigation"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:118
+ msgid "Widget"
+-msgstr ""
++msgstr "Élément"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:119
+ msgid "Widget that will be added to the print dialog."
+-msgstr ""
++msgstr "Élément qui serat rajouté au dialogue d'impression."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:136
+ msgid "Title of the widget that will be added to the print dialog."
+-msgstr ""
++msgstr "Titre de l'élément qui serat rajouté au dialogue d'impression."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:157
+ msgid "Web View"
+@@ -1283,7 +1264,7 @@ msgstr "Vue Web"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:158
+ msgid "The web view that will be printed"
+-msgstr "L'affichage Web qui sera imprimé"
++msgstr "La vue Web qui sera imprimée"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:170
+ msgid "Print Settings"
+@@ -1497,12 +1478,12 @@ msgstr "La taille par défaut de la police pour l'affichage du texte."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:804
+ msgid "Default monospace font size"
+-msgstr "Taille par défaut de la police à chasse fixe"
++msgstr "Taille par défaut de la police à taille fixe"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:805
+ msgid "The default font size used to display monospace text."
+ msgstr ""
+-"La taille par défaut de la police pour l'affichage du texte à chasse fixe."
++"La taille par défaut de la police pour l'affichage du texte à taille fixe."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:819
+ msgid "Minimum font size"
+@@ -1534,11 +1515,11 @@ msgstr "Indique s'il faut activer la navigation privée"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:861
+ msgid "Enable developer extras"
+-msgstr "Activer les extensions pour développeurs"
++msgstr "Activer les extensions de dévelopement"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:862
+ msgid "Whether to enable developer extras"
+-msgstr "Indique s'il faut activer les extensions pour développeurs"
++msgstr "Indique s'il faut activer les extensions de dévelopement"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:874
+ msgid "Enable resizable text areas"
+@@ -1636,12 +1617,12 @@ msgstr "Indique si JavaScript peut accéder au presse-papiers"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1046
+ msgid "Media playback requires user gesture"
+-msgstr "La lecture du média nécessite l'intervention de l'utilisateur"
++msgstr "La lecture du média nécessite une intéraction manuelle"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1047
+ msgid "Whether media playback requires user gesture"
+ msgstr ""
+-"Indique si la lecture du média nécessite l'intervention de l'utilisateur"
++"Indique si la lecture du média nécessite une intéraction manuelle"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1061
+ msgid "Media playback allows inline"
+@@ -1663,11 +1644,11 @@ msgstr ""
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1096
+ msgid "Enable Site Specific Quirks"
+-msgstr "Activer les astuces spécifiques aux sites"
++msgstr "Activer des modification à certains sites"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1097
+ msgid "Enables the site-specific compatibility workarounds"
+-msgstr "Active les contournements de compatibilité spécifiques aux sites"
++msgstr "Active des coutournements spécifiques à certains sites"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1117
+ msgid "Enable page cache"
+@@ -1679,56 +1660,49 @@ msgstr "Indique si le cache des pages doit être utilisé"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1137
+ msgid "User agent string"
+-msgstr "Chaîne de l'agent utilisateur"
++msgstr "Identifiant de l'agent-utilisateur"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1138
+ msgid "The user agent string"
+-msgstr "Chaîne de l'agent utilisateur"
++msgstr "L'identifiant de l'agent-utilisateur (User-Agent)"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1150
+ msgid "Enable smooth scrolling"
+-msgstr "Activer le défilement lent"
++msgstr "Activer le défilement doux"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1151
+ msgid "Whether to enable smooth scrolling"
+-msgstr "Indique s'il faut activer le défilement lent"
++msgstr "Indique s'il faut activer le défilement doux"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1168
+-#, fuzzy
+-#| msgid "Enable accelerated compositing"
+ msgid "Enable accelerated 2D canvas"
+-msgstr "Activer la composition accélérée"
++msgstr "Activer l'accélération 2D des canvas"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1169
+-#, fuzzy
+ msgid "Whether to enable accelerated 2D canvas"
+-msgstr "Indique s'il faut activer les zones de texte redimensionnables"
++msgstr "Indique s'il faut activer l'accélération 2D des canvas"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1184
+ msgid "Write console messages on stdout"
+-msgstr ""
++msgstr "Écrire les message de console à stdout"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1185
+ msgid "Whether to write console messages on stdout"
+-msgstr ""
++msgstr "Indique s'il faut écrire les message de console à stdout"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1203
+ msgid "Enable MediaStream"
+ msgstr "Activer MediaStream"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1204
+-#, fuzzy
+-#| msgid "Whether WebAudio content should be handled"
+ msgid "Whether MediaStream content should be handled"
+-msgstr "Indique si les contenus WebAudio doivent être pris en charge"
++msgstr "Indique si les contenus MediaStream doivent être pris en charge"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1223
+ msgid "Enable Spatial Navigation"
+ msgstr "Activer la navigation spatiale"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1224
+-#, fuzzy
+-#| msgid "Whether to enable Spatial Navigation"
+ msgid "Whether to enable Spatial Navigation support."
+ msgstr "Indique s'il faut activer la navigation spatiale"
+
+@@ -1741,40 +1715,30 @@ msgid "Whether MediaSource should be enabled."
+ msgstr "Indique si MediaSource doit être activé"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1262
+-#, fuzzy
+-#| msgid "Enable universal access from file URIs"
+ msgid "Allow file access from file URLs"
+-msgstr "Activer l'accès universel à partir d'URI de fichiers"
++msgstr "Activer l'accès au fichiers depuis des URLs de fichiers"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1263
+-#, fuzzy
+-#| msgid "Whether to allow universal access from file URIs"
+ msgid "Whether file access is allowed from file URLs."
+-msgstr ""
+-"Indique s'il faut autoriser l'accès universel à partir d'URI de fichiers"
++msgstr "Indique si les URLs de fichiers ont l'accès aux fichiers."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1282
+-#, fuzzy
+-#| msgid "Enable universal access from file URIs"
+ msgid "Allow universal access from the context of file scheme URLs"
+-msgstr "Activer l'accès universel à partir d'URI de fichiers"
++msgstr "Activer l'accès universel à partir d'URLs de fichiers"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1283
+-#, fuzzy
+-#| msgid "Whether to allow universal access from file URIs"
+-msgid ""
+ "Whether or not universal access is allowed from the context of file scheme "
+ "URLs"
+ msgstr ""
+-"Indique s'il faut autoriser l'accès universel à partir d'URI de fichiers"
++"Indique si l'accès universel est autorisé à partir d'URLs de fichiers "
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1307
+ msgid "Hardware Acceleration Policy"
+-msgstr ""
++msgstr "Politique d'Accélération Matérielle"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1308
+ msgid "The policy to decide how to enable and disable hardware acceleration"
+-msgstr ""
++msgstr "La politique pour décider comment activer et désactiver l'accélération matérielle"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:96
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:105
+@@ -1826,58 +1790,52 @@ msgstr "Le nom de fichier suggéré pour la réponse URI"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:173
+ msgid "HTTP Headers"
+-msgstr ""
++msgstr "En-Têtes HTTP"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:174
+-#, fuzzy
+-#| msgid "The MIME type of the response"
+ msgid "The The HTTP headers of the response"
+-msgstr "Type MIME de la réponse"
++msgstr "Les Les En-Têtes du Type MIME de la réponse"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:168
+ msgid "Is for audio device"
+-msgstr ""
++msgstr "Est pour un appareil audio"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:169
+ msgid ""
+ "Whether the media device to which the permission was requested has a "
+ "microphone or not."
+ msgstr ""
++"Si l'appareil multimédia auquel la permission à été demandé à un "
++"microphone ou non."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:181
+ msgid "Is for video device"
+-msgstr ""
++msgstr "Est pour un appareil vidéo"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:182
+ msgid ""
+ "Whether the media device to which the permission was requested has a video "
+ "capture capability or not."
+ msgstr ""
++"Si l'appareil multimédia auquel la permission à été demandé à un dispositif"
++"de capture vidéo ou non."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:384
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:256
+-#, fuzzy
+-#| msgid "Local Storage Database Path"
+ msgid "Local Storage Directory"
+-msgstr "Chemin vers le lieu d'enregistrement local des bases de données"
++msgstr "Dossier de Stockage Local"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:385
+-#, fuzzy
+-#| msgid "The local URI to where the download will be saved"
+ msgid "The directory where local storage data will be saved"
+-msgstr "URI local où le téléchargement sera enregistré"
++msgstr "Le dossier où le stockage local sera enregistré"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:401
+-#, fuzzy
+-#| msgid "Web Database Usage"
+ msgid "Website Data Manager"
+-msgstr "Utilisation de la base de données Web"
++msgstr "Gestionnaire de Données des sites web"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:402
+-#, fuzzy
+-#| msgid "The WebView associated with this find controller"
+ msgid "The WebKitWebsiteDataManager associated with this context"
+-msgstr "Le WebView associé à ce contrôleur de recherche"
++msgstr "Le WebKitWebsiteDataManager associé à ce context"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:127
+ msgid "Inspected URI"
+@@ -1893,17 +1851,19 @@ msgstr "Hauteur attachée"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:140
+ msgid "The height that the inspector view should have when it is attached"
+-msgstr "Hauteur que l'affichage inspecteur devrait avoir lorsqu'il est attaché"
++msgstr "Hauteur que la vue d'inspection devrait avoir lorsqu'il est attaché"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:157
+ msgid "Can Attach"
+-msgstr ""
++msgstr "Peux attacher"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:158
+ msgid ""
+ "Whether the inspector can be attached to the same window that contains the "
+ "inspected view"
+ msgstr ""
++"Si l'inspecteur peux être attaché à la même fenêtre qui contient la vue "
++"inspectée"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:111
+ msgid "The current active URI of the resource"
+@@ -1919,97 +1879,85 @@ msgstr "Fichiers locaux"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:221
+ msgid "Base Data Directory"
+-msgstr ""
++msgstr "Racine du dossier de données"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:222
+ msgid "The base directory for Website data"
+-msgstr ""
++msgstr "Le dossier racine pour les données des sites web"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:239
+ msgid "Base Cache Directory"
+-msgstr ""
++msgstr "Racine du dossier de cache"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:240
+ msgid "The base directory for Website cache"
+-msgstr ""
++msgstr "Le dossier racine pour le cache des sites web"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:257
+-#, fuzzy
+-#| msgid "The path to where HTML5 Local Storage databases are stored."
+ msgid "The directory where local storage data will be stored"
+-msgstr ""
+-"Le chemin vers le lieu d'enregistrement local des bases de données HTML5."
++msgstr "Le dossier où le stockage local sera enregistré"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:273
+ msgid "Disk Cache Directory"
+-msgstr ""
++msgstr "Dossier de Cache Disque"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:274
+ msgid "The directory where HTTP disk cache will be stored"
+-msgstr ""
++msgstr "Le dossier où le cache disque HTTP sera enregistré"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:290
+-#, fuzzy
+-#| msgid "Enable offline web application cache"
+ msgid "Offline Web Application Cache Directory"
+-msgstr "Activer le cache hors ligne des applications Web"
++msgstr "Dossier de cache des applications hors-lignes"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:291
+-#, fuzzy
+-#| msgid "Whether to enable offline web application cache"
+ msgid "The directory where offline web application cache will be stored"
+-msgstr "Indique s'il faut activer le cache hors ligne des applications Web"
++msgstr "Le dossier où les applications hors-lignes seront enregistrées"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:307
+ msgid "IndexedDB Directory"
+-msgstr ""
++msgstr "Dossier IndexedDB"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:308
+ msgid "The directory where IndexedDB databases will be stored"
+-msgstr ""
++msgstr "Dossier où les bases de données IndexedDB seront enregistrées"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:324
+ msgid "WebSQL Directory"
+-msgstr ""
++msgstr "Dossier WebSQL"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:325
+-#, fuzzy
+-#| msgid "The path to where HTML5 Local Storage databases are stored."
+ msgid "The directory where WebSQL databases will be stored"
+-msgstr ""
+-"Le chemin vers le lieu d'enregistrement local des bases de données HTML5."
++msgstr "Dossier où les bases de données WebSQL seront enregistrées"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:345
+ msgid "Whether the WebKitWebsiteDataManager is ephemeral"
+-msgstr ""
++msgstr "Si le WebKitWebsiteDataManager est éphémère"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:1270
+-#, fuzzy
+-#| msgid "Play movie in fullscreen mode"
+ msgid "Website running in fullscreen mode"
+-msgstr "Voir le film en mode plein écran"
++msgstr "Site web affiché en plein écran"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:368
+ msgid "Are you sure you want to leave this page?"
+-msgstr ""
++msgstr "Êtes-vous sur de vouloir quitter cette page?"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:369
+ msgid "Stay on Page"
+-msgstr ""
++msgstr "Rester sur la page"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:369
+ msgid "Leave Page"
+-msgstr ""
++msgstr "Quitter la page"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:570
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:575
+ msgid "Select Files"
+-msgstr "Sélectionner les fichiers"
++msgstr "Sélectionner des fichiers"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:570
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:575
+ msgid "Select File"
+-msgstr "Sélectionner le fichier"
++msgstr "Sélectionner un fichier"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:645
+ msgid "Acknowledge"
+@@ -2038,10 +1986,8 @@ msgid "WebView settings"
+ msgstr "Paramètres WebView"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:901
+-#, fuzzy
+-#| msgid "The WebKitWebViewGroup of the view"
+ msgid "The WebKitSettings of the view"
+-msgstr "WebKitWebViewGroup de l'affichage"
++msgstr "Le WebKitSettings de l'affichage"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:917
+ msgid "WebView user content manager"
+@@ -2087,43 +2033,35 @@ msgstr "Le niveau du zoom pour le contenu de l'affichage"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1011
+ msgid "Is Loading"
+-msgstr ""
++msgstr "Est en chargement"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1012
+ msgid "Whether the view is loading a page"
+-msgstr "Indique si l'affichage est en train de charger une page"
++msgstr "Indique si la vue est en train de charger une page"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1032
+-#, fuzzy
+-#| msgid "Whether the view is loading a page"
+ msgid "Whether the view is playing audio"
+-msgstr "Indique si l'affichage est en train de charger une page"
++msgstr "Indique si la vue joue de l'audio"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1055
+-#, fuzzy
+-#| msgid "Whether the view is loading a page"
+ msgid "Whether the web view is ephemeral"
+-msgstr "Indique si l'affichage est en train de charger une page"
++msgstr "Indique si la vue web est éphémère."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1074
+-#, fuzzy
+-#| msgid "Whether the view is loading a page"
+ msgid "Whether the web view is crontrolled by automation"
+-msgstr "Indique si l'affichage est en train de charger une page"
++msgstr "Indique si la vue web est controllée par un automatisme"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1091
+ msgid "Editable"
+ msgstr "Modifiable"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1092
+-#, fuzzy
+-#| msgid "Whether content can be modified by the user"
+ msgid "Whether the content can be modified by the user."
+-msgstr "Indique si le contenu peut être modifié par l'utilisateur"
++msgstr "Indique si le contenu peut être modifié par l'utilisateur."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3138
+ msgid "An exception was raised in JavaScript"
+-msgstr "Une exception a été levée dans JavaScript"
++msgstr "Une exception a été soulevée dans JavaScript"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3596
+ msgid "There was an error creating the snapshot"
+@@ -2131,7 +2069,7 @@ msgstr "Une erreur est survenue lors de la création de l'instantané"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:210
+ msgid "Geometry"
+-msgstr "Géométrie"
++msgstr "Positionement"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:211
+ msgid "The size and position of the window on the screen."
+@@ -2168,7 +2106,7 @@ msgstr "Barre de menu visible"
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:263
+ msgid "Whether the menubar should be visible for the window."
+-msgstr "Indique si la barre du menu doit être visible sur la fenêtre."
++msgstr "Indique si la barre de menu doit être visible sur la fenêtre."
+
+ #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:275
+ msgid "Locationbar Visible"
+@@ -2211,11 +2149,9 @@ msgid "Set Color"
+ msgstr "Définir la couleur"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:83
+-#, fuzzy
+-#| msgid "Print Backgrounds"
+ msgctxt "Undo action name"
+ msgid "Set Background Color"
+-msgstr "Imprimer les arrière-plans"
++msgstr "Définir l'arrière-plans"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:85
+ msgctxt "Undo action name"
+@@ -2225,156 +2161,142 @@ msgstr ""
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:87
+ msgctxt "Undo action name"
+ msgid "Tighten Kerning"
+-msgstr ""
++msgstr "Rétrécir le crénage"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:89
+ msgctxt "Undo action name"
+ msgid "Loosen Kerning"
+-msgstr ""
++msgstr "Aggrandir le crénage"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:91
+ msgctxt "Undo action name"
+ msgid "Use Standard Kerning"
+-msgstr ""
++msgstr "Utiliser un crénage standard"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:93
+ msgctxt "Undo action name"
+ msgid "Turn Off Ligatures"
+-msgstr ""
++msgstr "Désactiver les ligatures"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:95
+ msgctxt "Undo action name"
+ msgid "Use Standard Ligatures"
+-msgstr ""
++msgstr "Utiliser des ligatures standards"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:97
+ msgctxt "Undo action name"
+ msgid "Use All Ligatures"
+-msgstr ""
++msgstr "Utiliser toutes les ligatures"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:99
+ msgctxt "Undo action name"
+ msgid "Raise Baseline"
+-msgstr ""
++msgstr "Relever la ligne de référence"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:101
+ msgctxt "Undo action name"
+ msgid "Lower Baseline"
+-msgstr ""
++msgstr "Abaisser la ligne de référence"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:103
+ msgctxt "Undo action name"
+ msgid "Set Traditional Character Shape"
+-msgstr ""
++msgstr "Définir une forme de charactère traditionelle"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:105
+-#, fuzzy
+-#| msgid "_Font"
+ msgctxt "Undo action name"
+ msgid "Set Font"
+-msgstr "_Police"
++msgstr "Définir une police"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:107
+-#, fuzzy
+-#| msgid "Viewport Attributes"
+ msgctxt "Undo action name"
+ msgid "Change Attributes"
+-msgstr "Attributs de la zone d'affichage"
++msgstr "Changer les attributs"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:109
+ msgctxt "Undo action name"
+ msgid "Align Left"
+-msgstr ""
++msgstr "Aligner à gauche"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:111
+ msgctxt "Undo action name"
+ msgid "Align Right"
+-msgstr ""
++msgstr "Aligner à Droite"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:113
+ msgctxt "Undo action name"
+ msgid "Center"
+-msgstr ""
++msgstr "Centré"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:115
+ msgctxt "Undo action name"
+ msgid "Justify"
+-msgstr ""
++msgstr "Justifié"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:117
+ msgctxt "Undo action name"
+ msgid "Set Writing Direction"
+-msgstr ""
++msgstr "Définir une direction d'écriture"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:119
+-#, fuzzy
+-#| msgid "description"
+ msgctxt "Undo action name"
+ msgid "Subscript"
+-msgstr "description"
++msgstr "Indice"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:121
+-#, fuzzy
+-#| msgid "description"
+ msgctxt "Undo action name"
+ msgid "Superscript"
+-msgstr "description"
++msgstr "Exposant"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:123
+ msgctxt "Undo action name"
+ msgid "Underline"
+-msgstr ""
++msgstr "Soulignage"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:125
+-#, fuzzy
+-#| msgid "_Outline"
+ msgctxt "Undo action name"
+ msgid "Outline"
+-msgstr "_Encadrements"
++msgstr "Cernage"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:127
+-#, fuzzy
+-#| msgid "description"
+ msgctxt "Undo action name"
+ msgid "Unscript"
+-msgstr "description"
++msgstr ""
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:129
+ msgctxt "Undo action name"
+ msgid "Drag"
+-msgstr ""
++msgstr "Glisser"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:131
+ msgctxt "Undo action name"
+ msgid "Cut"
+-msgstr ""
++msgstr "Couper"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:133
+ msgctxt "Undo action name"
+ msgid "Bold"
+-msgstr ""
++msgstr "Gras"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:135
+ msgctxt "Undo action name"
+ msgid "Italics"
+-msgstr ""
++msgstr "Italiques"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:137
+ msgctxt "Undo action name"
+ msgid "Delete"
+-msgstr ""
++msgstr "Supprimer"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:139
+-#, fuzzy
+-#| msgid "Destination"
+ msgctxt "Undo action name"
+ msgid "Dictation"
+-msgstr "Destination"
++msgstr "Dicter"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:141
+ msgctxt "Undo action name"
+ msgid "Paste"
+-msgstr ""
++msgstr "Coller"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:143
+ msgctxt "Undo action name"
+@@ -2394,36 +2316,36 @@ msgstr ""
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:162
+ msgctxt "Undo action name"
+ msgid "Create Link"
+-msgstr ""
++msgstr "Créer un lien"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:164
+ msgctxt "Undo action name"
+ msgid "Unlink"
+-msgstr ""
++msgstr "Supprimer le lien"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:167
+ msgctxt "Undo action name"
+ msgid "Insert List"
+-msgstr ""
++msgstr "Insérer une liste"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:169
+ msgctxt "Undo action name"
+ msgid "Formatting"
+-msgstr ""
++msgstr "Formattage"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:171
+ msgctxt "Undo action name"
+ msgid "Indent"
+-msgstr ""
++msgstr "Indenter"
+
+ #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:173
+ msgctxt "Undo action name"
+ msgid "Outdent"
+-msgstr ""
++msgstr "Désindenter"
+
+ #: ../../../../WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp:39
+ msgid "Local documents on your computer"
+-msgstr ""
++msgstr "Documents locaux à votre ordinateur"
+
+ #: ../../../../WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp:103
+ msgid "Node"
+--
+2.21.0
+
diff --git a/patches/net-libs/webkitgtk-2.24.3/webkitgtk-2.24.2-no_gerror.patch b/patches/net-libs/webkitgtk-2.24.3/webkitgtk-2.24.2-no_gerror.patch
@@ -0,0 +1,24 @@
+commit 511766488cff5f4c4dc0fd0ee9ac65b28433220f
+Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+Date: 2019-07-29T16:41:43 GMT
+
+ ProcessLauncher::launchProcess: Do not g_error() on me
+
+diff --git a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp
+index 64a455d4..e790e45a 100644
+--- a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp
++++ b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp
+@@ -121,8 +121,11 @@ void ProcessLauncher::launchProcess()
+ GRefPtr<GSubprocess> process;
+ process = adoptGRef(g_subprocess_launcher_spawnv(launcher.get(), argv, &error.outPtr()));
+
+- if (!process.get())
+- g_error("Unable to fork a new child process: %s", error->message);
++ if (!process.get()) {
++ g_fprintf(stderr, "WebKit: Unable to fork a new child process: %s", error->message);
++ //TODO: try to clean before returning
++ return;
++ }
+
+ const char* processIdStr = g_subprocess_get_identifier(process.get());
+ m_processIdentifier = g_ascii_strtoll(processIdStr, nullptr, 0);
diff --git a/patches/sys-libs/libomp/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch
diff --git a/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch
@@ -0,0 +1,14 @@
+--- runtime/cmake/LibompHandleFlags.cmake.old
++++ runtime/cmake/LibompHandleFlags.cmake
+@@ -152,6 +152,11 @@ function(libomp_get_libflags libflags)
+ libomp_append(libflags_local "-lm")
+ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
+ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
++ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
++ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
++ libomp_append(libflags_local -lm)
++ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
++ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
+ libomp_append(libflags_local -lm)
+ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
diff --git a/patches/x11-misc/redshift/redshift-9999_663_wayland.patch b/patches/x11-misc/redshift/redshift-9999_663_wayland.patch
@@ -0,0 +1,1015 @@
+From 7da875d34854a6a34612d5ce4bd8718c32bec804 Mon Sep 17 00:00:00 2001
+From: minus <minus@mnus.de>
+Date: Thu, 18 Apr 2019 00:43:21 +0200
+Subject: [PATCH] Implement Wayland support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Implement the wlr_gamma_control_unstable_v1 protocol.
+The Wayland backend is prioritized over randr since it will fail in
+an X11 context anyway (but the randr backend would not fail in a Wayland
+context with xwayland support).
+The gamma setting is reset when the client disconnects, thus the
+behavior for oneshot mode blocks, like for Quartz.
+
+Co-Authored-By: Giulio Camuffo <giuliocamuffo@gmail.com>
+Co-Authored-By: Thomas Weißschuh <thomas@t-8ch.de>
+Co-Authored-By: Marek Otahal <markotahal@gmail.com>
+Co-Authored-By: Dominique Martinet <asmadeus@codewreck.org>
+---
+ configure.ac | 29 +++
+ po/POTFILES.in | 1 +
+ src/Makefile.am | 32 ++++
+ src/gamma-control.xml | 126 +++++++++++++
+ src/gamma-wl.c | 372 +++++++++++++++++++++++++++++++++++++
+ src/gamma-wl.h | 32 ++++
+ src/orbital-authorizer.xml | 61 ++++++
+ src/os-compatibility.c | 148 +++++++++++++++
+ src/os-compatibility.h | 9 +
+ src/redshift.c | 32 ++--
+ 13 files changed, 840 insertions(+), 14 deletions(-)
+ create mode 100644 src/gamma-control.xml
+ create mode 100644 src/gamma-wl.c
+ create mode 100644 src/gamma-wl.h
+ create mode 100644 src/orbital-authorizer.xml
+ create mode 100644 src/os-compatibility.c
+ create mode 100644 src/os-compatibility.h
+
+diff --git a/configure.ac b/configure.ac
+index b4116262..8347dcc4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -68,6 +68,10 @@ PKG_CHECK_MODULES([XCB], [xcb], [have_xcb=yes], [have_xcb=no])
+ PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr],
+ [have_xcb_randr=yes], [have_xcb_randr=no])
+
++PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-scanner >= 1.15.0],
++ [have_wayland=yes], [have_wayland=no])
++PKG_CHECK_VAR(WAYLAND_SCANNER, wayland-scanner, wayland_scanner)
++
+ PKG_CHECK_MODULES([GLIB], [glib-2.0 gobject-2.0], [have_glib=yes], [have_glib=no])
+ PKG_CHECK_MODULES([GEOCLUE2], [glib-2.0 gio-2.0 >= 2.26], [have_geoclue2=yes], [have_geoclue2=no])
+
+@@ -124,6 +128,30 @@ AS_IF([test "x$enable_drm" != xno], [
+ ])
+ AM_CONDITIONAL([ENABLE_DRM], [test "x$enable_drm" = xyes])
+
++# Check Wayland method
++AC_MSG_CHECKING([whether to enable Wayland method])
++AC_ARG_ENABLE([wayland], [AC_HELP_STRING([--enable-wayland],
++ [enable Wayland method])],
++ [enable_wayland=$enableval],[enable_wayland=maybe])
++AS_IF([test "x$enable_wayland" != xno], [
++ AS_IF([test $have_wayland = yes], [
++ AC_DEFINE([ENABLE_WAYLAND], 1,
++ [Define to 1 to enable Wayland method])
++ AC_MSG_RESULT([yes])
++ enable_wayland=yes
++ ], [
++ AC_MSG_RESULT([missing dependencies])
++ AS_IF([test "x$enable_wayland" = xyes], [
++ AC_MSG_ERROR([missing dependencies for Wayland method])
++ ])
++ enable_wayland=no
++ ])
++], [
++ AC_MSG_RESULT([no])
++ enable_wayland=no
++])
++AM_CONDITIONAL([ENABLE_WAYLAND], [test "x$enable_wayland" = xyes])
++
+ # Check RANDR method
+ AC_MSG_CHECKING([whether to enable RANDR method])
+ AC_ARG_ENABLE([randr], [AC_HELP_STRING([--enable-randr],
+@@ -376,6 +404,7 @@ echo "
+
+ Adjustment methods:
+ DRM: ${enable_drm}
++ Wayland: ${enable_wayland}
+ RANDR: ${enable_randr}
+ VidMode: ${enable_vidmode}
+ Quartz (macOS): ${enable_quartz}
+diff --git a/po/POTFILES.in b/po/POTFILES.in
+index 5ef8dacc..1d255600 100644
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -9,6 +9,7 @@ src/options.c
+ src/config-ini.c
+
+ src/gamma-drm.c
++src/gamma-wl.c
+ src/gamma-randr.c
+ src/gamma-vidmode.c
+ src/gamma-quartz.c
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 8aa96ead..ed40f2d8 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -23,6 +23,7 @@ redshift_SOURCES = \
+
+ EXTRA_redshift_SOURCES = \
+ gamma-drm.c gamma-drm.h \
++ gamma-wl.c gamma-wl.h \
+ gamma-randr.c gamma-randr.h \
+ gamma-vidmode.c gamma-vidmode.h \
+ gamma-quartz.c gamma-quartz.h \
+@@ -43,6 +44,29 @@ redshift_LDADD += \
+ $(DRM_LIBS) $(DRM_CFLAGS)
+ endif
+
++if ENABLE_WAYLAND
++redshift_SOURCES += gamma-wl.c gamma-wl.h os-compatibility.c os-compatibility.h
++
++AM_CFLAGS += $(WAYLAND_CFLAGS)
++
++redshift_LDADD += \
++ $(WAYLAND_LIBS) $(WAYLAND_CFLAGS)
++
++nodist_redshift_SOURCES = \
++ gamma-control-protocol.c \
++ gamma-control-client-protocol.h \
++ orbital-authorizer-protocol.c \
++ orbital-authorizer-client-protocol.h
++
++BUILT_SOURCES = \
++ gamma-control-protocol.c \
++ gamma-control-client-protocol.h \
++ orbital-authorizer-protocol.c \
++ orbital-authorizer-client-protocol.h
++
++EXTRA_DIST += gamma-control.xml orbital-authorizer.xml
++endif
++
+ if ENABLE_RANDR
+ redshift_SOURCES += gamma-randr.c gamma-randr.h
+ AM_CFLAGS += $(XCB_CFLAGS) $(XCB_RANDR_CFLAGS)
+@@ -103,3 +127,11 @@ endif
+
+ .rc.o:
+ $(AM_V_GEN)$(WINDRES) -I$(top_builddir) -i $< -o $@
++
++CLEANFILES = *-protocol.c *-client-protocol.h
++
++%-protocol.c : $(srcdir)/%.xml
++ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) private-code < $< > $@
++
++%-client-protocol.h : $(srcdir)/%.xml
++ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) client-header < $< > $@
+diff --git a/src/gamma-control.xml b/src/gamma-control.xml
+new file mode 100644
+index 00000000..ad71a15c
+--- /dev/null
++++ b/src/gamma-control.xml
+@@ -0,0 +1,126 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<protocol name="wlr_gamma_control_unstable_v1">
++ <copyright>
++ Copyright © 2015 Giulio camuffo
++ Copyright © 2018 Simon Ser
++
++ Permission to use, copy, modify, distribute, and sell this
++ software and its documentation for any purpose is hereby granted
++ without fee, provided that the above copyright notice appear in
++ all copies and that both that copyright notice and this permission
++ notice appear in supporting documentation, and that the name of
++ the copyright holders not be used in advertising or publicity
++ pertaining to distribution of the software without specific,
++ written prior permission. The copyright holders make no
++ representations about the suitability of this software for any
++ purpose. It is provided "as is" without express or implied
++ warranty.
++
++ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
++ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
++ THIS SOFTWARE.
++ </copyright>
++
++ <description summary="manage gamma tables of outputs">
++ This protocol allows a privileged client to set the gamma tables for
++ outputs.
++
++ Warning! The protocol described in this file is experimental and
++ backward incompatible changes may be made. Backward compatible changes
++ may be added together with the corresponding interface version bump.
++ Backward incompatible changes are done by bumping the version number in
++ the protocol and interface names and resetting the interface version.
++ Once the protocol is to be declared stable, the 'z' prefix and the
++ version number in the protocol and interface names are removed and the
++ interface version number is reset.
++ </description>
++
++ <interface name="zwlr_gamma_control_manager_v1" version="1">
++ <description summary="manager to create per-output gamma controls">
++ This interface is a manager that allows creating per-output gamma
++ controls.
++ </description>
++
++ <request name="get_gamma_control">
++ <description summary="get a gamma control for an output">
++ Create a gamma control that can be used to adjust gamma tables for the
++ provided output.
++ </description>
++ <arg name="id" type="new_id" interface="zwlr_gamma_control_v1"/>
++ <arg name="output" type="object" interface="wl_output"/>
++ </request>
++
++ <request name="destroy" type="destructor">
++ <description summary="destroy the manager">
++ All objects created by the manager will still remain valid, until their
++ appropriate destroy request has been called.
++ </description>
++ </request>
++ </interface>
++
++ <interface name="zwlr_gamma_control_v1" version="1">
++ <description summary="adjust gamma tables for an output">
++ This interface allows a client to adjust gamma tables for a particular
++ output.
++
++ The client will receive the gamma size, and will then be able to set gamma
++ tables. At any time the compositor can send a failed event indicating that
++ this object is no longer valid.
++
++ There must always be at most one gamma control object per output, which
++ has exclusive access to this particular output. When the gamma control
++ object is destroyed, the gamma table is restored to its original value.
++ </description>
++
++ <event name="gamma_size">
++ <description summary="size of gamma ramps">
++ Advertise the size of each gamma ramp.
++
++ This event is sent immediately when the gamma control object is created.
++ </description>
++ <arg name="size" type="uint"/>
++ </event>
++
++ <enum name="error">
++ <entry name="invalid_gamma" value="1" summary="invalid gamma tables"/>
++ </enum>
++
++ <request name="set_gamma">
++ <description summary="set the gamma table">
++ Set the gamma table. The file descriptor can be memory-mapped to provide
++ the raw gamma table, which contains successive gamma ramps for the red,
++ green and blue channels. Each gamma ramp is an array of 16-byte unsigned
++ integers which has the same length as the gamma size.
++
++ The file descriptor data must have the same length as three times the
++ gamma size.
++ </description>
++ <arg name="fd" type="fd" summary="gamma table file descriptor"/>
++ </request>
++
++ <event name="failed">
++ <description summary="object no longer valid">
++ This event indicates that the gamma control is no longer valid. This
++ can happen for a number of reasons, including:
++ - The output doesn't support gamma tables
++ - Setting the gamma tables failed
++ - Another client already has exclusive gamma control for this output
++ - The compositor has transfered gamma control to another client
++
++ Upon receiving this event, the client should destroy this object.
++ </description>
++ </event>
++
++ <request name="destroy" type="destructor">
++ <description summary="destroy this control">
++ Destroys the gamma control object. If the object is still valid, this
++ restores the original gamma tables.
++ </description>
++ </request>
++ </interface>
++</protocol>
+diff --git a/src/gamma-wl.c b/src/gamma-wl.c
+new file mode 100644
+index 00000000..477c680a
+--- /dev/null
++++ b/src/gamma-wl.c
+@@ -0,0 +1,372 @@
++/* gamma-wl.c -- Wayland gamma adjustment header
++ This file is part of Redshift.
++
++ Redshift is free software: you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation, either version 3 of the License, or
++ (at your option) any later version.
++
++ Redshift 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 Redshift. If not, see <http://www.gnu.org/licenses/>.
++
++ Copyright (c) 2015 Giulio Camuffo <giuliocamuffo@gmail.com>
++*/
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <stdint.h>
++#include <string.h>
++#include <alloca.h>
++#include <sys/mman.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <unistd.h>
++
++#ifdef ENABLE_NLS
++# include <libintl.h>
++# define _(s) gettext(s)
++#else
++# define _(s) s
++#endif
++
++#include "gamma-wl.h"
++#include "os-compatibility.h"
++#include "colorramp.h"
++
++#include "gamma-control-client-protocol.h"
++#include "orbital-authorizer-client-protocol.h"
++
++typedef struct {
++ struct wl_display *display;
++ struct wl_registry *registry;
++ struct wl_callback *callback;
++ uint32_t gamma_control_manager_id;
++ struct zwlr_gamma_control_manager_v1 *gamma_control_manager;
++ int num_outputs;
++ struct output *outputs;
++ int authorized;
++} wayland_state_t;
++
++struct output {
++ uint32_t global_id;
++ struct wl_output *output;
++ struct zwlr_gamma_control_v1 *gamma_control;
++ uint32_t gamma_size;
++};
++
++static int
++wayland_init(wayland_state_t **state)
++{
++ /* Initialize state. */
++ *state = malloc(sizeof(**state));
++ if (*state == NULL) return -1;
++
++ memset(*state, 0, sizeof **state);
++ return 0;
++}
++
++static void
++authorizer_feedback_granted(void *data, struct orbital_authorizer_feedback *feedback)
++{
++ wayland_state_t *state = data;
++ state->authorized = 1;
++}
++
++static void
++authorizer_feedback_denied(void *data, struct orbital_authorizer_feedback *feedback)
++{
++ fprintf(stderr, _("Fatal: redshift was not authorized to bind the 'zwlr_gamma_control_manager_v1' interface.\n"));
++ exit(EXIT_FAILURE);
++}
++
++static const struct orbital_authorizer_feedback_listener authorizer_feedback_listener = {
++ authorizer_feedback_granted,
++ authorizer_feedback_denied
++};
++
++static void
++registry_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version)
++{
++ wayland_state_t *state = data;
++
++ if (strcmp(interface, "zwlr_gamma_control_manager_v1") == 0) {
++ state->gamma_control_manager_id = id;
++ state->gamma_control_manager = wl_registry_bind(registry, id, &zwlr_gamma_control_manager_v1_interface, 1);
++ } else if (strcmp(interface, "wl_output") == 0) {
++ state->num_outputs++;
++ if (!(state->outputs = realloc(state->outputs, state->num_outputs * sizeof(struct output)))) {
++ fprintf(stderr, _("Failed to allcate memory\n"));
++ return;
++ }
++
++ struct output *output = &state->outputs[state->num_outputs - 1];
++ output->global_id = id;
++ output->output = wl_registry_bind(registry, id, &wl_output_interface, 1);
++ output->gamma_control = NULL;
++ } else if (strcmp(interface, "orbital_authorizer") == 0) {
++ struct wl_event_queue *queue = wl_display_create_queue(state->display);
++
++ struct orbital_authorizer *auth = wl_registry_bind(registry, id, &orbital_authorizer_interface, 1u);
++ wl_proxy_set_queue((struct wl_proxy *)auth, queue);
++
++ struct orbital_authorizer_feedback *feedback = orbital_authorizer_authorize(auth, "zwlr_gamma_control_manager_v1");
++ orbital_authorizer_feedback_add_listener(feedback, &authorizer_feedback_listener, state);
++
++ int ret = 0;
++ while (!state->authorized && ret >= 0) {
++ ret = wl_display_dispatch_queue(state->display, queue);
++ }
++
++ orbital_authorizer_feedback_destroy(feedback);
++ orbital_authorizer_destroy(auth);
++ wl_event_queue_destroy(queue);
++ }
++}
++
++static void
++registry_global_remove(void *data, struct wl_registry *registry, uint32_t id)
++{
++ wayland_state_t *state = data;
++
++ if (state->gamma_control_manager_id == id) {
++ fprintf(stderr, _("The zwlr_gamma_control_manager_v1 was removed\n"));
++ exit(EXIT_FAILURE);
++ }
++
++ for (int i = 0; i < state->num_outputs; ++i) {
++ struct output *output = &state->outputs[i];
++ if (output->global_id == id) {
++ if (output->gamma_control) {
++ zwlr_gamma_control_v1_destroy(output->gamma_control);
++ output->gamma_control = NULL;
++ }
++ wl_output_destroy(output->output);
++
++ /* If the removed output is not the last one in the array move the last one
++ * in the now empty slot. Then shrink the array */
++ if (i < --state->num_outputs) {
++ memcpy(output, &state->outputs[state->num_outputs], sizeof(struct output));
++ }
++ state->outputs = realloc(state->outputs, state->num_outputs * sizeof(struct output));
++
++ return;
++ }
++ }
++}
++
++static const struct wl_registry_listener registry_listener = {
++ registry_global,
++ registry_global_remove
++};
++
++static void
++gamma_control_gamma_size(void *data, struct zwlr_gamma_control_v1 *control, uint32_t size)
++{
++ struct output *output = data;
++ output->gamma_size = size;
++}
++
++static void
++gamma_control_failed(void *data, struct zwlr_gamma_control_v1 *control)
++{
++}
++
++
++static const struct zwlr_gamma_control_v1_listener gamma_control_listener = {
++ gamma_control_gamma_size,
++ gamma_control_failed
++};
++
++static int
++wayland_start(wayland_state_t *state)
++{
++ state->display = wl_display_connect(NULL);
++ if (!state->display) {
++ fputs(_("Could not connect to wayland display, exiting.\n"), stderr);
++ return -1;
++ }
++ state->registry = wl_display_get_registry(state->display);
++
++ wl_registry_add_listener(state->registry, ®istry_listener, state);
++
++ wl_display_roundtrip(state->display);
++ if (!state->gamma_control_manager) {
++ return -1;
++ }
++ if (state->num_outputs > 0 && !state->outputs) {
++ return -1;
++ }
++
++ return 0;
++}
++
++static void
++wayland_restore(wayland_state_t *state)
++{
++ for (int i = 0; i < state->num_outputs; ++i) {
++ struct output *output = &state->outputs[i];
++ if (output->gamma_control) {
++ zwlr_gamma_control_v1_destroy(output->gamma_control);
++ output->gamma_control = NULL;
++ }
++ }
++ wl_display_flush(state->display);
++}
++
++static void
++wayland_free(wayland_state_t *state)
++{
++ int ret = 0;
++ /* Wait for the sync callback to destroy everything, otherwise
++ * we could destroy the gamma control before gamma has been set */
++ while (state->callback && ret >= 0) {
++ ret = wl_display_dispatch(state->display);
++ }
++ if (state->callback) {
++ fprintf(stderr, _("Ignoring error on wayland connection while waiting to disconnect: %d\n"), ret);
++ wl_callback_destroy(state->callback);
++ }
++
++ for (int i = 0; i < state->num_outputs; ++i) {
++ struct output *output = &state->outputs[i];
++ if (output->gamma_control) {
++ zwlr_gamma_control_v1_destroy(output->gamma_control);
++ output->gamma_control = NULL;
++ }
++ wl_output_destroy(output->output);
++ }
++
++ if (state->gamma_control_manager) {
++ zwlr_gamma_control_manager_v1_destroy(state->gamma_control_manager);
++ }
++ if (state->registry) {
++ wl_registry_destroy(state->registry);
++ }
++ if (state->display) {
++ wl_display_disconnect(state->display);
++ }
++
++ free(state);
++}
++
++static void
++wayland_print_help(FILE *f)
++{
++ fputs(_("Adjust gamma ramps with a Wayland compositor.\n"), f);
++ fputs("\n", f);
++}
++
++static int
++wayland_set_option(wayland_state_t *state, const char *key, const char *value)
++{
++ return 0;
++}
++
++static void
++callback_done(void *data, struct wl_callback *cb, uint32_t t)
++{
++ wayland_state_t *state = data;
++ state->callback = NULL;
++ wl_callback_destroy(cb);
++}
++
++static const struct wl_callback_listener callback_listener = {
++ callback_done
++};
++
++static int
++wayland_set_temperature(wayland_state_t *state, const color_setting_t *setting)
++{
++ int ret = 0, roundtrip = 0;
++
++ /* We wait for the sync callback to throttle a bit and not send more
++ * requests than the compositor can manage, otherwise we'd get disconnected.
++ * This also allows us to dispatch other incoming events such as
++ * wl_registry.global_remove. */
++ while (state->callback && ret >= 0) {
++ ret = wl_display_dispatch(state->display);
++ }
++ if (ret < 0) {
++ fprintf(stderr, _("The Wayland connection experienced a fatal error: %d\n"), ret);
++ return ret;
++ }
++
++ for (int i = 0; i < state->num_outputs; ++i) {
++ struct output *output = &state->outputs[i];
++ if (!output->gamma_control) {
++ output->gamma_control = zwlr_gamma_control_manager_v1_get_gamma_control(state->gamma_control_manager, output->output);
++ zwlr_gamma_control_v1_add_listener(output->gamma_control, &gamma_control_listener, output);
++ roundtrip = 1;
++ }
++ }
++ if (roundtrip) {
++ wl_display_roundtrip(state->display);
++ }
++
++ for (int i = 0; i < state->num_outputs; ++i) {
++ struct output *output = &state->outputs[i];
++ int size = output->gamma_size;
++ size_t ramp_bytes = size * sizeof(uint16_t);
++ size_t total_bytes = ramp_bytes * 3;
++
++ int fd = os_create_anonymous_file(total_bytes);
++ if (fd < 0) {
++ perror("os_create_anonymous_file");
++ return -1;
++ }
++
++ void *ptr = mmap(NULL, total_bytes,
++ PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
++ if (ptr == MAP_FAILED) {
++ perror("mmap");
++ close(fd);
++ return -1;
++ }
++
++ uint16_t *r_gamma = ptr;
++ uint16_t *g_gamma = ptr + ramp_bytes;
++ uint16_t *b_gamma = ptr + 2 * ramp_bytes;
++
++ /* Initialize gamma ramps to pure state */
++ for (int i = 0; i < size; i++) {
++ uint16_t value = (double)i / size * (UINT16_MAX+1);
++ r_gamma[i] = value;
++ g_gamma[i] = value;
++ b_gamma[i] = value;
++ }
++
++ colorramp_fill(r_gamma, g_gamma, b_gamma, size, setting);
++ if (munmap(ptr, total_bytes) == -1) {
++ perror("munmap");
++ close(fd);
++ return -1;
++ }
++
++ zwlr_gamma_control_v1_set_gamma(output->gamma_control, fd);
++ close(fd);
++ }
++
++ state->callback = wl_display_sync(state->display);
++ wl_callback_add_listener(state->callback, &callback_listener, state);
++ wl_display_flush(state->display);
++
++ return 0;
++}
++
++const gamma_method_t wl_gamma_method = {
++ "wayland",
++ 1,
++ (gamma_method_init_func *) wayland_init,
++ (gamma_method_start_func *) wayland_start,
++ (gamma_method_free_func *) wayland_free,
++ (gamma_method_print_help_func *) wayland_print_help,
++ (gamma_method_set_option_func *) wayland_set_option,
++ (gamma_method_restore_func *) wayland_restore,
++ (gamma_method_set_temperature_func *) wayland_set_temperature,
++};
+diff --git a/src/gamma-wl.h b/src/gamma-wl.h
+new file mode 100644
+index 00000000..333e99b2
+--- /dev/null
++++ b/src/gamma-wl.h
+@@ -0,0 +1,32 @@
++/* gamma-wl.h -- Wayland gamma adjustment header
++ This file is part of Redshift.
++
++ Redshift is free software: you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation, either version 3 of the License, or
++ (at your option) any later version.
++
++ Redshift 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 Redshift. If not, see <http://www.gnu.org/licenses/>.
++
++ Copyright (c) 2015 Giulio Camuffo <giuliocamuffo@gmail.com>
++*/
++
++#ifndef REDSHIFT_GAMMA_WAYLAND_H
++#define REDSHIFT_GAMMA_WAYLAND_H
++
++#include <stdint.h>
++
++#include <wayland-client.h>
++
++#include "redshift.h"
++
++extern const gamma_method_t wl_gamma_method;
++
++
++#endif /* ! REDSHIFT_GAMMA_DRM_H */
+diff --git a/src/orbital-authorizer.xml b/src/orbital-authorizer.xml
+new file mode 100644
+index 00000000..bccaa081
+--- /dev/null
++++ b/src/orbital-authorizer.xml
+@@ -0,0 +1,61 @@
++<protocol name="orbital_authorizer">
++
++ <interface name="orbital_authorizer" version="1">
++ <description summary="authorize clients to use certain interfaces">
++ The orbital_authorizer global interface allows clients to
++ ask the compositor the authorization to bind certain restricted
++ global interfaces.
++ Any client that aims to bind restricted interfaces should first
++ request the authorization by using this interface. Failing to do
++ so will result in the compositor sending a protocol error to the
++ client when it binds the restricted interface.
++
++ The list of restricted interfaces is compositor dependant, but must
++ not include the core interfaces defined in wayland.xml.
++ </description>
++
++ <request name="destroy" type="destructor">
++ <description summary="destroy this orbital_authorizer object"/>
++ </request>
++
++ <request name="authorize">
++ <description summary="authorize a global interface">
++ The authorize request allows the client to ask the compositor the
++ authorization to bind a restricted global interface. The newly
++ created orbital_authorizer_feedback will be invalid after the
++ compositor send either the granted or denied event so the client
++ must destroy it immediately after.
++ </description>
++ <arg name="id" type="new_id" interface="orbital_authorizer_feedback" summary="the new feedback object"/>
++ <arg name="global" type="string" summary="the global interface the client wants to bind"/>
++ </request>
++ </interface>
++
++ <interface name="orbital_authorizer_feedback" version="1">
++ <description summary="feedback for an authorization request">
++ The orbital_authorizer_feedback interface is used by requesting
++ an authorization with the orbital_authorizer.authorize request.
++ The compositor will send either the granted or denied event based
++ on the system and user configuration. How the authorization process
++ works is compositor specific, but a compositor is allowed to ask
++ for user input, so the response for an authorization request may
++ come after some time.
++ </description>
++
++ <event name="granted">
++ <description summary="the authorization was granted">
++ The authorization was granted. The client can now bind the restricted
++ interface.
++ </description>
++ </event>
++
++ <event name="denied">
++ <description summary="the authorization was denied">
++ The authorization was denied. The client is not allowed to bind the
++ restricted interface and trying to do so will trigger a protocol
++ error killing the client.
++ </description>
++ </event>
++ </interface>
++
++</protocol>
+diff --git a/src/os-compatibility.c b/src/os-compatibility.c
+new file mode 100644
+index 00000000..32a9109e
+--- /dev/null
++++ b/src/os-compatibility.c
+@@ -0,0 +1,148 @@
++/*
++ * Copyright © 2012 Collabora, Ltd.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the
++ * next paragraph) shall be included in all copies or substantial
++ * portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ * SOFTWARE.
++ */
++
++#define _POSIX_C_SOURCE 200809L
++#include <errno.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/socket.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <unistd.h>
++#include "os-compatibility.h"
++
++int os_fd_set_cloexec(int fd) {
++ if (fd == -1) {
++ return -1;
++ }
++
++ long flags = fcntl(fd, F_GETFD);
++ if (flags == -1) {
++ return -1;
++ }
++
++ if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) {
++ return -1;
++ }
++
++ return 0;
++}
++
++int set_cloexec_or_close(int fd) {
++ if (os_fd_set_cloexec(fd) != 0) {
++ close(fd);
++ return -1;
++ }
++ return fd;
++}
++
++int create_tmpfile_cloexec(char *tmpname) {
++ int fd;
++ mode_t prev_umask = umask(0066);
++#ifdef HAVE_MKOSTEMP
++ fd = mkostemp(tmpname, O_CLOEXEC);
++ if (fd >= 0) {
++ unlink(tmpname);
++ }
++#else
++ fd = mkstemp(tmpname);
++ if (fd >= 0) {
++ fd = set_cloexec_or_close(fd);
++ unlink(tmpname);
++ }
++#endif
++ umask(prev_umask);
++
++ return fd;
++}
++
++/*
++ * Create a new, unique, anonymous file of the given size, and
++ * return the file descriptor for it. The file descriptor is set
++ * CLOEXEC. The file is immediately suitable for mmap()'ing
++ * the given size at offset zero.
++ *
++ * The file should not have a permanent backing store like a disk,
++ * but may have if XDG_RUNTIME_DIR is not properly implemented in OS.
++ *
++ * The file name is deleted from the file system.
++ *
++ * The file is suitable for buffer sharing between processes by
++ * transmitting the file descriptor over Unix sockets using the
++ * SCM_RIGHTS methods.
++ *
++ * If the C library implements posix_fallocate(), it is used to
++ * guarantee that disk space is available for the file at the
++ * given size. If disk space is insufficient, errno is set to ENOSPC.
++ * If posix_fallocate() is not supported, program may receive
++ * SIGBUS on accessing mmap()'ed file contents instead.
++ */
++int os_create_anonymous_file(off_t size) {
++ static const char template[] = "/redshift-shared-XXXXXX";
++
++ const char *path = getenv("XDG_RUNTIME_DIR");
++ if (!path) {
++ errno = ENOENT;
++ return -1;
++ }
++
++ char *name = malloc(strlen(path) + sizeof(template));
++ if (!name) {
++ return -1;
++ }
++
++ strcpy(name, path);
++ strcat(name, template);
++
++ int fd = create_tmpfile_cloexec(name);
++ free(name);
++ if (fd < 0) {
++ return -1;
++ }
++
++#ifdef WLR_HAS_POSIX_FALLOCATE
++ int ret;
++ do {
++ ret = posix_fallocate(fd, 0, size);
++ } while (ret == EINTR);
++ if (ret != 0) {
++ close(fd);
++ errno = ret;
++ return -1;
++ }
++#else
++ int ret;
++ do {
++ ret = ftruncate(fd, size);
++ } while (ret < 0 && errno == EINTR);
++ if (ret < 0) {
++ close(fd);
++ return -1;
++ }
++#endif
++
++ return fd;
++}
+diff --git a/src/os-compatibility.h b/src/os-compatibility.h
+new file mode 100644
+index 00000000..2038025e
+--- /dev/null
++++ b/src/os-compatibility.h
+@@ -0,0 +1,9 @@
++#ifndef UTIL_OS_COMPATIBILITY_H
++#define UTIL_OS_COMPATIBILITY_H
++
++int os_fd_set_cloexec(int fd);
++int set_cloexec_or_close(int fd);
++int create_tmpfile_cloexec(char *tmpname);
++int os_create_anonymous_file(off_t size);
++
++#endif
+diff --git a/src/redshift.c b/src/redshift.c
+index e0221d5e..488503ea 100644
+--- a/src/redshift.c
++++ b/src/redshift.c
+@@ -94,6 +94,10 @@ int poll(struct pollfd *fds, int nfds, int timeout) { abort(); return -1; }
+ # include "gamma-w32gdi.h"
+ #endif
+
++#ifdef ENABLE_WAYLAND
++# include "gamma-wl.h"
++#endif
++
+
+ #include "location-manual.h"
+
+@@ -902,6 +906,9 @@ main(int argc, char *argv[])
+
+ /* List of gamma methods. */
+ const gamma_method_t gamma_methods[] = {
++#ifdef ENABLE_WAYLAND
++ wl_gamma_method,
++#endif
+ #ifdef ENABLE_DRM
+ drm_gamma_method,
+ #endif
+@@ -1237,11 +1244,12 @@ main(int argc, char *argv[])
+ exit(EXIT_FAILURE);
+ }
+
+- /* In Quartz (macOS) the gamma adjustments will
+- automatically revert when the process exits.
++ /* In Quartz (macOS) and wayland, the gamma adjustments
++ will automatically revert when the process exits.
+ Therefore, we have to loop until CTRL-C is received.
+ */
+- if (strcmp(options.method->name, "quartz") == 0) {
++ if (strcmp(options.method->name, "quartz") == 0 ||
++ strcmp(options.method->name, "wayland") == 0) {
+ fputs(_("Press ctrl-c to stop...\n"), stderr);
+ pause();
+ }
+@@ -1266,10 +1274,11 @@ main(int argc, char *argv[])
+ exit(EXIT_FAILURE);
+ }
+
+- /* In Quartz (OSX) the gamma adjustments will automatically
+- revert when the process exits. Therefore, we have to loop
+- until CTRL-C is received. */
+- if (strcmp(options.method->name, "quartz") == 0) {
++ /* In Quartz (OSX) and wayland, the gamma adjustments will
++ automatically revert when the process exits.
++ Therefore, we have to loop until CTRL-C is received. */
++ if (strcmp(options.method->name, "quartz") == 0 ||
++ strcmp(options.method->name, "wayland") == 0) {
+ fputs(_("Press ctrl-c to stop...\n"), stderr);
+ pause();
+ }
+@@ -1288,10 +1297,11 @@ main(int argc, char *argv[])
+ exit(EXIT_FAILURE);
+ }
+
+- /* In Quartz (OSX) the gamma adjustments will automatically
+- revert when the process exits. Therefore, we have to loop
+- until CTRL-C is received. */
+- if (strcmp(options.method->name, "quartz") == 0) {
++ /* In Quartz (OSX) and wayland, the gamma adjustments will
++ automatically revert when the process exits.
++ Therefore, we have to loop until CTRL-C is received. */
++ if (strcmp(options.method->name, "quartz") == 0 ||
++ strcmp(options.method->name, "wayland") == 0) {
+ fputs(_("Press ctrl-c to stop...\n"), stderr);
+ pause();
+ }
diff --git a/profile/package.mask b/profile/package.mask
@@ -0,0 +1,5 @@
+# Copyright issue, see : https://github.com/martanne/abduco/issues/20 and https://bugs.debian.org/833897
+app-misc/abduco
+
+# last repo activity is from 2014 and there is several issues (including security ones). See https://gitlab.com/lanodan/overlay/issues/6
+dev-python/pycrypto
diff --git a/profile/use.stable.mask b/profile/use.stable.mask
@@ -0,0 +1 @@
+-libressl
diff --git a/repo.postsync.d/example b/repo.postsync.d/example
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for
+# Portage to process it.
+#
+# With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple
+# times after syncing each repository.
+#
+# Older versions of Portage support syncing only one repository.
+# In those versions, the postsync.d hooks will be called only once,
+# and they will not be passed any parameters.
+
+# On a repo.postsync.d hook call, positional parameters contain
+# information about the just-synced repository.
+
+# Your hook can control it's actions depending on any of the three
+# parameters passed in to it.
+#
+# They are as follows:
+#
+# The repository name.
+repository_name=${1}
+# The URI to which the repository was synced.
+sync_uri=${2}
+# The path to the repository.
+repository_path=${3}
+
+# Portage assumes that a hook succeeded if it exits with 0 code. If no
+# explicit exit is done, the exit code is the exit code of last spawned
+# command. Since our script is a bit more complex, we want to control
+# the exit code explicitly.
+ret=0
+
+if [ -n "${repository_name}" ]; then
+ # Repository name was provided, so we're in a post-repository hook.
+ echo "* In post-repository hook for ${repository_name}"
+ echo "** synced from remote repository ${sync_uri}"
+ echo "** synced into ${repository_path}"
+
+ # Gentoo comes with pregenerated cache but the other repositories
+ # usually don't. Generate them to improve performance.
+ if [ "${repository_name}" != "gentoo" ]; then
+ if ! egencache --update --repo="${repository_name}" --jobs=4
+ then
+ echo "!!! egencache failed!"
+ ret=1
+ fi
+ fi
+fi
+
+# Return explicit status.
+exit "${ret}"
diff --git a/repo.postsync.d/q-reinit b/repo.postsync.d/q-reinit
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+repository_name=$1
+repository_path=$3
+
+if [ -n "${repository_name}" ]; then
+ q ${PORTAGE_QUIET:+-q} --reinitialize="${repository_path}"
+fi
+
+:
diff --git a/repos.conf/gentoo.conf b/repos.conf/gentoo.conf
@@ -6,4 +6,5 @@ sync-depth = 1
sync-type = git
sync-uri = https://anongit.gentoo.org/git/repo/gentoo.git
sync-depth = 1
+priority = 100
auto-sync = yes