summaryrefslogtreecommitdiffhomepage
path: root/changelog.md
AgeCommit message (Collapse)Author
2020-11-13Optimize Date plugin again (refresh timezone only once a minute)Tomas Janousek
This makes the Date plugin approximately twice as fast, and makes xmobar up to about 5–10 % faster if Date is the only active plugin. (If more expensive plugins like Network or MultiCpu are used, it doesn't make any measurable difference.) Micro-benchmark results on my HW: Date Benchmarks/Date mean 2.833 μs ( +- 16.08 ns ) Date Benchmarks/DateZonedTime mean 5.020 μs ( +- 32.91 ns ) Date Benchmarks/DateWithTimeZone mean 2.827 μs ( +- 20.52 ns ) (DateZonedTime is the original implementation and DateWithTimeZone is the implementation we had since 0.34 which never refreshes timezone.) Real-life measurements (done overnight on an idle laptop, with all measured xmobars running in parallel to ensure comparable conditions; xmobars configured to only display date and with rate 10 — once per second): $ time timeout 6h xmobar .xmobarrc-DateZonedTime real 360m0,010s user 0m9,867s sys 0m4,644s (9.867 + 4.644) / (360 * 60) = 0.000672 $ time timeout 6h xmobar .xmobarrc-Date real 360m0,008s user 0m9,535s sys 0m4,327s (9.535 + 4.327) / (360 * 60) = 0.000642 $ time timeout 6h xmobar .xmobarrc-Date-10m real 360m0,010s user 0m9,780s sys 0m4,215s (9.780 + 4.215) / (360 * 60) = 0.000648 $ time timeout 6h xmobar .xmobarrc-DateWithTimeZone real 360m0,006s user 0m9,658s sys 0m4,166s (9.658 + 4.166) / (360 * 60) = 0.000640 (.xmobarrc-Date-10m is the proposed implementation, but with timezone refresh every 10 minutes instead of every 1 minute) Interpretation of these results: * refreshing xmobar with just date takes around 650 μs * that is xmobar with just date uses around 0.065 % of CPU time * refreshing timezone takes additional cca 30 μs When we only refresh timezone once a minute, these 30 μs become 0.5 μs amortized, and that should be acceptable to even the most dedicated perfectionist :-) Fixes: a58e32f7c8af ("Revert "Optimize date plugin"") Fixes: 878db3908060 ("Optimize date plugin") Co-authored-by: Sibi Prabakaran <sibi@psibi.in>
2020-11-08Changelog entry for Revert "Optimize date plugin"Tomas Janousek
A missing bit from a58e32f7c8af7b03410ab6693019cfc92c9cfca3.
2020-10-09Changelog and friendsjao
2020-08-220.360.36jao
2020-08-09Update changelog and add commentSibi Prabakaran
2020-08-07Changelog updatesjao
2020-08-07Don't get confused by empty configuration dirs (fixes #313)jao
By checking full paths, instead of just dirs (option 1).
2020-08-07Changelog and unreleased version bumpjao
2020-06-26Drop support for GHC < 8.4 (fixes issue #461)0.35.1jao
2020-06-26Version bumpjao
2020-06-26Changelog updates0.35jao
Fixes #466
2020-06-13Version bump, changelog, readmejao
2020-06-12Updates for 0.340.34jao
Closes #457
2020-06-12Update changelogSibi Prabakaran
2020-06-05Optimize date pluginSibi Prabakaran
We avoid calling getTimeZone for each of the time the date has to be updated. Instead, it's computed once at the start and re-used for each invocation. Looking at the implementation of 'getTimeZone', we can see that it's very expensive: https://www.stackage.org/haddock/lts-15.15/time-1.9.3/src/Data-Time-LocalTime-Internal-TimeZone.html#getTimeZone It calls a C FFI each time to get the time zone (getTimeZoneCTime). This is something which we can avoid and the MR implements that. I have been using my xmobar with this patch and the result has been quite good. My xmobar CPU usage has used to hit 3~7% intermittently. With this MR, It hits only 0.7% intermittently which is nice. :-)
2020-04-27Changelog updatedjao
2020-04-12Add a HandleReader PluginPavan Rikhi
This adds a new `HandleReader` plugin, which displays data from a Haskell `Handle`. This is really only useful if you are running xmobar from within another Haskell program, but lets you avoid the mechanics of creating a named pipe with the proper file permissions. Instead, you can use `System.Process.createPipe` to make a pair of read & write Handles. If you pass the read handle to HandleReader, you can use hPutStr on the write Handle to send data to xmobar from your application code.
2020-02-26Version 0.330.33jao
2020-02-25Wireless: support NL80211 userspace <-> kernelspace APIPaul Fertser
NL80211 was introduced in Linux 2.6.24 in 2007 as a new extensible universal API, replacing "wireless extensions" ioctls. It works on top of netlink, and allows direct communication to cfg80211 kernel subsystem. Since then it became a hard requirement for all upstream wireless drivers to hook into cfg80211 (SoftMAC drivers do it via the common mac80211 layer). There's still additional compatibility code that allows limited Wext functionality for cfg80211 drivers but it's buggy and can be disabled altogether when CONFIG_CFG80211_WEXT is not set. This patch makes use of "netlink" Haskell library which doesn't have any additional runtime dependencies (so neither iwlib nor libnl are required). The operation is the same as performed by "iw dev <devname> link" command. The signal level is transformed to "quality" by first clamping it to [-110; -40], then adding 110 and dividing by 70 (same meaningless formula as used by the cfg80211 Wext compatibility layer). "essid" template argument is replaced by more appropriate "ssid" (with the old variant still available for backwards compatibility)
2020-02-23Changelog entry for time coalescingjao
2020-02-05Update changelog and readmeslotThe
2020-01-08Changelog and creditsjao
2020-01-05Update readme and changelogslotThe
2020-01-04Doc nitsjao
2020-01-04Update readme and changelogslotThe
2019-12-23Changelog updatejao
2019-12-23Add support for the "Weather" fieldslotThe
2019-12-08Change log0.32jao
2019-11-14MPD monitor: host and port specifiable in configjao
2019-10-21Typojao
2019-10-21Changelogjao
2019-10-15thanks to slotThejao
2019-10-15Battery: -P to show %jao
2019-10-15Changelog updatesjao
2019-10-15New plugin: MailXjao
2019-10-14Update changelogslotThe
2019-10-12changelog fixesjao
2019-10-12Update changelog and readmeslotThe
2019-10-12Docs formatjao
2019-10-10Credits and version bumpjao
2019-10-05New flag `contiguous-icons` for `MultiCpu` (issue #388)jao
2019-08-23Version 0.300.30jao
2019-07-15Credits for MultiCoreTempjao
2019-06-30New options -a, -A for low battery notificationsjao
2019-06-29New WeatherX variant with sky conditions translationsjao
2019-05-23New DiskIO template variables with bytes rather than speed (#390)jao
2019-03-17Changelog for 0.29.50.29.5jao
2019-02-07Always require http-conduit for weather (fixes #378)jao
2019-01-27Changelog for 0.29.5jao
2018-12-24Marks for 0.29.4jao