Comments (27)
I'm not able to reproduce the issue, can you explain a bit more about what happens?
from candybar.
i don't know i just installed today from the aur and now when i open wkline it just segfaults every time. if i would gess is that the config is not being passed to widgets threads. i started looking into 4a4c338 but i couldn't find the issue
from candybar.
Have you updated to the new config format?
from candybar.
i removed it from my user config dir
from candybar.
I just tried the exact same thing, I installed wkline-git from the AUR and removed my user config, it still starts without any issues. I think you'll have to help me out debugging this issue since I'm unable to reproduce it.
from candybar.
Do you receive any debug messages ("spawning widget", etc) before it segfaults?
from candybar.
I have no issues with newest commit and default/updated config file
from candybar.
yes. just pulled latest commits into my branch and rebuilt and now i am getting from ./build/wkline
(wkline:7050): GModule-CRITICAL **: g_module_symbol: assertion 'module != NULL' failed [18:08:27] wkline: loading of '/usr/local/lib/wkline/libwidget_desktops' (desktops) failed
for every widget
i checked and i am loading the system config file
from candybar.
That error message is a known "issue" but shouldn't affect wkline in any way. Basically, if you haven't built a specific widget (in this case the desktop widget) you should remove it from your config file, then that error will disappear as it won't try to load a shared object file that doesn't exist. We should probably remove widgets from config.json through the build script if specific widgets are disabled.
from candybar.
how do i build specific widgets as you say. as i understand your message i should disable all the widgets to fix the error
from candybar.
Currently the waf config script detects if you satisfy optional dependencies like XCB. If you don't have XCB, then the desktop and window title widgets won't be built, but wkline will still work. You should edit config.json and remove 'desktops'
and 'window_title'
from the widgets
array to make sure that wkline doesn't try to load the non-existent shared libs for these widgets.
from candybar.
To clarify: waf detects all optional dependencies and builds as many widgets as possible. If you don't have a dependency like XCB, libcurl, etc. then those widgets simply won't be built, and won't be available for dynamic loading. The error message shouldn't matter, but if you want to get rid of the error message just remove the widgets you don't have from config.json.
from candybar.
output of waf configure
Setting top to : /home/ricardo/git/fork/wkline Setting out to : /home/ricardo/git/fork/wkline/build Checking for 'gcc' (c compiler) : /usr/bin/gcc Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for 'gtk+-3.0' : yes Checking for 'webkitgtk-3.0' : yes Checking for 'jansson' : yes Checking for 'alsa' : yes Checking for 'libcurl' : yes Checking for 'dbus-1 dbus-glib-1' : yes Checking for 'libmpdclient' : yes Checking for 'xcb-util xcb-ewmh xcb-icccm' : yes 'configure' finished successfully (0.208s)
from candybar.
If you aren't installing this to a system directory you need to follow the dev build guide in the readme (install with relative widget paths). Also see this comment. If possible we should make this process automatic so it won't matter if wkline is installed in a directory in /home or if it's installed into a system directory.
from candybar.
Installing wkline-git from AUR should work out-of-the-box since it installs the widget shared libs into /usr/lib/wkline. If you run waf configure
without the libdir parameter it tells wkline that the libraries will be installed into $PREFIX/lib/wkline, and loading the libraries will fail if you don't run waf install
afterwards.
Do you have any ideas to how this issue can be resolved?
from candybar.
ok it's working after waf install
now i am confused
from candybar.
I apologize if I'm that bad at explaining the issue. I'll try to explain further:
At this line the library load path is determined. By default this path is $PREFIX/lib/wkline
, or /usr/local/lib/wkline
. This means that wkline looks for the widget shared objects (libwidget_desktops.so
, etc) in this path, and this path only. If you do not install the widgets in this path (with waf install
), wkline won't be able to find the widget libraries (they remain in the build
directory) and you'll end up with error messages about missing widgets.
If you run waf install
it will install the widgets globally by default, in /usr/local/lib/wkline
, which is why it works after running sudo waf install
.
This is not what you'd want for development though, as I think it's more useful to have these libraries available in the project directory instead of a system directory. You can run this command to build and install wkline into a out/
directory in the project folder instead:
waf clean configure build --debug --prefix=/ \
--libdir=`pwd`/out/lib/wkline install --destdir=out
What this command does is:
- configure wkline with the prefix
/
, which means it will install libraries in$destdir/lib/wkline
and binaries in$destdir/bin
- set the libdir to be
$PWD/out/lib/wkline
- set the installation/destdir to be
out/
When you run out/bin/wkline
it will now look for the shared libs in $PWD/out/lib/wkine
instead of /usr/local/lib/wkline
. I'm not sure if this makes any more sense, but I'm not sure how to explain it better :P
from candybar.
the problem is you are looking for widgets in /usr/local/lib/wkline
but when you install it from the aur it installs it to /usr/lib/wkline/
also do i need to do that command every time i want to compile wkline?
from candybar.
this feature looks like a lot of effort for something that might never be used.
from candybar.
Yes, but when installing from aur it should install to /usr/lib/wkline since that's the lib folder on arch. It correctly loads the libraries from /usr/lib/wkline when installing wkline-git on my setup, what happens when you install wkline-git?
You need to do the waf command every time you compile with a relative lib search path. You can do it in two commands to avoid clean/configure every recompile: run waf configure --debug ...
once, then run waf build install --destdir=out
every time you want to recompile the changed files.
from candybar.
I think shared libs is a pretty good idea:
- it allows you to disable widgets completely through config.json, disabled widgets won't be loaded and take up any resources
- it makes the build process a lot simpler (no need for defines to disable building of widgets)
- we no longer have to enumerate every single possible widget in widgets.h
- it allows separate projects to install widgets into $prefix/usr/lib/wkline, which means we don't have to have every possible widget in the core repo (I'm planning to move lesser used widgets into a wkline-widgets-extras repo later)
- it allows for features like dragging widgets onto the statusline to load them right away without even having to install them in a lib dir if users want to test a widget without installing a package
Do you think it's more hassle than it's worth? If so, please explain why, I may have misunderstood the situation and benefits of shared libs completely.
from candybar.
you have to change the LIBDIR
define in the build script because it is setting LIBDIR
to /usr/local/lib/
even when you give the option --prefix=/usr
and it should be /usr/lib
actually it does change. i still think there is something wrong with the paths to the widgets
from candybar.
Are you sure? It defaults to ${PREFIX}/lib/wkline
, so if you give the option --prefix=/usr
it will install into /usr/lib/wkline
. Here are the files that get installed with the wkline-git package, which sets --prefix=/usr
:
kim@regiontog ~/p/w/w/p/wkline-git> find .
.
./.INSTALL
./.MTREE
./.PKGINFO
./etc
./etc/xdg
./etc/xdg/wkline
./etc/xdg/wkline/config.json
./usr
./usr/share
./usr/share/licenses
./usr/share/licenses/wkline-git
./usr/share/licenses/wkline-git/LICENSE
./usr/lib
./usr/lib/wkline
./usr/lib/wkline/libwidget_external_ip.so
./usr/lib/wkline/libwidget_now_playing_mpd.so
./usr/lib/wkline/libwidget_notifications.so
./usr/lib/wkline/libwidget_weather.so
./usr/lib/wkline/libwidget_battery.so
./usr/lib/wkline/libwidget_volume.so
./usr/lib/wkline/libwidget_window_title.so
./usr/lib/wkline/libwidget_desktops.so
./usr/bin
./usr/bin/wkline
It would be great if you could provide a concrete example of how this issue is present on your setup. I'm not able to reproduce it by running configure with --prefix=/usr
.
from candybar.
yes it installs the files in the right place but when loading widgets the dont get the right place
just do sudo rm /usr/local/lib/wkline/ -R
and run wkline
from candybar.
I don't have any libraries in /usr/local/lib/wkline when installing with the correct prefix, there aren't any files to remove with rm -r
. If you've run waf install
after running waf configure
without a prefix then the libraries won't end up in the correct location on archlinux. The libraries should still load fine, as wkline should look for them in /usr/local/lib/wkline instead of /usr/lib/wkline.
I really don't understand the issue on your setup, and I'm not able to reproduce it on my setup. Could you post the exact commands you are running from start to finish that trigger this issue on your setup?
from candybar.
for some reason i had the binary in /usr/local/bin/wkline
and it was loading that instead of /usr/bin/wkline
so i was loading an old version.
We should print the version when we start wkline
from candybar.
That's a good idea. We could probably run something like git rev-list --count ${_gitbranch}).$(git rev-parse --short ${_gitbranch})
like in the PKGBUILD in wscript
and assign it to a VERSION define that we can log when starting wkline, along with the executable path. We should probably also log which config file is being read.
from candybar.
Related Issues (20)
- Netctl Widget
- System monitor (like conky)
- Allow hiding empty desktops on desktops widget
- candybar fails to build with '-Werror' flag HOT 8
- White status line with html text on installation in NixOS
- AUR package not loneger exists
- Does not build with archlinux / latest gcc HOT 3
- pthreads related segfault HOT 12
- Build fail on volume.c HOT 3
- Command widget to spawn processes HOT 2
- Add WebKit web inspector while debugging. HOT 2
- WARNING timed out waiting for widget battery to exit HOT 1
- candybar doesn't seem track the mouse exiting its window vertically HOT 1
- weather: "unit" : "f" returns non integer HOT 2
- now_playing_mpris doesn't display playing song on startup
- desktops_i3 seems flaky HOT 1
- candybar segmentation fault HOT 6
- i3ipc-glib no longer needed HOT 6
- Feature Request: Support openbox also. HOT 3
- Core dump on close
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from candybar.