It turns out that xterm
is pretty complicated. The guys who wrote <code>st</code> were inspired to do so because of this. They say:
> [xterm] has over 65K lines of code and emulates obscure and obsolete terminals you will never need. The popular alternative, rxvt has only 32K lines of code. This is just too much for something as simple as a terminal emulator; it’s yet another example of code complexity.
In contrast, st
is about 5000 lines of code.
Dotfiles: http://github.com/josuah/etc
Terminal: <code>st(1)</code>
Theme: sed 's/gray90/#ffeecc/' st/config.def.h > st/config.h
.-----------------------------------------------------. | .-------------------. .---------------------------. | | | | | | | | | | | | | | | | | | | | | | | doc-wiki | | White term thanks to | | | | | | printf '\033[?5h' | | | | | | | | | | | | | | io + iomenu | '---------------------------' | | | | .---------------------------. | | | | | | | | | | | | | | | | | | | | | | | cgo | | | | | | | | | | | | | | | | | | | | | '-------------------' '---------------------------' | '-----------------------------------------------------'
I noticed this yesterday, too. I don't use the (old) official st package, but instead roll my own, but then pacaur started telling me:
:: st is not present in the AUR -- skipping
so that's how I noticed that st got removed from the Arch repos. In case anyone is interested, here is the old official PKGBUILD, which you can use to compile your own stable st (st-git from the AUR obviously uses the latest git version):
pkgname=st pkgver=0.7 pkgrel=1 pkgdesc='A simple virtual terminal emulator for X.' arch=('x86_64') license=('MIT') depends=('libxft' 'libxext' 'xorg-fonts-misc') makedepends=('ncurses') url="http://st.suckless.org" source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz) md5sums=('29b2a599cf1511c8062ed8f025c84c63')
prepare() { cd "$srcdir"/$pkgname-$pkgver # skip terminfo which conflicts with ncurses sed -i '/\@tic /d' Makefile }
build() { cd "$srcdir"/$pkgname-$pkgver make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 }
package() { cd "$srcdir"/$pkgname-$pkgver make PREFIX=/usr DESTDIR="$pkgdir" TERMINFO="$pkgdir/usr/share/terminfo" install install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README" }
To use your own config.h
:
config.h
in the root directory, where the PKGBUILD is. (I like to keep mine in ~/.config/st
and then symlink to that.)config.h
to the sources()
array.'SKIP'
to the md5sums()
array (or use updpkgsums
).Add this line to the end of the prepare()
function:
cp "$srcdir"/config.h config.h
I wrote a more detailed tutorial here for those interested. Happy suckingless.
System: Manjaro and BlackArch (so modified neofetch can't be really trusted
​
Terminal: st with bash and tmux
​
Browsers: surf (for the web) and ranger (for files)
​
Media players: mpd/ncmpcpp and mpv
​
Wallpaper: Here on wallhaven (self modified)
This is my daily driver setup, I3 has been such a nice WM for me and is easily customizable...
for the rest it's a pretty basic setup ¯\_(ツ)_/¯
Well, st is not a new approach to terminals, it rather tries to make the best out of what we have at the moment.
It is in some sense special that it
It is a terminal emulator for people who are willing to read and write code for configuration and know C, the reward is a fast and lean terminal emulator.
I use fish as my shell. I switch between Cinnamon and i3 as I see fit, and my default applications for each environment are different. When I'm in Cinnamon, i usually use the xfce terminal emulator. In i3, I'm usually aiming for minimalistic resource usage, and I typically end up using st with scrollback and argbbg patches. It's extremely lightweight, but works a bit differently - It's fairly configurable, but configuration is done in a header file before you compile it.
st. A little more complicated to configure (config fixed at compile time), and deliberately feature light, but performs well.
Any "missing" features are well filled with tmux or screen, playing nicely into the suckless philosophy of not reinventing the wheel.
I too have the issue with the narrowness, but other than that the font is beautiful.
Also re: urxvt, unless you have a bunch of urxvt scripts that you're loathe to lose, you should check out st. I switched to it (with tmux, which I'd been using in urxvt) and have never been happier with my console setup. It's been significantly faster in my experience.
Been using BSD as a daily driver for 2 years, longer as a server OS. This is on a Lenovo Thinkpad T510. Everything was ports compiled, I like to control whats on my system. No display manager, D-BUS, HAL, very minimalist. No conky, no icons, no consolekit, no policykit. As I said, minimalist.
Suckless Terminal (st
)
Transparency patch: http://st.suckless.org/patches/alpha/
I personally am still using termite
, but have been wanting to switch to st
for a while now to get rid of gtk3/glib2/vte dependency mess in termite.
Obvious, perhaps, but you need to open a new instance of urxvt to see the changes. So:
~/.Xresources
and save.xrdb ~/.Xresources
.urxvt
(or urxvtc
if you have the demon running) to open a new terminal instance.Fwiw, I managed to get URxvt.letterspace: -1
working, but I got fed up with having to manually adjust the letter spacing, and I really wanted a terminal with true color support, so I recently switched to <em>st</em> (simple terminal) and haven't looked back.
Personally I use xterm, it's small and has a lot of configurations.
I also know of st, which is really small and follows the suckless philosophy but I'm not sure if it is easy to configure (but comparing with other software from the same developer I'd say configuration options are endless).
I don't mind, but you won't find much in there. My terminal is st and it doesn't use .Xresources.
WM: i3-gaps
Terminal: st
Font: pragmata-pro
Programs: vim,mutt,rofi,newsbeuter,ncmpcpp,firefox,localfm,weechat + bitlbee.
WM: bspwm
Also installed Openbox as backup. I had a project once, where I had about 15 independent windows, and managing those with bspwm was too cumbersome.
DE: None/self-built. I really only use a WM, a keybinding for launching the terminal (st - available in AUR), and a keybinding for launching dmenu.
My launcher for the terminal doesn't launch a shell, but tmux. Tmux could load it's sessions (ex. vim, ssh whatever) but for me it's just starting zsh.
Then I use vim and git for absolutely everything.
Tmux is configured (and st is patched) so that mouse interaction painlessly integrates into vim (visual mode). Default register is set to unnamed. Allows copy-pasting with X applications (e.g. Firefox).
I am using st. However ncurses interfaces such as the pinentry can missinterpret the signal from the mouse wheel regardless of the terminal emulartor in use.
Additionally, having to move the mouse over the window for the middle click to work defeats the purpose of a keyboard centeres workflow that I have. And when I emulate the mouse click with a keyboard shortcut there is the danger that I forget to move the mouse to the right window and suddenly the middle click is performed on some IRC or IM window and I paste my password there.
I will look at the st source though, maybe there already is a patch for some solution available. Thanks for pointing that out.
You mean st? Here's the thing for the alpha patch. You would clone the repository and then use git apply st-alpha-patch-2020.diff
to apply the changes. If it doesn't work right away you might have to go through the files by hand and edit the code yourself. I'm already an experienced C programmer so it's not hard for me to do. My fork of st is on GitHub, you can use it if you want to, just compile it like you would the original
I've been curious ever since I saw st
on the suckless website about the colorcheme that is displayed in the screenshot at the top (http://st.suckless.org/screenshots/frign-2016.png). Has anyone got this colorcheme made? I attempted making this myself based on some older posts on this sub but didn't get too far. I'll post a link to an image of what I've done so far as soon as I'm back on my laptop.
I use st term http://st.suckless.org/
The advice to use Gvim for speed is correct, but I like the idea of a terminal abstraction. st term is featureless but quite fast. Vim performs fine for me FWIW my initial test/impetus for switching was a jjjjjjkkkkk test, i.e. how quickly the scrolling responds.
An alternative (but not one many would take) is to not run Xwindows at all. Probably still a good idea to have a non-standard terminal even there.
This is nice! just noticed something though: The background looks like default terminal in Ubuntu, wich migth to be everyone's default (for instance, I use ST). Could you provide a background color chooser?
User pierron
on #nixos on freenode provided a nice way to patch st
using
a new feature of nix: overlays. I use it to apply solarized-patches to the
st
source.
##!! Works only on nix-unstable for now ## Special config nixpkgs.overlays = [ (self: super: { st = super.st.override { patches = builtins.map super.fetchurl [ { url = "http://st.suckless.org/patches/st-no_bold_colors-20160727-308bfbf.diff"; sha256 = "2e8cdbeaaa79ed067ffcfdcf4c5f09fb5c8c984906cde97226d4dd219dda39dc"; } { url = "http://st.suckless.org/patches/st-solarized-both-20160727-308bfbf.diff"; sha256 = "b7b25ba01b7ae87ec201ebbb1bf82742d5979788ecc6773a356eebe7d90a9703"; } ]; }; }) ];
You could just patch the default configuration file to get what you want.
I got st and powerline working properly , I had to reinstall my operating system ,
I used powerline and st from official repository ( pacman )
I added this line under ~/.zshrc ( I ll have to find the correct line for .bashrc )
. /usr/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh
for st , I use the following information in order to recompile with the dark/light theme , it s fairly easy
https://bbs.archlinux.org/viewtopic.php?id=164108
through their patch page is not updated http://st.suckless.org/patches/solarized
It was nice to see people participating in this discussion and interacting to provide more solution.
A virtual terminal emulator not mentioned yet is st (http://st.suckless.org/). Used rxvt-unicode before but I've moved totally st and I must say it feels much better even though you have to recompile it every time you want to change some configuration of the virtual terminal emulator. It takes just about a second.
But how often do you want to change your terminal settings?
You didn't ask me, but:
I don't use xterm or rxvt, but st. It's only available via the AUR. Also, like dwm you can configure it by editing the source code (just a config.h header file). You'd have to recompile if you wanted to change its behavior. Obviously this doesn't fit for a precompiled package.
The AUR package already includes an extra config.h file ready to be edited. So you don't have to change the PKGBUILD or build process if you wanted to change the thickness of borders for example. There are some patches available - I used the patch for the solarized color scheme and a patch that fixes the behavior of vim inside zsh inside tmux inside st regarding scrolling.
To not have an automated aura update overwriting my custom st binary I've created my own package and are using this instead of the AUR package, but of course, I initially used the AUR package as a template. Updates aren't regularly (~after 3 years maybe there is a new minor version) but better safe than sorry. Wouldn't want to wake up without a working terminal emulater.
Given, you could achieve the same cleanness regarding packaging by using your own overlays in Gentoo. But ebuilds are arguably harder to hack on/write than PKGBUILDs. And most other distros just don't support hacking the sources of a package directly (I don't know about Slack). Then an installation of st would require to not use the package manager, and install it to /usr/local, without the possibility of removal or dependency resolution through the package manager.
~/.xinitrc:
exec "$HOME/path/to/tinywm/tinywm"
In tinywm.c I s/Mod1Mask/Mod2Mask/g to use the Cmd-Key. tinywm then compiles with a simple make.
To compile st I had to install pkg-config and freetype (with homebrew). st is currently the thing that works worst (it crashes when launching ncurses applications).