TsTart - app to launch other programs. It should be used on Linux phones for tiling window managers.
Find a file
2026-04-22 18:29:00 +03:00
.gitignore forgot add files 2026-04-17 17:38:39 +03:00
CHANGELOG.md added version 2026-04-22 18:29:00 +03:00
desktop.go forgot add files 2026-04-17 17:38:39 +03:00
desktop_test.go added ignore, only flags and command to display all apps 2026-04-18 10:49:09 +03:00
go.mod forgot add files 2026-04-17 17:38:39 +03:00
go.sum forgot add files 2026-04-17 17:38:39 +03:00
LICENSE Initial commit 2026-04-17 14:00:51 +00:00
main.go added version 2026-04-22 18:29:00 +03:00
main_test.go added ignore, only flags and command to display all apps 2026-04-18 10:49:09 +03:00
README.md added version 2026-04-22 18:29:00 +03:00

TsTart

Version

A lightweight application launcher for Linux tiling window managers, built with Gio.

Features

  • Reads .desktop files 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