- Timeline Viewing - Browse your Twitter timeline with real-time updates
- Tweet Composition - Compose and post new tweets with character count
- Search - Search tweets by keywords and hashtags
- User Profiles - View user profiles with follower/following counts
- Secure Storage - Credentials stored securely in system keyring
- Local Caching - Cached tweets for improved performance and offline viewing
- Modern UI - Clean, modern interface built with GTK4 and libadwaita
- Dark Mode - Follows system theme automatically
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y \
libgtk-4-dev \
libadwaita-1-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
pkg-config \
build-essential \
libssl-devFedora/RHEL:
sudo dnf install -y \
gtk4-devel \
libadwaita-devel \
gstreamer1-devel \
gstreamer1-plugins-base-devel \
pkg-config \
openssl-develArch Linux:
sudo pacman -S --needed \
gtk4 \
libadwaita \
gstreamer \
pkg-config \
base-develInstall Rust using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"# Clone the repository
git clone https://github.com/SwatDesignz/CawbirdX.git
cd CawbirdX
# Build in release mode
cargo build --release
# The binary will be at target/release/cawbirdx# Install to /usr/local/bin
sudo install -m 755 target/release/cawbirdx /usr/local/bin/cawbirdx
# Or run directly from the build directory
./target/release/cawbirdxCawbirdX uses the RapidAPI Twitter API. You'll need to:
- Sign up at RapidAPI
- Subscribe to a Twitter API (e.g., Twitter241)
- Get your API Key and Host
On first run, you'll be prompted to enter:
- API Key: Your RapidAPI key (e.g.,
RapidAPI key) - API Host: The RapidAPI host (e.g.,
twitter241.p.rapidapi.com)
Credentials are stored securely in your system keyring.
You can also set credentials via environment variables:
export RAPIDAPI_KEY="your_api_key"
export RAPIDAPI_HOST="twitter241.p.rapidapi.com"
cawbirdx# Run the application
cawbirdx
# Or with cargo
cargo run --release- View your home timeline
- Refresh with the refresh button
- Scroll to load more tweets
- Click the compose button (document icon)
- Type your tweet (280 character limit)
- Character count shown in real-time
- Click "Post" to send
- Enter search terms in the search bar
- Click the search button or press Enter
- Results appear in the timeline
- Click the settings button (gear icon)
- View application information
- Clear stored credentials
cawbirdx/
├── src/
│ ├── api/ # Twitter API client
│ ├── auth/ # Credential storage
│ ├── state/ # Local cache
│ ├── ui/ # UI components
│ ├── resources/ # GTK resources
│ ├── app.rs # Main application
│ └── main.rs # Entry point
├── Cargo.toml # Rust dependencies
├── build.rs # Build script
└── README.md # This file
Core Dependencies:
gtk4(0.7) - GTK4 bindingslibadwaita(0.5) - libadwaita bindingstokio(1.35) - Async runtimereqwest(0.11) - HTTP clientserde(1.0) - Serializationkeyring(1.2) - Secure credential storageheed(0.20) - LMDB database for caching
Development Dependencies:
glib-build-tools(0.18) - GTK resource compilation
# Debug build with logging
RUST_LOG=debug cargo run
# Run tests
cargo test
# Format code
cargo fmt
# Check code
cargo clippy# Build optimized release
cargo build --release
# The binary will be at target/release/cawbirdx
# Size is optimized with LTO and strippingGTK4 not found:
# Install GTK4 development libraries
sudo apt-get install libgtk-4-dev libadwaita-1-devResources not loading:
# Clean and rebuild
cargo clean
cargo build --releaseKeyring issues:
# Check if keyring is working
# On Linux, ensure you have a keyring backend installed
# (gnome-keyring, kwallet, etc.)Invalid credentials:
- Check your RapidAPI key and host
- Ensure your RapidAPI subscription is active
- Verify you have API quota remaining
Rate limiting:
- RapidAPI has rate limits per subscription
- Wait before making more requests
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Repository: https://github.com/SwatDesignz/CawbirdX
- Issues: https://github.com/SwatDesignz/CawbirdX/issues
- GTK4 and libadwaita teams for the excellent GUI framework
- RapidAPI for providing Twitter API access
- The Rust community for amazing tooling
- Direct Twitter API support (OAuth)
- Image/media upload support
- Thread viewing
- Lists support
- Notifications
- Direct messages
- Multiple account support
- Custom themes
- Keyboard navigation improvements
Made with ❤️ using Rust and GTK4
