Whats New 0.2.0 - ArunPrakashG/native-launcher GitHub Wiki

What's New in v0.2.0

Native Launcher 0.2.0 is a major feature release with 16 new features, 32 new tests, and comprehensive enhancements to session management, development tools, and UI customization.

🎉 Major Features

🪟 Session Management

Session Switcher (@switch, @sw)

Switch between running windows and VS Code workspaces instantly.

Features:

  • Auto-detects Hyprland/Sway compositor
  • Aggregates running windows with titles and classes
  • Scans VS Code workspace storage
  • 3-second cache for fast repeated queries
  • Focus windows via compositor commands

Usage:

@switch firefox    # Find Firefox windows
@switch code       # Find VS Code windows/workspaces
@sw terminal       # Quick alias

Technical: 11 tests, lazy loading with OnceLock

Window Management (@wm, @window)

Control window layout and behavior from the launcher.

Available Actions:

  • Move to Workspace 1-5
  • Center Window
  • Toggle Fullscreen
  • Toggle Floating
  • Pin/Sticky (all workspaces)
  • Close Window
  • Move Window (Left/Right/Up/Down)

Usage:

@wm workspace 2    # Move active window to workspace 2
@wm center         # Center active window
@wm fullscreen     # Toggle fullscreen
@window float      # Toggle floating mode

Technical: 11 tests, Hyprland & Sway support


💻 Development Tools

Git Projects (@git, @repo)

Find and open git repositories in your default editor.

Features:

  • Scans 4 common directories: ~/code, ~/projects, ~/dev, ~/workspace
  • Depth-2 traversal to find nested repositories
  • Displays current branch information
  • Smart editor detection (VISUAL, EDITOR, common editors)
  • Lazy loading with 10ms budget

Usage:

@git native-launcher    # Find native-launcher repo
@repo website           # Find website repo
@git my-project         # Open in default editor

Technical: 7 tests, OnceLock caching


🎯 Enhanced User Experience

Inline Result Actions

Quick keyboard shortcuts for common operations.

Actions:

  • Alt+Enter: Open containing folder
  • Ctrl+Enter: Copy path to clipboard (window stays open)

Plugins:

  • Works with Files plugin (@files)
  • Works with Recent Documents plugin (@recent)

Benefits:

  • No mouse needed for common workflows
  • Clipboard copy doesn't interrupt your work
  • Faster folder navigation

Icon Badges

Visual indicators on result rows to quickly identify item types.

Badge Types:

Badge Icon Used For
Terminal 🖥️ Terminal=true apps, SSH connections
Web 🌐 Web search results
Document 📄 File results
Folder 📁 Directories, git repositories

Visual Design:

  • 16px symbolic icons
  • 60% opacity (default)
  • 90% opacity (selected) with coral accent
  • Smooth transitions (0.08s)

🎨 UI Customization

Density Toggle

Adjust UI spacing to your preference.

Modes:

  • Compact: Tighter spacing (10px padding, smaller fonts)
  • Comfortable: Default spacious layout (14px padding)

Configuration:

[ui]
density = "compact"  # or "comfortable"

Technical: CSS-based, instant switching, zero overhead

Theme Accent Variants

Choose from 7 accent colors to personalize your launcher.

Available Accents:

Color Hex Description
Coral (default) #ff6363 Warm, energetic red
Teal #5eead4 Cool, modern cyan
Violet #a78bfa Rich, elegant purple
Blue #60a5fa Classic, trustworthy
Green #34d399 Fresh, natural
Orange #fb923c Vibrant, friendly
Pink #f472b6 Playful, warm

Configuration:

[ui]
accent = "teal"  # or coral, violet, blue, green, orange, pink

Technical: CSS variables, instant switching, no relaunch needed

Category-Based Icon Fallback

Intelligent icon resolution for apps without Icon= field.

Features:

  • Maps 150+ freedesktop.org categories to appropriate icons
  • Three-tier fallback: explicit → category-based → generic
  • 100% local (no external APIs)
  • Privacy-respecting

Examples:

Category Icon Apps
Development 🔧 IDEs, debuggers
WebBrowser 🌐 Firefox, Chrome
TextEditor 📝 Vim, Nano
AudioVideo 🎵 VLC, MPV
Game 🎮 Steam games

Technical: 9 new tests, cached lookups, <1ms per resolution


📸 Media & Screenshots

Screenshot Annotation (@ss annotate)

Edit screenshots before saving with Swappy integration.

Modes:

  • Annotate Fullscreen
  • Annotate Window
  • Annotate Area

