Code Monkey home page Code Monkey logo

f9's People

Contributors

lwouis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

f9's Issues

Fix the icons on Windows 7

Use JNI? Manually invoke another language to do the job ? (e.g. python or C).

I already tried a lot of these solutions, and they are all hard to implement/maintain, fragile across versions of Windows.

Also this can be unit tested during #2 by checking that the resulting base64 code is the same as some mock data.

Localize the app

Provide localization so the app is accessible to users from different countries

Auto-add user apps

Add a popup on startup if the user has nothing yet in the app. Propose to add their apps for them.

This means parsing C:/Program Files/ and C:/Program Files(x86) once, then to main sync, check if something new showed up on a timer, or during startup (this can be a pref).

Note that if the user delete an app which was added automatically, we should not add it back on next update. It kind of signify a blacklisting from the user's perspective.

Add an import/export menu item

It would be useful to export your app list so people could check what app you use. Another use-case is people with multiple machines.

Make the search bar great again (fuzzy search)

Improve the algorithm on the search bar to account for typos, utf8 characters (e.g. typing "ete" to find "été.jpg"). This means both the filtering, and the sort order of the results.

Integrate the "it was recently used by the user" factor. Check how Z does its frecency.

Current plan is to use Apache Lucene.

Change the TrayIcon font

Current code in TrayIconManager.java is:

closeItem.setFont(new Font("Segoe UI", Font.PLAIN, 14));

This MenuItem.setFont(Font) API has a bug which makes it not apply.

Maybe some hack is possible (e.g. passing a child to this element then changing the child font, or maybe overriding the drawn pixels directly by subclassing or calling a method on TrayIcon.

Potential bug

DiskPersistanceManager.oneLevelDeepCopy is called within the background thread thus concurrency issues should still be possible.

Need to put that code into the UI thread. And test in-depth -> write unit tests.

Add UI tests

Use TestFX to make some UI tests:

  • the many keyboard manipulations
  • show/hide behaviour
  • drag&drop

Put in place CI

Use Travis for CI.

Compiles
All the tests from #2 and #5
Code coverage
Checkstyle
Sonar-like?

Handle production-mode and dev-mode

While in production-mode, the app shouldn't be logging to file but show a dialog with "send issue through email" or something.

Also for performance/size reasons, dev libs/code shouldn't be included with the production build. Maybe check the state of treeshaking in the Java world also.

Try to reduce file size by using something like Proguard.

Add edition of items in the list

Through right-click, and the menubar, the user should be able to update the item name, path, and launch arguments.

This also overlaps with #1 since editing an automatically-added app means that the app shouldn't be updated as the user "froze" it.

Implement delta update when saving application state

To save application state to disk, the current implem serialize state to JSON then write to disk. A better implementation would only write deltas to the current file.

Another benefit would be that updates done in background threads wouldn't need a copy of the observable list to avoid concurrency issues.

Visual glitch when typing search text

With every keystroke, the item list is filtered, but while refreshing the visual of each item, there is a flickr during which we can see another item for a brief moment. This only apply to the name section, not the path/icon

Test the app on different computers

I got surprised to see different icon behaviors at home/work. Also some .lnk files I had at work were crazy and unexpected.

Maybe #2 allow to simulate different environments? It allows headless so maybe it's possible to run it in VMs.

Also try multi-display, small display, and low-spec setups. See #5

Windows doesn't refresh the TrayIcon if the app if killed by a system signal

When the app is closed through the top-right cross button, and the "Quit" context menu on the system tray icon, everything is fine.

When the app is closed through Task Manager (by a SIGTERM/SIGKILL signal in general), the threads are closed, the JVM is deallocated, but Windows fails to clean the icon until the mouse hovers it.

I tried Runtime.getRuntime().addShutdownHook() which removes the icon when clicking on "Exit" on the bottom left in IntelliJ, but it doesn't fix kill the app after that.

Polish the display

Some points to improve:

  • selected item in the list is grey. It should be obvious that pressing enter will launch it
  • first result item line should be more prominent. Maybe the name could be in bold, or a different height for the row
  • combine the titlebar to be more vertical-space efficient, and have a denser interface for the in-the-spotlight front-and-center app.
  • the app in general could be skinned for more visual delight

Add app icon

Add app icon (different from windows installer/distribution)

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.