FRIGN | 28 Jul 18:55 2014

Introducing the imagefile-format


after literally dozens of mails discussing a new suckless image-format,
I sat down last week to reflect on what could be the best of all
proposed format-specifications.
As a result I came up with the first implementation, the if-tools[0],
capable of easily converting between png and imagefiles.
In this mail, I'll give you a small overview on the format itself and
how it behaves in real situations.


Bytes   Description
9       "imagefile"
4       32-bit BE - width
4       32-bit BE - height
[1111]  RGBA


[if, if.bz2]
The latter is used for bzipped imagefiles. Explanation follows.


The examples intentionally leave out error-checks.

	3.1) Writing an imagefile-header
	uint32_t tmp, width = x, height = y;	
(Continue reading)

Dimitris Papastamos | 28 Jul 16:14 2014

xscreenshot(1) using suckless image format

Hi all,

Hiltjo Posthuma wrote xscreenshot[0] which basically generates an if
on stdout.  The imagefile[1] tools can be used to convert the if to
png using if2png (thanks FRIGN!).

The dependencies are kept to a minimum so xscreenshot only depends on
libX11 and the imagefile tools depend on libpng.  They are designed to be
used in pipelines easily.

Any ideas, or testing would be greatly appreciated :)

Would be nice to add if support elsewhere as well.


Michael Forney | 26 Jul 09:48 2014

[st] [PATCH] Fix disabling of bold and fastblink

According to ECMA-48¹ 8.3.117, an attribute value of 21 is "doubly
underlined", while 22 is "normal colour or normal intensity (neither
bold nor faint)".

Additionally, 25 is "steady (not blinking)", which likely means neither
slow blink nor fast blink.

 st.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/st.c b/st.c
index 546db41..0c917fd 100644
--- a/st.c
+++ b/st.c
 <at>  <at>  -1718,11 +1718,8  <at>  <at>  tsetattr(int *attr, int l) {
 		case 9:
 			term.c.attr.mode |= ATTR_STRUCK;
-		case 21:
-			term.c.attr.mode &= ~ATTR_BOLD;
-			break;
 		case 22:
-			term.c.attr.mode &= ~ATTR_FAINT;
+			term.c.attr.mode &= ~(ATTR_BOLD | ATTR_FAINT);
 		case 23:
 			term.c.attr.mode &= ~ATTR_ITALIC;
 <at>  <at>  -1731,10 +1728,7  <at>  <at>  tsetattr(int *attr, int l) {
(Continue reading)

Henrique Lengler | 26 Jul 02:12 2014

[dwm] Tag organization under terminal


Is there a good method to organize a program running under a terminal
I wanna create a tag for mail and for music, but the program that i use
for mail/music and others run under st.
I know that this is possible adding a key shortcut, but is there any

Henrique Lengler

Henrique Lengler | 25 Jul 01:30 2014

[st] Colors


I'm not familiar with st code, so i wanna know if have how i change st
colors? Not just selecting one in the config.h file but change
how this color looks. E.g Point black color to some RGB hexcode like
people do with urxvt, to make it look more beautiful.


Henrique Lengler

Henrique Lengler | 25 Jul 00:00 2014

[DWM] Why not fontconfig?

Is there a good motive to DWM use the "X Logical Font Description" by
default, and not Fontconfig?

Henrique Lengler

Paul Onyschuk | 24 Jul 23:15 2014

[acmebrowse] Mouse driven interface for edbrowse

I've been playing around with idea of using edbrowse (CLI web browser
with ed-like interface) together with acme.  Launching it using win(1)
in acme is fine, but far from usable.  I decided to improve on that.
This script is result of that - it needs to be launched in acme.  Tmux
is used for bridging two worlds.  Since readme is included in script
(just keep scrolling, you will find it), there is not much else left to

This is early version, but usable enough so it can be shared I guess.
Here is screenshot [1], not sure how useful is that, since acme looks
utilitarian as always.


Here is script enclosed inside "--" marks:


. 9.rc
. $PLAN9/lib/acme.rc

# Preserve tabs and newlines, when tokenizing readme
tmpifs = $ifs
ifs = ' '

# README in form of here document
readme =  `{cat <<EOF}

(Continue reading)

Hiltjo Posthuma | 24 Jul 19:22 2014

[patch][dmenu] fix crash with ctrl-enter as input

reproduce: ./dmenu; send EOF; press ctrl+enter.

Attached is the patch.

Kind regards,
Hiltjo | 24 Jul 17:41 2014

[st][PATCH] minor: remove unnecessary/redundant libraries

libXext is not used and freetype2 is included by `pkg-config --* fontconfig`
but per-se does not seem useful anyhow, unless I'm missing something.


Dimitris Zervas | 24 Jul 02:22 2014

[sandy] Additional key tests


Sandy's key bindings are based on tests.
The number of tests have started to grow and a there are times that a key is defined 6 or more times to do a simple job.
Also, I want to add an expand mode (to make diw command possible) and until mode (dta command), which would
mean even more key definitions.

I was thinking to make multi-command keys defined with an array of  functions and arguments,
but that's not an efficient solution and I don't like it.

What do you think?

Alexandre Niveau | 24 Jul 00:44 2014

[st] Erasing UTF-8 characters in ed


I've been using st for a while now; it works great. Thanks to the devs
and maintainers!

I have a problem though, when using ed; I don't know whether it's a
bug in st or elsewhere. When typing a line in ed, using backspace to
erase a  multibyte UTF-8 character *seems* OK visually, but does not
work: only the last byte is really removed, leaving an invalid UTF-8
character. For example, 3-byte characters need 3 backspaces to be
erased, but the terminal shows 3 characters erased.

Steps to reproduce (^H is a backspace):
$ ed test

The resulting file contains bytes 61 c3 61 0a.

I tried GNU ed, ed from 9base, and sam -d, launched from bash and
9base's rc. They all have this behaviour in st, both in version 0.5
and tip (using stty erase ^H for tip, as explained in this commit
— as a side note, wouldn't this be worth mentioning in the FAQ?).

However in xterm, gnome-terminal, and lxterminal, both ed and sam -d
work as expected.

It may be that one's not supposed to use backspaces in ed, but this
behaviour is weird nonetheless…

-- A.N.