Workflow:

  1. Capture screenshot
  2. Pipe to Swappy for editing
  3. Optionally copy to clipboard
  4. Save to file

Usage:

@ss annotate         # Show all modes
@ss annotate full    # Annotate fullscreen

Technical: 6 tests, graceful degradation when swappy not installed

Recent Documents (@recent, @r)

Access recently opened files with human-readable timestamps.

Features:

  • Parses ~/.local/share/recently-used.xbel
  • Top 200 recent entries
  • File categorization (Text, Image, Video, PDF, etc.)
  • Human-readable time ("5m ago", "3d ago", "2w ago")
  • Opens with default handler (xdg-open)

Usage:

@recent config       # Find recent config files
@r document          # Find recent documents

Technical: 8 tests, lightweight XML parser


🚀 Performance Improvements

Usage Learning v2

Time-decay system that learns your app usage patterns.

Features:

  • Hour-of-day boost: Up to 30% boost for frequently used hours
  • Launch history: Tracks last 100 launches per app
  • Exponential time decay: 7-day half-life
  • Pattern recognition: Analyzes 24-hour usage patterns

How It Works:

If you often use VS Code at 9 AM:
- 9 AM: VS Code gets 30% boost
- Other hours: Normal scoring

If you launched Firefox 5 mins ago:
- Recent launch: High score
- 7 days old: 50% score
- 14 days old: 25% score

Technical: 9 tests, O(1) runtime with precomputed scores

Enhanced Fuzzy Search

Improved search scoring for better matches.

Enhancements:

  • Acronym matching: vsc → Visual Studio Code
  • Word boundary detection: studio → Studio One (prioritized)
  • Case-sensitivity bonus: +2000 for exact case match
  • Exec field matching: google-chrome → Chrome
  • Minimum score threshold: Filters low-quality matches
  • Performance optimizations: Caching and early exits

Technical: 8 new tests, ~1ms additional overhead

Compiler Optimizations

Aggressive optimization for maximum performance.

Changes:

  • Fat LTO (link-time optimization)
  • panic = "abort" (smaller binary)
  • Inline hints for hot paths
  • Lazy loading with OnceLock
  • Memory pre-allocation

Results:

  • Startup: 34-35ms (maintained)
  • Binary: 7.8MB (optimized)
  • Build: 59s (with full optimizations)

📊 Statistics

Test Coverage

  • 150 tests (up from 118)
  • 32 new tests across new features
  • Zero regressions in existing functionality
  • All tests passing

Performance

  • Startup: 34-35ms (consistent)
  • Search: <10ms for 500 apps
  • Memory: ~20MB idle
  • Binary Size: 7.8MB (stripped with fat LTO)

Code Quality

  • Zero breaking changes
  • Backward-compatible config
  • Comprehensive documentation
  • All warnings resolved

🔧 Configuration

New Config Options

[ui]
# Density mode (compact or comfortable)
density = "comfortable"

# Accent color (coral, teal, violet, blue, green, orange, pink)
accent = "coral"

[plugins]
# Enable session switcher (default: true)
session_switcher = true

# Enable git projects (default: true)
git_projects = true

# Enable recent documents (default: true)
recent_documents = true

# Enable window management (default: true)
window_management = true

📚 Documentation

New Documentation

Updated Documentation

  • README.md - New features and command prefixes
  • CHANGELOG.md - Comprehensive release notes
  • Wiki Home - Updated feature list and recent changes

🎯 Upgrade Path

From 0.1.x to 0.2.0

No breaking changes! Your existing config and setup will continue to work.

Optional: Add new config options to enable customization:

# Backup your config
cp ~/.config/native-launcher/config.toml ~/.config/native-launcher/config.toml.backup

# Edit config to add new options (optional)
# All new features work with defaults

New Plugins: All new plugins are enabled by default but can be disabled:

[plugins]
session_switcher = false   # Disable if not using Hyprland/Sway
git_projects = false        # Disable if not developing
window_management = false   # Disable if not needed

🙏 Contributors

This release represents significant work across multiple areas:

  • 16 new features
  • 32 new tests
  • 7 files modified for icons
  • 150+ category mappings
  • Comprehensive documentation

Thank you to all users who provided feedback and tested early versions!


🔮 What's Next

See TODO.md for planned features:

  • Workflow chains (@do) - Automation pipelines
  • Quick toggles (@toggle) - WiFi/Bluetooth/DND
  • Icon cache v2 - Memory-mapped icon cache
  • Installer improvements - Versioned binaries
  • And more!

Ready to upgrade? Install the latest version:

curl -fsSL https://raw.githubusercontent.com/ArunPrakashG/native-launcher/main/install.sh | bash