1
Advanced Features
Storm Dragon edited this page 2025-07-30 15:30:36 -04:00

Advanced Features

TTYverse offers powerful features for experienced users, including customization options, advanced posting features, automation capabilities, and system integration.

Advanced Posting Features

Visibility Control

TTYverse supports all fediverse visibility levels with indicators:

# Posts show visibility in metadata line:
a0> {,POST_ID} <username> (2h ago) via TTYverse [Public]
a1> {,POST_ID} <username> (1h ago) via TTYverse [Unlisted]  
a2> {,POST_ID} <username> (30m ago) via TTYverse [Followers]
a3> {,POST_ID} <username> (5m ago) via TTYverse [Direct]

Visibility levels:

  • [Public] - Visible to everyone, appears in local/federated timelines
  • [Unlisted] - Public but not in discovery timelines
  • [Followers] - Only visible to your followers
  • [Direct] - Only visible to mentioned users (like DMs)

Advanced Media Features

Media attachment with post text:

/media /path/to/image.jpg Check out this amazing sunset from my hike today!

Multiple media formats supported:

  • Images: JPEG, PNG, GIF, WebP (alt-text required)
  • Audio: MP3, OGG, WAV, FLAC, M4A
  • Video: MP4, WebM, MOV

Accessibility enforcement: TTYverse requires alt-text for images and cancels uploads without descriptions:

-- Upload cancelled: Alt-text is required for images
-- If you're going to use a client maintained by a blind guy, you can damn well describe your images!

Content Warnings

Posts with content warnings display in brackets on the metadata line:

a5> {,POST_ID} <username> (1h ago) via Web [Public] [CW: Politics]
    [Content warning text appears here] Click to show content...

Thread Navigation

View conversation threads:

/thread a3    # View the full conversation thread for post a3

Shows the complete conversation context with proper threading.

Advanced Timeline Features

Multiple Timeline Types

Access different content streams:

/timeline home         # Your personalized feed (default)
/timeline local        # Local instance posts
/timeline federated    # Federated timeline
/timeline public       # Same as local
/timeline notifications # Your notifications
/timeline bookmarks    # Your bookmarked posts
/timeline favourites   # Your favorite posts

Timeline Filtering and Management

Historical timeline access:

/last 20              # Show last 20 cached posts
/again                # Load more posts from current timeline
/refresh              # Force refresh current timeline

User-specific timelines:

/again @username      # View recent posts from specific user
/wagain @username     # View all recent activity from user

Advanced Search Features

Comprehensive Search Options

Search types:

/search #hashtag              # Search hashtags
/search @user@instance.com    # Find specific users
/search "exact phrase"        # Search post content
/search keyword               # General content search

Advanced search operators:

  • Use quotes for exact phrases
  • Include instance names for cross-server user searches
  • Combine terms for refined results

Extensions and Customization

Sound Notification System

TTYverse includes 11 distinct notification types:

Notification categories:

  • default - General timeline posts
  • mention - Posts that mention you
  • dm - Direct messages
  • me - Your own posts appearing in timeline
  • search - Search result notifications
  • follow - New follower notifications
  • boost - When someone boosts your posts
  • favourite - When someone favorites your posts
  • poll - Poll-related notifications
  • edit - Post edit notifications
  • announcement - Instance announcements

Configuration:

# In ~/.config/ttyverse/ttyverserc
notifytype=soundpack
notifies=mention,dm,boost,favourite,follow
extpref_sound_command=paplay

Extension Loading

Available core extensions:

  • soundpack - Audio notifications with 11 sound categories
  • timestamp - Enhanced timestamp display with time gaps
  • tts - Text-to-speech for accessibility
  • libnotifyperl - Desktop notification bubbles
  • r2a - Additional automation features

Load extensions at startup:

./ttyverse.pl -exts=soundpack,tts,timestamp

Runtime extension management:

# Extensions are loaded from:
~/.local/share/ttyverse/extensions/

# Sound files stored in:
~/.local/share/ttyverse/sounds/default/

Advanced Configuration

Runtime Configuration Changes

Modify settings while running:

/set effpause 300        # Change refresh interval to 5 minutes
/set gui_browser firefox # Set preferred GUI browser
/set cli_browser w3m     # Set preferred CLI browser

/get effpause           # Check current setting

Common advanced settings:

  • effpause - Timeline refresh interval (seconds)
  • dmpause - Direct message refresh interval
  • notificationpause - Notification refresh interval
  • ansi - Color/formatting support
  • verbose - Detailed output mode
  • superverbose - Debug-level output

Configuration File Management

XDG-compliant storage:

  • Config: ~/.config/ttyverse/ttyverserc
  • Data: ~/.local/share/ttyverse/
  • Extensions: ~/.local/share/ttyverse/extensions/
  • Sounds: ~/.local/share/ttyverse/sounds/

