A terminal-based application for searching, downloading, and managing Visual Studio Code extensions (VSIX files). Built using the Textual framework, this application provides a TUI (Text-based User Interface) for seamless navigation and efficient extension management.
Primarily for Linux users who cannot find or install VS Code extensions directly through their editor and are unable to access download links on the marketplace website.
Disclaimer: This project utilizes a non-public Visual Studio Marketplace API that is not intended for use outside of Microsoft products. Use this application at your own discretion.
After opening the application.

Before searching.

Search Screen.

Main Screen after downloading.

- Search Functionality: Query the Visual Studio Marketplace for extensions by name or publisher.
- Download Management: Monitor download progress with a dynamic progress widget.
- Extension Details: View metadata for each extension, including publisher, version, and description.
- Interactive UI: Navigate screens and manage downloads with ease using a terminal-based interface.
install uv via following the instructions on their website.
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or
wget -qO- https://astral.sh/uv/install.sh | shpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"pipx install uvpip install uvgit clone https://github.com/JaINTP/vdl.git
cd vdlBuild the project using uv:
uv buildInstall as a uv tool:
# Install the latest build
uv tool install dist/vdl-0.1.0-py3-none-any.whlLaunch the application:
uv tool run vdl
# Or
uvx vdl
# Or, if UV installed it to ~/.local/bin
vdl-
Search for Extensions:
- Use the search bar on the main screen to enter a publisher name or extension name.
- Click the "Search" button to query the marketplace.
-
View Extension Details:
- Select an extension from the search results to view detailed metadata.
-
Download Extensions:
- Click the "Download" button for a selected extension to initiate the download process.
- Monitor progress in the progress list.
VSIX Downloader/
├── src/
│ ├── vdl/
│ │ ├── downloader/
│ │ │ ├── __init__.py
│ │ │ ├── download_manager.py # Manages the download process
│ │ │ ├── vsix_api_handler.py # Handles API requests to the marketplace
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── extension.py # Data model for extensions
│ │ ├── tui/
│ │ │ ├── __init__.py
│ │ │ ├── app.py # Main Textual application module
│ │ │ ├── screens/
│ │ │ │ ├── main_screen.py # Main interface for search and downloads
│ │ │ │ ├── search_screen.py # Displays search results
│ │ │ ├── widgets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── download_progress_widget.py # Tracks download progress
│ │ │ │ ├── extension_widget.py # Displays extension details
│ │ │ │ ├── search_widget.py # Search input and button widget
│ ├── styles.tcss # Terminal styles for the application
├── __main__.py # Entry point for the application
- API Disclaimer: This application uses a non-public Visual Studio Marketplace API that is not officially documented or intended for external use.
- Experimental Status: This project is a proof-of-concept and may not be suitable for production environments.
- Bug Reports: Contributions for bug fixes and enhancements are greatly appreciated.
- Python 3.12+
- Dependencies managed through
uv
Note: Compatibility issues have been observed with Python 3.13 due to pydantic/pydantic-core.
Contributions are welcome! Follow these steps to get started:
- Fork the repository.
- Create a new branch for your feature or bug fix:
git checkout -b my-feature
- Commit your changes:
git commit -m "Add my feature" - Push your changes to your branch:
git push origin my-feature
- Open a pull request on GitHub.
- Ensure the project is functional.
- Handle cases with zero returned search results
(e.g., replace the VerticalScroll container with a static element). - Implement caching for API requests with an expiry mechanism.
- Improve the CSS for better visual design.
- Add a user-customizable configuration file.
- Develop a settings screen for user customization.
- Introduce multiple themes for enhanced user experience.
This project is distributed under the MIT License.
- Textual Framework: For providing the foundation for this terminal-based UI application.
- My partner, GIzmo: For pretending she gave a shit about the project while I talked about it.
