https://github.com/NNBnh/superb-st
๐ ST-base terminal with enough patches
https://github.com/NNBnh/superb-st
c flexipatch ligatures st suckless suckless-terminal terminal terminal-emulator
Last synced: 12 months ago
JSON representation
๐ ST-base terminal with enough patches
- Host: GitHub
- URL: https://github.com/NNBnh/superb-st
- Owner: NNBnh
- License: mit
- Archived: true
- Created: 2021-05-09T06:01:51.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-07-02T04:24:48.000Z (over 3 years ago)
- Last Synced: 2024-08-02T15:31:19.828Z (over 1 year ago)
- Topics: c, flexipatch, ligatures, st, suckless, suckless-terminal, terminal, terminal-emulator
- Language: C
- Homepage:
- Size: 126 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
SuperB ST
ST-base terminal with enough patches

## ๐ก About
**SuperB ST** is a _SuperB_ [ST-base](https://st.suckless.org) terminal using [ST-flexipatch](https://github.com/bakkeby/st-flexipatch) to add enough patches so it can be compared with other modern terminal like [Alacritty](https://github.com/alacritty/alacritty) and [Kitty](https://sw.kovidgoyal.net/kitty):
- **Goal**:
- Patch features that only the terminal can do
- **Non goal**:
- Patch features that conflict with the terminal multiplexer or some windows manager's features
- Patch features that can be integrate using other tools/programs
### โจ Features
- Resize to any pixel size and centers the content
- Configurable background's opacity
- Wide-character support
- Fonts ligatures support
- [True colors](https://gist.github.com/XVilka/8346728) support
- [Color emoji](https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/1) support
- Graphics rendering support ([SIXEL](https://en.wikipedia.org/wiki/Sixel) and [W3M](http://w3m.sourceforge.net))
- Even more escape sequences support
- XIM support
- Beginner friendly features:
- Scrollback support and clipboard handling:
> Although these basic and important features can be achieved using other programs, there aren't many programs that just only these features.
> Currently they are only be supported properly by some terminal multiplexer (like [Tmux](https://github.com/tmux/tmux/wiki) which come with many bloated features conflict with the windows manager).
> Looking forward to [scroll](https://tools.suckless.org/scroll).
- [Xresources](https://wiki.archlinux.org/title/X_resources) support:
> Although terminal configuration can be approached using escape sequences with tool like [`bui-terminal`](https://github.com/NNBnh/bui-terminal), some aspect of the terminal can't be change using escape sequences (e.g: font, background's opacity...).
> Font and bg's opacity can be config with startup flags using [`bt`](https://github.com/NNBnh/bt), still it isn't cover every options.
### ๐ฉน Patches
- Window:
- [`anysize`](https://st.suckless.org/patches/anysize): allows the terminal to resize to any pixel size and centers the content of the terminal.
- [`relativeborder`](https://st.suckless.org/patches/relativeborder): allows users to specify a border that is relative in size to the width of a cell in the terminal.
- [`themed_cursor`](https://st.suckless.org/patches/themed_cursor): use the xterm cursor from your cursor theme.
- [`alpha`](https://st.suckless.org/patches/alpha): allows users to only change the opacity of the background (unlike using the composite manager to change the opacity of the whole windows).
- Font:
- [`wide_glyphs`](https://www.reddit.com/r/suckless/comments/jt90ai/update_support_for_proper_glyph_rendering_in_st): support proper glyph rendering.
- [`ligatures`](https://st.suckless.org/patches/ligatures): support ligatures rendering.
- Drawing:
- [`bold-is-not-bright`](https://st.suckless.org/patches/bold-is-not-bright): makes bold text rendered simply as bold, leaving the color unaffected.
- [`sync`](https://st.suckless.org/patches/sync): better draw timing to reduce flicker/tearing and improve animation smoothness.
- [`sixel`](https://gist.github.com/saitoha/70e0fdf22e3e8f63ce937c7f7da71809): support [SIXEL](https://en.wikipedia.org/wiki/Sixel) graphics.
- [`w3m`](https://st.suckless.org/patches/w3m): support [W3M](http://w3m.sourceforge.net) graphics.
- Escape sequences:
- [`osc_10_11_12_2`](https://st.suckless.org/patches/osc_10_11_12_2): to modify the background, foreground and cursor colors.
- [`blinking_cursor`](https://st.suckless.org/patches/blinking_cursor): to modify cursor style.
- [`undercurl`](https://st.suckless.org/patches/undercurl): to render special underlines.
- [`csi_22_23`](https://st.suckless.org/patches/csi_22_23): to save and restore window title.
- Beginner friendly:
- [`scrollback`](https://st.suckless.org/patches/scrollback): scroll back through terminal output using mouse wheel.
- [`clipboard`](https://st.suckless.org/patches/clipboard): support clipboard copy and paste.
- [`xresources`](https://st.suckless.org/patches/xresources): adds the ability to configure ST via [Xresources](https://wiki.archlinux.org/title/X_resources)
> **Note** The Xresources config will reload when a `SIGUSR1` signal is received: `killall -USR1 st`
## ๐ Setup
### ๐งพ Dependencies
- [`fontconfig`](https://archlinux.org/packages/extra/x86_64/fontconfig) and [`libx11`](https://archlinux.org/packages/extra/x86_64/libx11) are make dependencies
- [`libxft-bgra`](https://aur.archlinux.org/packages/libxft-bgra) is make dependencies for color emoji support
> _Make dependencies only needed when compile._
### ๐ฅ Installation
#### ๐ง Manually
Option 1: download
and move it to `~/.local/bin/`. Or using `curl`:
```sh
curl -L https://github.com/NNBnh/superb-st/releases/download/1.0.0/st > ~/.local/bin/st
```
make sure to make the file executable:
```sh
chmod +x ~/.local/bin/st
```
Option 2: compile
```sh
git clone https://github.com/NNBnh/superb-st
git clone https://github.com/bakkeby/st-flexipatch
cd superb-st
cp -f patches.h config.h config.mk ../st-flexipatch/
cd ../st-flexipatch/
sudo make install
```
#### ๐ฆ Package manager
For [`nix`](https://nixos.org) user:
```sh
#TODO
```
For [`arch`](https://archlinux.org) user:
```sh
#TODO
```
> _If you can and want to port SuperB ST to other package managers, feel free to do so._
## โจ๏ธ Keybinds
- Font size:
- Ctrl + MouseWheel up : increase font size
- Ctrl + MouseWheel down : decrease font size
- Ctrl + MouseWheel button : reset font size
- Ctrl + = : increase font size
- Ctrl + - : decrease font size
- Ctrl + ' : reset font size
- Scrollback:
- MouseWheel up : scroll up
- MouseWheel down : scroll down
- Clipboard handling:
- Ctrl + Shift + c : copy selected texts to clipboard
- Ctrl + Shift + v : paste texts from clipboard to ther terminal
## โ๏ธ Configuration
You can config SuperB ST with outside tools like [`bui-terminal`](https://github.com/NNBnh/bui-terminal) or with [Xresources](https://wiki.archlinux.org/title/X_resources):
```Xresources
! ~/.config/X11/xresources
*.font: :pixelsize=:antialias=:autohint=
*.color0: #
*.color1: #
*.color2: #
*.color3: #
*.color4: #
*.color5: #
*.color6: #
*.color7: #
*.color8: #
*.color9: #
*.color10: #
*.color11: #
*.color12: #
*.color13: #
*.color14: #
*.color15: #
*.background: #
*.foreground: #
*.cursorColor: #
*.alpha:
*.borderperc:
*.termname:
*.shell:
*.minlatency:
*.maxlatency:
*.blinktimeout:
*.bellvolume:
*.tabspaces:
```
```sh
xrdb -load ~/.config/X11/xresources
killall -USR1 'st'
```
## ๐ Credits
Special thanks to:
- [**ST**](https://st.suckless.org) by [`suckless.org`](https://suckless.org)
- [**ST-flexipatch**](https://github.com/bakkeby/st-flexipatch) by [Stein Gunnar Bakkeby](https://github.com/bakkeby)
---
>
Made with โค๏ธ by NNB
>
>