Create default config:

./ttyverse.pl -createrc

Multi-Process Architecture

Background Process Management

TTYverse uses a sophisticated multi-process design:

Foreground process:

  • Handles user interaction
  • Displays posts and responses
  • Processes commands

Background process:

  • Monitors timelines
  • Fetches new posts
  • Handles notifications
  • Manages DM updates

Inter-Process Communication (IPC):

  • Uses pipes and signals (SIGUSR2)
  • Coordinates between processes
  • Ensures smooth user experience

Process Control

System integration:

  • Proper signal handling for POSIX compatibility
  • Clean shutdown and restart procedures
  • Background monitoring without blocking UI

Advanced URL Handling

Smart Browser Detection

TTYverse automatically detects your environment:

GUI environment (DISPLAY set):

  • Firefox, Chrome, Chromium
  • System default browser
  • User-configured GUI browser

Terminal environment:

  • w3m, elinks, lynx
  • User-configured CLI browser

URL extraction priorities:

  1. Mastodon media_attachments with URLs
  2. Explicit URLs in post content
  3. Card URLs from link previews
  4. Entity URLs from structured data
  5. Plain text URL parsing (fallback)

URL Command Usage

/url a3                 # Open URL from post a3

Opens the most relevant URL from the post using your environment's optimal browser.

Network and API Features

Rate Limit Management

Monitor API usage:

/rate                   # Show current rate limit status

TTYverse automatically handles rate limiting and provides notifications when limits are approached.

OAuth 2.0 Authentication

Secure authentication:

  • Modern OAuth 2.0 flow (OAuth 1.0a removed)
  • Server-side token storage
  • Automatic token refresh
  • Cross-instance compatibility

Troubleshooting authentication:

# Remove and recreate authentication
rm ~/.config/ttyverse/*
./ttyverse.pl           # Will prompt for re-authentication

Advanced Interaction Features

Comprehensive User Management

User information and interaction:

/whois @user@instance.com    # Detailed user information
/follow @user               # Follow user
/unfollow @user            # Unfollow user
/block @user               # Block user
/unblock @user             # Unblock user
/mute @user                # Mute user
/unmute @user              # Unmute user

Follower/following management:

/followers              # Your followers
/followers @user        # User's followers  
/followers +50          # Show up to 50 followers
/following              # Who you follow
/following @user +30    # Show 30 accounts user follows

Advanced Poll Features

Poll creation with custom durations:

/poll Question text
# Supports: 90m, 12h, 3d, 1w formats

Complex voting patterns:

/vote a3 1,3,5         # Vote multiple options
/vote a3 1-4           # Vote range of options
/vote a3 2,5-7,9       # Vote mixed patterns

Performance Optimization

Memory and Network Efficiency

Optimized caching:

  • Post caching for /last command
  • Smart timeline refresh logic
  • Efficient IPC communication

Network optimization:

  • Conditional requests where supported
  • Minimal API calls for routine operations
  • Background fetch without blocking UI

Resource Management

Long-running session optimization:

  • Memory usage monitoring
  • Proper cleanup of temporary data
  • Signal handling for clean shutdown

Debugging and Troubleshooting

Debug Modes

Verbose output:

/verbose               # Toggle detailed output
/debug                 # Toggle debug information
./ttyverse.pl -verbose # Start with verbose mode

Debug information includes:

  • API request/response details
  • Extension loading status
  • IPC communication logging
  • Network connection status

System Integration Debugging

Test system components:

# Test audio system
paplay ~/.local/share/ttyverse/sounds/default/default.ogg

# Test browser integration
echo $DISPLAY          # Check GUI environment
which w3m elinks lynx  # Check CLI browsers

# Test authentication
/refresh               # Test API access

Accessibility Features

Screen Reader Compatibility

Design principles:

  • All output is plain text
  • Consistent post formatting
  • Logical tab order and navigation
  • Audio feedback for events

Alt-text enforcement: TTYverse prioritizes accessibility by requiring image descriptions, supporting screen readers through consistent formatting, and providing audio notifications.

Keyboard-Only Operation

Complete keyboard navigation:

  • No mouse required anywhere
  • Command history with arrow keys
  • Tab completion for commands
  • Accessible menu code system

Integration with Fediverse Ecosystem

Cross-Instance Features

Multi-server compatibility:

  • Works with Mastodon, GoToSocial, Pleroma
  • Handles different API implementations
  • Adapts to server-specific features
  • Cross-instance user lookup and interaction

Server feature detection:

  • Polls (varies by server)
  • Media limits (server-dependent)
  • Timeline types (server-specific)
  • API extensions (optional features)

See also: Configuration | Extensions | Troubleshooting