FAQ: add some details about the w3m img hack
... and an example patch to switch from double-buffering to a single buffer.
This commit is contained in:
		
							
								
								
									
										59
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								FAQ
									
									
									
									
									
								
							| @@ -2,12 +2,14 @@ | |||||||
|  |  | ||||||
| Use the excellent tool of [utmp](https://git.suckless.org/utmp/) for this task. | Use the excellent tool of [utmp](https://git.suckless.org/utmp/) for this task. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Some _random program_ complains that st is unknown/not recognised/unsupported/whatever! | ## Some _random program_ complains that st is unknown/not recognised/unsupported/whatever! | ||||||
|  |  | ||||||
| It means that st doesn’t have any terminfo entry on your system. Chances are | It means that st doesn’t have any terminfo entry on your system. Chances are | ||||||
| you did not `make install`. If you just want to test it without installing it, | you did not `make install`. If you just want to test it without installing it, | ||||||
| you can manually run `tic -sx st.info`. | you can manually run `tic -sx st.info`. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Nothing works, and nothing is said about an unknown terminal! | ## Nothing works, and nothing is said about an unknown terminal! | ||||||
|  |  | ||||||
| * Some programs just assume they’re running in xterm i.e. they don’t rely on | * Some programs just assume they’re running in xterm i.e. they don’t rely on | ||||||
| @@ -15,6 +17,7 @@ you can manually run `tic -sx st.info`. | |||||||
| * Some programs don’t complain about the lacking st description and default to | * Some programs don’t complain about the lacking st description and default to | ||||||
|   another terminal. In that case see the question about terminfo. |   another terminal. In that case see the question about terminfo. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## How do I scroll back up? | ## How do I scroll back up? | ||||||
|  |  | ||||||
| * Using a terminal multiplexer. | * Using a terminal multiplexer. | ||||||
| @@ -23,11 +26,13 @@ you can manually run `tic -sx st.info`. | |||||||
| * Using the excellent tool of [scroll](https://git.suckless.org/scroll/). | * Using the excellent tool of [scroll](https://git.suckless.org/scroll/). | ||||||
| * Using the scrollback [patch](https://st.suckless.org/patches/scrollback/). | * Using the scrollback [patch](https://st.suckless.org/patches/scrollback/). | ||||||
|  |  | ||||||
|  |  | ||||||
| ## I would like to have utmp and/or scroll functionality by default | ## I would like to have utmp and/or scroll functionality by default | ||||||
|  |  | ||||||
| You can add the absolute patch of both programs in your config.h | You can add the absolute patch of both programs in your config.h | ||||||
| file. You only have to modify the value of utmp and scroll variables. | file. You only have to modify the value of utmp and scroll variables. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Why doesn't the Del key work in some programs? | ## Why doesn't the Del key work in some programs? | ||||||
|  |  | ||||||
| Taken from the terminfo manpage: | Taken from the terminfo manpage: | ||||||
| @@ -83,12 +88,14 @@ If you are using zsh, then read the zsh FAQ | |||||||
|  |  | ||||||
| Putting these lines into your .zshrc will fix the problems. | Putting these lines into your .zshrc will fix the problems. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## How can I use meta in 8bit mode? | ## How can I use meta in 8bit mode? | ||||||
|  |  | ||||||
| St supports meta in 8bit mode, but the default terminfo entry doesn't | St supports meta in 8bit mode, but the default terminfo entry doesn't | ||||||
| use this capability. If you want it, you have to use the 'st-meta' value | use this capability. If you want it, you have to use the 'st-meta' value | ||||||
| in TERM. | in TERM. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## I cannot compile st in OpenBSD | ## I cannot compile st in OpenBSD | ||||||
|  |  | ||||||
| OpenBSD lacks librt, despite it being mandatory in POSIX | OpenBSD lacks librt, despite it being mandatory in POSIX | ||||||
| @@ -97,6 +104,7 @@ If you want to compile st for OpenBSD you have to remove -lrt from config.mk, an | |||||||
| st will compile without any loss of functionality, because all the functions are | st will compile without any loss of functionality, because all the functions are | ||||||
| included in libc on this platform. | included in libc on this platform. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## The Backspace Case | ## The Backspace Case | ||||||
|  |  | ||||||
| St is emulating the Linux way of handling backspace being delete and delete being | St is emulating the Linux way of handling backspace being delete and delete being | ||||||
| @@ -158,19 +166,60 @@ terminal users wants its backspace to be how he feels it: | |||||||
| 	[1] http://www.ibb.net/~anne/keyboard.html | 	[1] http://www.ibb.net/~anne/keyboard.html | ||||||
| 	[2] http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-5.html | 	[2] http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-5.html | ||||||
|  |  | ||||||
|  |  | ||||||
| ## But I really want the old grumpy behaviour of my terminal | ## But I really want the old grumpy behaviour of my terminal | ||||||
|  |  | ||||||
| Apply [1]. | Apply [1]. | ||||||
|  |  | ||||||
| [1] https://st.suckless.org/patches/delkey | [1] https://st.suckless.org/patches/delkey | ||||||
|  |  | ||||||
| ## Why do images not work in st (in programs such as w3m)? |  | ||||||
|  |  | ||||||
| This is a terrible hack that overdraws an image on top of the terminal emulator | ## Why do images not work in st using the w3m image hack? | ||||||
| window. It also relies on a very specific way the terminal draws it's contents. |  | ||||||
|  | w3mimg uses a hack that draws an image on top of the terminal emulator Drawable | ||||||
|  | window. The hack relies on the terminal to use a single buffer to draw its | ||||||
|  | contents directly. | ||||||
|  |  | ||||||
|  | st uses double-buffered drawing so the image is quickly replaced and may show a | ||||||
|  | short flicker effect. | ||||||
|  |  | ||||||
|  | Below is a patch example to change st double-buffering to a single Drawable | ||||||
|  | buffer. | ||||||
|  |  | ||||||
|  | diff --git a/x.c b/x.c | ||||||
|  | --- a/x.c | ||||||
|  | +++ b/x.c | ||||||
|  | @@ -561,10 +561,6 @@ xresize(int col, int row) | ||||||
|  |  	win.tw = MAX(1, col * win.cw); | ||||||
|  |  	win.th = MAX(1, row * win.ch); | ||||||
|  |   | ||||||
|  | -	XFreePixmap(xw.dpy, xw.buf); | ||||||
|  | -	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, | ||||||
|  | -			DefaultDepth(xw.dpy, xw.scr)); | ||||||
|  | -	XftDrawChange(xw.draw, xw.buf); | ||||||
|  |  	xclear(0, 0, win.w, win.h); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | @@ -921,8 +917,7 @@ xinit(void) | ||||||
|  |  	gcvalues.graphics_exposures = False; | ||||||
|  |  	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, | ||||||
|  |  			&gcvalues); | ||||||
|  | -	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, | ||||||
|  | -			DefaultDepth(xw.dpy, xw.scr)); | ||||||
|  | +	xw.buf = xw.win; | ||||||
|  |  	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | ||||||
|  |  	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); | ||||||
|  |   | ||||||
|  | @@ -1386,8 +1381,6 @@ void | ||||||
|  |  draw(void) | ||||||
|  |  { | ||||||
|  |  	drawregion(0, 0, term.col, term.row); | ||||||
|  | -	XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, win.w, | ||||||
|  | -			win.h, 0, 0); | ||||||
|  |  	XSetForeground(xw.dpy, dc.gc, | ||||||
|  |  			dc.col[IS_SET(MODE_REVERSE)? | ||||||
|  |  				defaultfg : defaultbg].pixel); | ||||||
|  |  | ||||||
| A more proper (but limited way) would be using sixels. Which st doesn't |  | ||||||
| support. |  | ||||||
|  |  | ||||||
| ## BadLength X error in Xft when trying to render emoji | ## BadLength X error in Xft when trying to render emoji | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user