You are not logged in.
I was able to build weaver using APKBUILD, but optional dependencies are generally uninstalled after package compilation, so those *-dev packages were not present when I tried this. So I installed optional dependencies for weaver "binutils-gold qt6-qtbase-dev qt6-qtwebengine-dev" , but compilation still failed
[^^]└───▶ g++ -I/usr/include/qt6/ -fPIC -lQt6WebEngineWidgets -lQt6Core -lQt6Widgets -o qt6webtest engine.c
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o: in function `main':
engine.c:(.text+0x48): undefined reference to `QApplication::QApplication(int&, char**, int)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0x62): undefined reference to `QWebEngineView::QWebEngineView(QWidget*)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0x9c): undefined reference to `QUrl::QUrl(QString const&, QUrl::ParsingMode)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0xab): undefined reference to `QWebEngineView::setUrl(QUrl const&)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0xb7): undefined reference to `QUrl::~QUrl()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0xcf): undefined reference to `QWidget::show()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0xd4): undefined reference to `QApplication::exec()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0xe3): undefined reference to `QApplication::~QApplication()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0x11a): undefined reference to `QUrl::~QUrl()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text+0x13c): undefined reference to `QApplication::~QApplication()'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o:(.qtversion[qt_version_tag]+0x0): undefined reference to `qt_version_tag'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o: in function `QString::QString(char const*)':
engine.c:(.text._ZN7QStringC2EPKc[_ZN7QStringC5EPKc]+0x45): undefined reference to `QString::fromUtf8(QByteArrayView)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o: in function `QByteArrayView::QByteArrayView<char, true>(char const*, long long)':
engine.c:(.text._ZN14QByteArrayViewC2IcLb1EEEPKT_x[_ZN14QByteArrayViewC5IcLb1EEEPKT_x]+0x35): undefined reference to `qt_assert(char const*, char const*, int)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text._ZN14QByteArrayViewC2IcLb1EEEPKT_x[_ZN14QByteArrayViewC5IcLb1EEEPKT_x]+0x61): undefined reference to `qt_assert(char const*, char const*, int)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o: in function `QtPrivate::QPodArrayOps<char16_t>::destroyAll()':
engine.c:(.text._ZN9QtPrivate12QPodArrayOpsIDsE10destroyAllEv[_ZN9QtPrivate12QPodArrayOpsIDsE10destroyAllEv]+0x32): undefined reference to `qt_assert(char const*, char const*, int)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: engine.c:(.text._ZN9QtPrivate12QPodArrayOpsIDsE10destroyAllEv[_ZN9QtPrivate12QPodArrayOpsIDsE10destroyAllEv]+0x63): undefined reference to `qt_assert(char const*, char const*, int)'
/usr/lib/gcc/x86_64-alpine-linux-musl/11.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccOgGELn.o: in function `QTypedArrayData<char16_t>::deallocate(QArrayData*)':
engine.c:(.text._ZN15QTypedArrayDataIDsE10deallocateEP10QArrayData[_ZN15QTypedArrayDataIDsE10deallocateEP10QArrayData]+0x1e): undefined reference to `QArrayData::deallocate(QArrayData*, long long, long long)'
collect2: error: ld returned 1 exit statusEDIT: I wasn't compiling weaver before, I did that only after sodface shared APKBUILD.
Last edited by Docbroke (2022-01-16 15:37:18)
Arch is home!
https://github.com/Docbroke
Offline
That's a linker issue. You need to figure out where those libs are or what they are called on your alpine system as there is no pkgconfig .pc files distributed with qt6 webengine sources. I'm really not equipped to help with that. You just need the three shared libraries referred to on the example compiler line I provided, but I have no idea how that'd work in alpine. You might want to look at the APKBUILD for weaver to see what Carl did as the linker flags needed for this test program are a very small subset of what is used for weaver. That's the whole point of the test program.
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
with newer qt6-webengine, youtube works with weaver in allpine now. I am noticing occasionally unresponsive weaver window which needs restart of weaver. I have also noticed similar thing with telegram-desktop (on both arch and alpine) which also uses qt6. There is bug report https://github.com/telegramdesktop/tdes … sues/17296 for telegram, have you noticed similar thing with weaver?
I don't know how to reproduce this with weaver, yet. It is easy to reproduce with telegram though (as in linked bug report)
Last edited by Docbroke (2022-02-08 08:32:07)
Arch is home!
https://github.com/Docbroke
Offline
I don't know how to reproduce this with weaver, yet.
If you can, let me know. I don't use telegram. From reading that bug report, I suspect there may be some interaction with the WM/compositor on whether or not symptoms would be detected.
Last edited by Trilby (2022-02-08 14:15:29)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Hello, I have a problem in setting some attributes in the config file, mainly the ForceDarkMode, I have it =true in the .config/weaver/config.conf, but it is non effective (tested on google.com, yt and wikipedia.org), I also tried 'JavascriptEnabled=false' and is ineffective (pages like yt and google are rendered normally) however there are settings that are successfully applied, like 'ShowScrollBars=true' , Is this a limitation or what, unfort. I don't know what exactly to provide with this comment to make things more clear,
WORTH TO MENTION : I manually compiled weaver on *alpine linux* just using make, if this is related...
the config file :
;; WEAVER CONFIG
;; $XDG_CONFIG_HOME/weaver/config.conf
;; Configuration options are W.I.P and may change significantly
;; All lines starting with two semi-colons are explanatory comments.
;; Lines starting with a single semi-colon are commented out but otherwise valid settings.
[General]
;; - SearchPage
;; Type: string
;; Default: https://duckduckgo.com/?q=%1
;; Description: Search engine to send non-url input to, %1 will be replaced with user input
;; - ValidUrl
;; Type: regex string
;; Default: [:/\\.]
;; Description: entries *not* matching this are sent to the search page
;; - DownloadCmd
;; Type: string
;; Default: curl -s -o '/tmp/%2' '%1'
;; Description: external download command; %1=url %2=suggested-filename
;; - InfoFormat
;; Type: string
;; Default: %1\t%2
;; Description: %1=title %2=url %3=selected-text
;; - CloseKey
;; Type: string
;; Default: Ctrl+d
;; Description: binding for closing a window to work around js window.close failure
;SearchPage=https://duckduckgo.com/?q=%1
;ValidUrl=[:/\\.]
[FeaturePermissions]
;; - <OptionName>[:<Domain>]
;; Type: ternary (accept|reject|ask)
;; Default: ask
;; Description: option names and descriptions at https://doc.qt.io/Qt-5/qwebenginepage.html#Feature-enum
Notifications=reject
Geolocation=reject
;MediaAudioCapture:meet.jit.si=accept
;MediaVideoCapture:meet.jit.si=accept
;MediaAudioVideoCapture:meet.jit.si=accept
[WebAttributes]
;; - <OptionName>
;; Type: boolean
;; Default: as noted in the link below
;; Description: option names, descriptions, and defaults at https://doc.qt.io/QT-5/qwebenginesettings.html#WebAttribute-enum
PluginsEnabled=true
DnsPrefetchEnabled=true
ShowScrollBars=false
ScrollAnimatorEnabled=true
FullScreenSupportEnabled=true
ForceDarkMode=true
[Cookies]
;; - AllowThirdParty
;; Type: boolean
;; Default: false
;; - Persistent=(no|allow|force)
;; Type: ternary (no|allow|force)
;; Default: allow
;; - <request-origin-domain>:<first-party-domain>
;; Type: boolean
;; Default: N/A (defaults to AllowThirdParty setting)
;; Description: domain specific settings override any setting of "AllowThirdParty" for the specified pair of domains
;; CAUTION: This needs testing! Please report any results of testing to code@jessemcclure.org
; vim: ft=dosiniLast edited by midgeek (2026-01-05 14:48:55)
Offline
Here's a blast from the past. I've not touched weaver's code in over two years - so I'm just thrilled it built successfully and functions [1].
Building just via "make" is correct - it would fail if dependencies were not found, but if `make` completes successfully, then you have a proper build.
Your configuration file is good. ForceDarkMode is a new setting since I last worked on this, so that'd not work yet - I'll have to add that in [2]. But the javascript setting should apply. It should be easy enough to trace down why the javascript setting isn't working, but give me a day or two to get some time to tinker with that.
---
[1] Note: many would point out that using an outdated browser can be risky, but that doesn't really apply here. As long as weaver is built against an up-to-date webengine, there's no concern with weaver's wrapper code being a bit dated ... except that new settings will not be available until I add them.
[2] And hopefully upstream has made the web attributes into a Q_ENUM by now which would greatly simplify all the settings code and make it so I didn't need to manually add each new setting that becomes available from upstream.
EDIT:
I've just updated weaver to include new web attribute settings include ForceDarkMode. I've tested here and both ForceDarkMode and JavascriptEnabled are working properly. Could you retrieve the new code, rebuild and test again, and let me know which of these settings are working vs failing for you?
Last edited by Trilby (2026-01-05 16:53:14)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Yes It is working now!
I'd like to thank you for both the sw itself and for responding to my issue.
Also for the 'JavascriptEnabled=false' option It is working on both versions, it's my fault, when forceDark didn't work I thought that somehow weaver looks at the config.conf located at /usr/share/doc.... not the one in my .config directory so I was editing the former the whole time, and I totally forgot that when i tested with another features.
Offline
Thanks for circling back, I'm glad it's working. Feel free to let me know if / when you run into other issues.
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Qt webengine is a headless driver.
Same probably applies to a lot of Qt components.
I am lucky enough to have tried them :-)
Last edited by ReDress (2026-01-09 15:48:37)
Offline
ReDress, I don't believe I understand your post or why it was posted here. Was there a comment / question on weaver?
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Hey, it's just interesting to me to see someone doing GUI stuff in Qt
I don't see the power in Qt GUI but maybe it lies in QML
Last edited by ReDress (2026-01-11 06:01:55)
Offline
Hello again!
I have been tinkering with weaver for the past few days and:
- There might be an issue in parsing the values in '[General]' section, they are ineffective and always work with only default values (tried on CloseKey only), I tried to investigate in this further and found out that this is related to section parsing or whatever (I'm not very informant about qt), but upon trying to modify the source code and trying to remove the section part entirely :
value("General/CloseKey", "Ctrl+d") -> value("CloseKey", "Ctrl+d") and this actually worked, my CloseKey assignment in the config file is now effective (both before or after the [General] section)
- Another thing, I was trying to add a few more shortcuts for the basic navigation actions (mainly back and forward), and I managed to introduce this functionality in the code so that I don't have to invoke weaver with back/forward actions, So I'am asking if this is relevant to you that I contribute with them
Offline
Nice catch on the [General] section failing. I confirmed the problem and that your solution worked - but that was immensely unsatisfying until I found related bug reports, apparently there's an aspect of how Qt handles ini files that a General section is created by default, and any settings in it are - apparently - accessible only without specifying the section name. I've just push the fix for that.
I'd be happy to look at what you implemented for Back / Forward, but I'm not clear on your description. Most key binding can / should be done in user-scripts - there's an example of a keybinding script provided in the source repo. Note that while these are written in JS, userscripts are (supposed to be) processed even if / when all other JS is disabled in the browser.
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline