TsTart - app to launch other programs. It should be used on Linux phones for tiling window managers.
- Go 100%
| .gitignore | ||
| CHANGELOG.md | ||
| desktop.go | ||
| desktop_test.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| main_test.go | ||
| README.md | ||
TsTart
A lightweight application launcher for Linux tiling window managers, built with Gio.
Features
- Reads
.desktopfiles from standard Linux application directories - Displays application icons (PNG) or a fallback letter with the app name below
- Search bar with name-first, description-second filtering
- Keyboard navigation (Arrows, HJKL, Tab, Enter, ESC)
- Mouse hover selection with description display
- Customizable colors, columns, and spacing via command-line flags
- Launches the selected application and closes
Installation
go install g.arns.lt/zordsdavini/tstart@latest
Or build from source:
git clone https://g.arns.lt/zordsdavini/tstart.git
cd tstart
go build -o tstart .
Usage
tstart [flags]
Flags
| Flag | Default | Description |
|---|---|---|
-bg |
#282c34 |
Background color (hex) |
-fg |
#abb2bf |
Foreground/text color (hex) |
-selected |
#4b5263 |
Selection highlight color (hex) |
-cols |
4 |
Number of columns in the grid |
-space |
1.0 |
Spacing multiplier between items |
-only |
Comma-separated list of app names to show (exclusive) | |
-ignore |
Comma-separated list of app names to hide | |
-list |
false |
Print collected app names to console and exit |
-version |
false |
Print version and exit |
Examples
# Default settings
tstart
# 6 columns with red selection and wider spacing
tstart -cols 6 -selected "#ff0000" -space 1.5
# Dark theme with high contrast
tstart -bg "#000000" -fg "#ffffff" -selected "#333333"
# List all available app names (useful for building only/ignore lists)
tstart -list
# Show only specific apps
tstart -only "Firefox,Thunar,Terminal"
# Hide specific apps
tstart -ignore "Avahi SSH Server Browser,Avahi VNC Server Browser"
Keyboard Shortcuts
The launcher has two states: Search and Navigation.
Search State (default on start)
| Key | Action |
|---|---|
| Type | Filter applications by name/description |
Enter |
Launch the first matching application |
↓ / Tab |
Switch to Navigation state |
ESC |
Switch to Navigation state |
Navigation State
| Key | Action |
|---|---|
↑ ↓ ← → |
Move selection in the grid |
H J K L |
Vim-style navigation |
Tab |
Cycle to next application |
Enter |
Launch selected application |
/ |
Switch to Search state |
ESC |
Close the launcher |
Integration with Qtile
Main reason for this project was to create app launcher for Qtile. That's how it should be in Qtile:
BLACK = "#282c34"
BLUE = "#61afef"
@lazy.function
def spawn_tstart(qtile):
screen = qtile.current_screen
cols = screen.width // 100
cmd = f"tstart -cols {cols} -space 5 -bg {BLACK} -selected {BLUE}"
qtile.spawn(cmd)
keys.extend([
EzKey("M-A-<Return>", spawn_tstart),
])
@hook.subscribe.client_new
def pin_tstart(client):
if client.name == "TsTart":
screen = client.qtile.current_screen
client.static(
screen=screen.index,
x=0,
y=0,
width=screen.width,
height=screen.height,
)
client.focus()
License
See LICENSE.
Support
₿: bc1qel3spnk8e2hsmkwn7fcm2drlyjms3ch8t2tek7
₥: 856UP5jqjHt2TjHo6HEvGEciGweLM5kM4ek6tNPUbk57QhJixqntdL5Wt6djPHm3V7D5Zr8FPc8i9ixWfWuSFb1D6u5GuTv
