Giter VIP home page Giter VIP logo

parthjadhav / verve Goto Github PK

View Code? Open in Web Editor NEW
609.0 7.0 24.0 6.35 MB

Verve is a lightweight and blazingly fast launcher for accessing and opening applications, files and documents. ⚡

License: GNU Affero General Public License v3.0

HTML 0.70% Rust 49.20% TypeScript 9.67% Svelte 38.57% CSS 1.46% JavaScript 0.40%
rust alfred cmd-k launcher raycast rust-lang spotlight svelte typescript verve

verve's Introduction

Verve

Verve App Logo

Verve is a lightweight and blazingly fast launcher for accessing and opening applications, files and documents. It serves as a replacement for popular tools such as Spotlight, Raycast, and Alfred, and is written in the Rust programming language using the Tauri Framework.

🚧 Despite being in the early stages of development, Verve is already showing great promise as a reliable and efficient tool for organizing and accessing important information on your computer. We are actively seeking contributors to help us continue improving and expanding the capabilities of Verve. If you are interested in getting involved and making a positive impact on this exciting project, we welcome your participation.

⛰️ Preview

If preview is not loaded, please visit here preview gif.

Verve App Preview drawing

🚀 Features

drawing

📥 Downloading

To download Verve, visit the releases section of the project's repository on GitHub. There, you will find the latest version of the app available for download in the form of a DMG file. Simply click on the download link and follow the prompts to install the app on your computer.

📌 It's worth noting that the default shortcut for opening Verve is CMD + Shift + G, and this can be changed from the preferences section within the app. This allows you to customize the app to your specific needs and preferences, making it even more convenient and easy to use.

🎨 Themes

Verve theme is stored in:

/Users/<Username>/Library/Application Support/com.parth-jadhav.verve/theme.json

Editing the theme file will change the theme of the app. Restart the app to see the changes.

Download themes: Themes

Contributions would be amazing 👆

💫 Upcoming Features

  • Extension support Linked Issue
  • Add a calculator feature that allows users to perform calculations and conversions using natural language input Linked Issue
  • Add a scroll feature to display all search results Linked Issue
  • Replace icons with generic extension-based icons Linked Issue
  • Create a Homebrew package for easy installation Linked Issue
  • Implement an algorithm to search within Preferences Linked Issue
  • Allow users to change the full search path Linked Issue

❤️ Donations & Support

Verve is an open-source project, and we rely on the support of our community to continue developing and improving the application. Although Verve is free to use, we welcome donations from those who have found it to be a valuable tool and would like to contribute to its development.

Your donations will help us to fund development efforts and speed up the pace of progress on the project. We are committed to continuing to improve and expand the capabilities of Verve, and your support will allow us to do so more quickly and effectively.

Please note that Verve is and will always be free to use. Your donation is entirely voluntary and will not be required in order to continue using the application. However, if you are able to contribute and would like to support the development of Verve, we appreciate your generosity and support. Thank you for considering a donation.

Buy Me a Coffee at ko-fi.com

Find more options on right side of this page. Or by clicking Sponsor ❤️ button on top of this page.

🤝 Contributing

To get Verve set up on your machine, you'll need to have Rust and Yarn installed. Then, follow these steps:

  1. Clone the project using git clone https://github.com/ParthJadhav/verve.git
  2. Change into the project directory: cd verve
  3. Install dependencies: yarn
  4. Run the development server: yarn tauri dev

If you encounter any issues, try running yarn tauri build after installing dependencies.

🛠️ Building for Production

Adding Targets

rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-darwin

Building

yarn package-and-build

This will create a production build of the app both aarch64 & x86_64 systems in the src-tauri/target directory.

All contributions from the open-source community, individuals, and partners are welcomed. Our achievement is a result of your active participation.

Checkout Issues section to find out what needs to be done.

Contributing guidelines

Code of conduct

📝 License

Verve is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE. See the LICENSE file for more information.

verve's People

Contributors

benediktms avatar imgbot[bot] avatar parthjadhav avatar poegl avatar ty3uk avatar xithrius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

verve's Issues

Check if valid shortcut

This task involves checking if the shortcut specified by the user is valid and meets certain criteria (e.g. not already in use by another application).

