OrgEleCho / CurvaLauncher

Simple, light, and fast desktop launcher. 简单、轻量、快速的桌面启动器.
MIT License
187 stars 16 forks source link
![Icon](https://github.com/Shomnipotence/CurvaLauncher/assets/6630660/15db0d13-49b9-4dcf-bd9c-4fdf559ddb70) # CurvaLauncher ✨ *Simple, light, and fast desktop launcher* ✨ [![License](https://img.shields.io/github/license/OrgEleCho/CurvaLauncher )](LICENSE.txt) [![Version](https://img.shields.io/github/v/release/OrgEleCho/CurvaLauncher?include_prereleases )](https://github.com/OrgEleCho/CurvaLauncher/releases) / [![EN-US](https://img.shields.io/badge/EN-US-blue)](README.md) [![ZH-Hans](https://img.shields.io/badge/中文-简体-red)](README.zh.md) [![DE](https://img.shields.io/badge/DE-de)](README.de.md)


Introduction

CurvaLauncher is a simple desktop launcher for Windows.


Installation

  1. Download the Latest release.
  2. Unzip it, and you will can find CurvaLauncher.exe in the directory.
  3. Run CurvaLauncher.exe and enjoy it!

Notice: Ensure that the .NET Desktop Runtime 8.0.0 (x64) is installed on your computer.


Usage

Tips: Some invoking result are copied to the clipboard.


Plugins

Most of CurvaLauncher's features are available in the form of plugins

Build-in Plugins


Create your own

  1. Clone the repository code.
  2. Create a new project with the target framework net8.0-windows.
  3. Add 'CurvaLauncher.Plugin' to the project reference.
  4. Create a plugin class that implements the ISyncPlugin or IAsyncPlugin interface.
  5. Implement the interface members, and write the main logic.

Tip: Synchronous and asynchronous plug-ins indicate whether your plug-in performs queries synchronously or asynchronously. You can choose one of them based on your plug-in logic. Query results are also divided into synchronous and asynchronous, just inherit the corresponding QueryResult.

For example, a translator plug-in returns immediately after triggering a keyword. It does not require any asynchronous operation, so the plug-in is synchronous. However, when the user presses Enter to perform a translation operation, this process requires a network request. In other words, this plug-in The result is asynchronous, so you should use ISyncPlugin and AsyncQueryResult to implement this plugin.


Thanks




Preview ![](/assets/preview2.png) ![](/assets/preview4.png)