<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xmobar/src/Xmobar, branch master</title>
<subtitle>a minimalistic status bar</subtitle>
<id>https://jao.io/cgit/xmobar/atom?h=master</id>
<link rel='self' href='https://jao.io/cgit/xmobar/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/'/>
<updated>2026-06-27T16:48:17Z</updated>
<entry>
<title>changelog and copyright updates</title>
<updated>2026-06-27T16:48:17Z</updated>
<author>
<name>jao</name>
<email>jao@gnu.org</email>
</author>
<published>2026-06-27T16:48:17Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=ccc164292c62e16c3c2585eb6e490570d194d08c'/>
<id>urn:sha1:ccc164292c62e16c3c2585eb6e490570d194d08c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove " &amp;" and fix zombie processes</title>
<updated>2026-06-26T19:59:27Z</updated>
<author>
<name>Léana 江</name>
<email>leana.jiang+git@icloud.com</email>
</author>
<published>2026-06-16T13:54:22Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=5513b9100728c08789fb19d8cfc314a2c8dab876'/>
<id>urn:sha1:5513b9100728c08789fb19d8cfc314a2c8dab876</id>
<content type='text'>
" &amp;" was to avoid throwing an exception when the child process has a
non-empty exitcode. However, the error-throwing function is callCommand
and not spawnCommand, so removing " &amp;" shouldn't change the semantic.

https://codeberg.org/xmobar/xmobar/pulls/698#issuecomment-1722323
&gt; callCommand seems to be the closest new function to system, but there
&gt; is a difference: it raises an exception if the child process has a
&gt; non-zero exit code. To preserve the exact behavior would require
&gt; something like spawnCommand (s + "&amp;") &gt;&gt;= waitForProcess.

I was able to reproduce zombie processes with the following steps:
+ running my own xmobar configuration
+ spawning a command that is long running (sleep 10)
+ sending SIGTERM to the xmobar process
After doing so, the sleep command will continue to run.

This PR uses withCreateProcess, which will always wait for the process
to terminate, even when the main thread is asked to exit (SIGTERM).

Note that SIGKILL is not expected to terminate the children.
</content>
</entry>
<entry>
<title>use Int instead</title>
<updated>2026-06-23T19:41:59Z</updated>
<author>
<name>Léana 江</name>
<email>leana.jiang+git@icloud.com</email>
</author>
<published>2026-06-22T19:53:40Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=437523ebc951438bc5f0641005f9cfbb6f820e3e'/>
<id>urn:sha1:437523ebc951438bc5f0641005f9cfbb6f820e3e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pass remaining battery percentage to low battery command</title>
<updated>2026-06-23T19:41:59Z</updated>
<author>
<name>Léana 江</name>
<email>leana.jiang+git@icloud.com</email>
</author>
<published>2026-06-22T15:18:41Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=dcfbeabc8c6c3a775c946fb83628889d254aba48'/>
<id>urn:sha1:dcfbeabc8c6c3a775c946fb83628889d254aba48</id>
<content type='text'>
</content>
</entry>
<entry>
<title>guard low battery alert behind heuristics</title>
<updated>2026-06-22T14:42:02Z</updated>
<author>
<name>Léana 江</name>
<email>leana.jiang+git@icloud.com</email>
</author>
<published>2026-06-22T14:42:02Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=1d11e75205e25dab4869205a0a05178340d24aff'/>
<id>urn:sha1:1d11e75205e25dab4869205a0a05178340d24aff</id>
<content type='text'>
Previously low battery alerts only depend on the ac variable.

The ac state that is rendered (racst) follows more heuristics. However
this causes a discrepancy where xmobar can show the status is charging
while continue to spawn low battery alerts.