Calculations support

This task involves adding a calculator feature to the application that allows users to perform calculations and conversions using normal language. The calculator will be able to understand mathematical expressions and equations written in a natural language format, such as "10 + 20" or "20 times 49". This will allow users to input calculations and conversions in a way that is similar to how they would be written on paper or spoken aloud.

To implement this feature, you will likely need to use a library or tool that is capable of parsing and evaluating mathematical expressions written in natural language. One example of such a library is the Alfred Calculate Anything library (https://github.com/biati-digital/alfred-calculate-anything). Once you have a library or tool in place, you will need to integrate it into Verve and create a user interface for the calculator feature, such as a text input field for the user to enter their calculations and a display area to show the results.

In addition to basic arithmetic operations (e.g. addition, subtraction, multiplication, division), the calculator feature should also be able to handle more complex operations, such as square roots, exponents, and trigonometric functions. It should also be able to handle unit conversions, such as converting between different units of length, mass, or volume.

Shortcut hotkey not based on keyboard layout.

Shortcut is based on standard keys layout rather than the actual input given. To reproduce:

  1. Set keyboard layout to colemak.
  2. Open verve preferences.
  3. Set Hotkey to Cmd+Shift+F

Now Cmd+Shift+F will not open Verve, but Cmd+Shift+T will.


As an aside, after installing on MB M1 Pro, I got damaged and can't be opened which had to be circumvented with xattr -cr /Applications/verve.app. Also, the app often opens lower and lower until it is off the screen and not usable, then at some point pops back up to the middle.

add linux support 🚀

Changes required:

  1. Changing this to include linux release.

    "targets": ["app"],

  2. Changing the paths below to work for Linux file system, Might need to research a bit on how to add platform specific logic. Creating a struct with the platform specific paths would be a good idea.

    pub async fn handle_input(input: String) -> (Vec<String>, f32, i32) {
    let mut result: Vec<String>;
    let mut result_type: ResultType;
    let start_time = Instant::now();
    if !input.starts_with("/") {
    result = search(
    input.as_str(),
    vec![
    "/Applications",
    "/System/Applications",
    "/System/Applications/Utilities",
    ],
    Some(".app"),
    Some(1),
    );
    similarity_sort(&mut result, input.as_str());
    result_type = ResultType::Applications;
    } else {
    result = search(
    input.trim_start_matches("/"),
    vec!["/Users/"],
    None,
    Some(10000),
    );
    println!("{:?}", result);
    result_type = ResultType::Files;
    }
    if result.len() == 0 {
    let calculation_result = calculate(input.as_str());
    if calculation_result != "" {
    result.push(calculation_result);
    result_type = ResultType::Calculation;
    }
    }
    let time_taken = start_time.elapsed().as_secs_f32();
    return (result, time_taken, result_type as i32);
    }

  3. Might need to update the command below to support opening apps on linux.

    #[tauri::command]
    pub fn open_command(path: &str) {
    Command::new("open")
    .arg(path.trim())
    .spawn()
    .expect("failed to execute process");
    }

  4. Below Path may also need updation:

    #[tauri::command]
    pub fn launch_on_login(enable: bool) -> bool {
    let auto = AutoLaunchBuilder::new()
    .set_app_name("verve")
    .set_app_path("/Applications/verve.app")
    .build()
    .unwrap();

  5. Might need to figure out how to derive icons on linux systems...

    pub fn convert_all_app_icons_to_png() {
    let result: Vec<String> = SearchBuilder::default()
    .location("/Applications")
    .more_locations(vec![
    "/System/Applications",
    "/System/Applications/Utilities",
    ])
    .depth(1)
    .ext(".app")
    .ignore_case()
    .build()
    .collect();
    for app_path in result {
    let app_name = app_path.split("/").last().unwrap();
    let icon_path = get_icon_path(&app_path);
    if icon_path != "" {
    convert_and_store_icons(&icon_path, app_name);
    }
    }
    }

  6. This shortcut might need to be updated to META + Shift + G

    shortcut: String::from("Command+Shift+G"),

    shortcutArray = ["Command", "Shift", "G"];

    .map((key) => key)
    .join(" + ")
    .replace("Meta", "")
    .replace("Command", "")
    .replace("Control", "")
    .replace("Alt", "")
    .replace("Shift", "")

There might be more changes, Depending on the arising issues. Please do ping below if you want to create sub-issues for all of those...

Application won't run/start

I'm sure this is a user error but here goes. I install the app (x86_64), run it, hit cmd+shift+g, and nothing. I check in activity monitor i can't find any process by the name 'verve.'

If i install the aarch64 version, i get this error: #16.

Much appreciated if you can point me in the right direction or some error messages or logs :) Thanks!

Replace generic icon with extension based icons

Currently when a user searches through /search-term the icons of the results are same: ./src-tauri/assets/default.svg
This task involves replacing the generic icon with extension based icons.

display full path for file search

When searching for files the path is not displayed which can get confusing, especially when you have many projects that use a similar pattern when naming files, or when compiled/transpiled files maintain the same file name:

Screenshot 2023-01-10 at 00 46 21

It would probably be beneficial to display the file path, and perhaps de-prioritise certain directories, e.g. folders with the name dist or target etc.

Add Theme's & Customisation

This task involves adding an interface in the Preferences window that allows users to change the colors of the application based on their preference. The colors are currently specified in the ./src/styles.css file, and the goal is to give users the ability to customize those colors to their liking.

v0.3.2 is broken.

Download v0.3.2 and tried to launch, but macOS reports verce is broken.

Display Paths from parent git repository in full search

currently only 2 parent folders are displayed: fileParentDir/fileDir/fileName. This is better but for files that are nested deeper, e.g. app/pages/page1/components/index.ts This pattern might have lots of folder named components and lots of files named index.ts. In cases like this there are 2 solutions:

  1. Always display the absoute path from the home directory
  2. Display the absolute path from the git repository root.

Both options are fine but probably option 2 is better. In cases where the total path name is very long, we should truncate the final output to not clutter the UI. E.g.:

some-project/app/pages/feature/componets/edit/state.ts

could become

some-project/.../components/edit/state.ts

otherwise depending on how deeply nested the file is, the full file path might not fit in the results view because it is too wide.

Originally posted by @benediktms in #38 (comment)

Create an Indicator when App is opened first time

Verve being an menu bar app, it doesn't display that it has been opened or not except for the menu bar icon. It would be better if we add an indicator or open the preferences tab each time the app is opened.

Verve.app is damaged and can't be opened

I'm getting the following error message "Verve.app is damaged and can't be opened" when I try to run Verve. This is with the aarch64 build on an M1 Pro processor running macOS Ventura (13.0.1).

Screenshot 2022-12-29 at 16 28 20

Add Linting

This task involves adding linting to the application codebase to ensure that it follows a consistent style and adheres to best practices.

Adding Extension Support to Verve

We are considering adding extension support to Verve, which would allow users to create scripts or programs that extend the functionality of the application. This would be a challenging task to implement, but we believe it would greatly enhance the utility of Verve for our users.

One potential way to implement extension support is by using a wasm runtime (such as wasmtime) to embed a wasm runtime into the app and load 3rd party plugins as wasm modules. This would give us fine-grained control over security and exposed APIs, and would allow us to use codegen utilities (such as rust, assemblyscript, and c) to create binding libraries that compile to wasm. Third-party developers (or ourselves) could then use these libraries to compile their code to wasm and create working extensions in a secure way.

We are open to suggestions and ideas about how best to implement extension support in Verve. If you have any thoughts or recommendations on this topic, please let us know in the comments.

Side notes:
The above approach was suggested by -> https://github.com/JonasKruckenberg

Install Via Homebrew

This task involves creating a Homebrew package for the application so that users can easily install it using the Homebrew package manager.

Make a windows version

Can you provide a windows version ? By hiding default design, and frame to hidden ?
ty

Allow users to change FULL Search Path

Currently /search-term would only search in /users directory. This task would involve adding a control in Preferences window to change that path or add additional paths to search in.

Add scroll feature to display all results

This task involves adding a scroll feature to the application to allow users to view all of the search results, rather than just a limited number which is 5 currently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.