Hello everyone! I decided to create an application launcher inspired by Raycast, but for Linux - Flux

I built the first version in 4-5 days and wanted to share it with you to get feedback, both good and bad.

Some highlights:

~0.1-0.2s opening time

~35MB RAM usage

Written in Rust using the Iced GUI framework

Instant search filtering

Supports Breeze, Papirus, and Adwaita icon themes

Works with system apps, user apps, and Flatpaks

Current features in v0.1:

Search and launch applications

Press Enter or click to open apps

ESC to close

Caching

Planned for v0.2:

Arrow key navigation

Built-in calculator for math expressions

More customization options

I’m 14 and this is my first major open-source project. I’d love to hear your feedback on features, performance, code quality, or any bugs you find.

Github: https://github.com/mxghj/Flux

Tested on Arch Linux with Hyprland, should work on most distros

Hope you have an awesome day!

    • mxghj@programming.devOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      2 hours ago

      Flux can also be customized but need to change colors in app code

      there is an catppuccin frappe example

    • mxghj@programming.devOP
      link
      fedilink
      arrow-up
      1
      ·
      3 hours ago

      There is one disadvantage and one advantage flux consumes 30-40 MB of RAM but has 0-3% CPU usage, while Anyrun consumes ~160 MB of RAM but has 0-1% CPU usage.

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    1 day ago

    A quick shallow look.

    • Avoid single hard paths. Provide fall-backs. Make them all configurable. Use xdg (properly)…etc.
    • Avoid .unwrap() or any source of panic!() for non-fatal things that can actually fail.
    • Make non strictly necessary fields optional in you model, if that helps.
    • Use .filter_map() and .collect() in your parsing code, instead of all the matches and continues in a for loop. You can use .ok()? to early-return with None on errors.
    • And finally, since you’re micro-benchmarking, try speedy or borsh instead of bincode, unless you need the serde compat for some reason.
  • [object Object]@lemmy.world
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    2 days ago

    Unfortunately, there’s already popular software called ‘flux’, or rather ‘f.lux’: the one that turns the screen redder in the evening to mirror the natural light. It’s the app that did it first, predating this function in the OSes, and still doing it better than most ‘native’ implementations.

  • madmo@programming.dev
    link
    fedilink
    arrow-up
    8
    ·
    2 days ago

    Nice project, I really like the minimal design!

    I also experienced a panic on image load.

    My rule of thumb for error handling: try to avoid unwrap. Use expect with a nice error message. And only use expect for stuff that should never fail. And bubbling up the errors to the top with ? is also useful.

      • thagoat@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        4
        ·
        1 day ago

        It’s working now, I’ll spend some time with it this week. So far, it seems stable and it responds to my keyboard shortcut. Has run everything I’ve searched for, and hasn’t crashed.

        That’s all in about 5 minutes of testing, but I’ll give it another review in a few dyas when I’ve had more time to put it through some paces.

        Good work so far!

        • mxghj@programming.devOP
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 day ago

          Thanks :), i have a few questions does it also consume ~30 mb of ram? and does it start up quickly?