This PR fixes that by using the rendered ac state to decide whether the
alert is sent.
</content>
</entry>
<entry>
<title>Fix PacmanUpdates parse error on GHC &lt; 9.8 - fix #766</title>
<updated>2026-06-16T19:47:23Z</updated>
<author>
<name>Alexander 'ccntrq' Pankoff</name>
<email>ccntrq@screenri.de</email>
</author>
<published>2026-06-02T12:08:45Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=4d612548dea849a044546214faa6dc604bb33494'/>
<id>urn:sha1:4d612548dea849a044546214faa6dc604bb33494</id>
<content type='text'>
Export-list DEPRECATED pragmas were only added in GHC 9.8 (proposal
`#134`[1]). On older compilers the pragma inside the export list is a
parse error ("parse error on input '{-# DEPRECATED'"), breaking the
build.

Guard the pragma with CPP so it is only emitted on GHC &gt;= 9.8. The
export-list form is kept deliberately: it deprecates only the `pattern
PacmanUpdates` export, leaving the equally-named `PacmanUpdates` type
untouched, so downstream users referencing the type get no spurious
deprecation warnings. On older GHC the compile-time warning is simply
absent; the runtime "deprecated plugin" note still informs users.

[1]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst
</content>
</entry>
<entry>
<title>Allow predicate based kernel checks in PacmanUpdates</title>
<updated>2026-06-16T17:51:56Z</updated>
<author>
<name>Alexander 'ccntrq' Pankoff</name>
<email>ccntrq@screenri.de</email>
</author>
<published>2026-06-01T15:22:49Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=c294fe3149776f09c497e4d12f5d3eb125b30ca4'/>
<id>urn:sha1:c294fe3149776f09c497e4d12f5d3eb125b30ca4</id>
<content type='text'>
PacmanUpdates previously supported either no kernel update detection or
matching a single kernel package name. That works for Arch's `linux`
package, but not for Manjaro's series specific kernel packages such as
`linux618` or `linux70`.

Replace the Bool indexed API with an explicit kernel check kind and add
`PacmanUpdatesPredicateK`, which accepts a `String -&gt; Bool` predicate for
detecting kernel updates from the package list.
</content>
</entry>
<entry>
<title>Fix Brightness plugin - fix #775</title>
<updated>2026-05-29T20:30:43Z</updated>
<author>
<name>Enrico Maria De Angelis</name>
<email>enricomaria.dean6elis@gmail.com</email>
</author>
<published>2026-05-21T22:00:27Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=5077b585ce6e5e2521ef0ef072f038ec5821b6ee'/>
<id>urn:sha1:5077b585ce6e5e2521ef0ef072f038ec5821b6ee</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Skip root pixmap access when alpha == 255</title>
<updated>2026-05-29T08:31:36Z</updated>
<author>
<name>Ashesh Ambasta</name>
<email>ashesh.ambasta@gmail.com</email>
</author>
<published>2026-05-27T14:23:56Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=2c7399e3590cccd23b834f4b76193d918be56bb4'/>
<id>urn:sha1:2c7399e3590cccd23b834f4b76193d918be56bb4</id>
<content type='text'>
When alpha is 255 (fully opaque), the pseudo-transparency blend factor
is zero (0xFFFF - 257 * 255 = 0), making the root pixmap composite a
visual no-op. However, drawBackground unconditionally calls
XRenderCreatePicture on the _XROOTPMAP_ID pixmap.

Wallpaper setters like feh free the old root pixmap via XKillClient
each time they cycle to a new image. If xmobar attempts
XRenderCreatePicture on the freed pixmap, the X server returns
BadDrawable and the default error handler terminates xmobar.

Guard the entire root pixmap code path with `when (alpha &lt; 255)` so
that fully opaque bars never touch _XROOTPMAP_ID.
</content>
</entry>
<entry>
<title>hlint warnings</title>
<updated>2026-05-07T00:05:54Z</updated>
<author>
<name>jao</name>
<email>jao@gnu.org</email>
</author>
<published>2026-05-07T00:05:54Z</published>
<link rel='alternate' type='text/html' href='https://jao.io/cgit/xmobar/commit/?id=ad7cae0a320c3793a073d82f348b3bacd85ccd35'/>
<id>urn:sha1:ad7cae0a320c3793a073d82f348b3bacd85ccd35</id>
<content type='text'>
</content>
</entry>
</feed>
