Git Product home page Git Product logo

espanso_gui's Introduction

espanso_gui

Espanso GUI is a graphical user interface for the text expander Espanso. It works by reading files in Espanso's matches directory and rendering them as tables where you can edit and save the file it was loaded from. It currently only has limited functionality meaning it WILL mess up your files so do not run it unless you have a backup of your matches directory. Depends on Espanso being installed in default directory (using the official installer is tested and works, package managers will most likely not).

Installation

To be able to run it and compile it you need the flutter SDK. The easiest way to install flutter and use it is through VS Code:

  1. Install VS Code, Git, and the Flutter extension for VS Code.
  2. Open VS Code and type Flutter in the command palette.
  3. Select new project, VS Code will prmopt you to install the Flutter SDK.
  4. Choose download SDK, when prompted "which Flutter template" press Esc.
  5. Follow the instructions choosing install location and adding it to PATH. The path to the directory can't have any special characters and the directory can't require elevated priviliges. Stick with the default if unsure.
  6. Once installed you can either open the directory containing this repo i VS Code, run flutter pub get, and then use the "Run debug" button. Or navigate to your the directory in you terminal and use "flutter run" to launch it.

The official getting started guide can be found here: https://docs.flutter.dev/get-started/install

Project state

Functionality

Feature state Progress
Load configuration
Save configuration ✅* Limited functionality for testing, backup before use
Works on Windows
Works on Linux Can't read/write config
Works on Mac Can't read/write config
Selectable config path Currently only default directory

User interface

Feature State Progress
Tabs for categories
List of matches
Label Field Will use trigger if no label exists
Trigger Field
Replace Field Field works but fullscreen editor is WIP
Replace Editor WIP, to be ported from before rewrite
Propagate Case Field
Uppercase Style Field
Trigger Only On Word Field
Variables Field WIP, complex to implement, will take time
Form Fields Field WIP, complex to implement, will take time

espanso_gui's People

Contributors

aucacoyan avatar pebkac03 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

aucacoyan

espanso_gui's Issues

UI replace_field editor

UI replace_field editor

Hello everyone and anyone!

I am currently looking at the editor for the replace field and was inspired by Notion.so which led me to the flutter package appflowy-editor which seem very much in line with something that would fit but needs some heavy modification to be adapted to our usecase. Looking for help in first designing a high level roadmap and then developing it. First step is to decide if we should develop it as part of this repo or as a Flutter package in a fork of appflowy-editor. Please join the discussion with your thoughts and ideas.

Current behaviour:

Inspelning.2024-03-05.160348.mp4

Design (WIP)

The editor pops out from the right-hand side of the screen on top of everything else covering about half the screen. It is navigated to by either pressing the edit icon in a replace_field. When there, you are presented with an editable text field where writing the character "/" opens a pop-up at the caret (cursor) where the user has a choice between all types of variables and all types of form fields. Choosing an element then gives the user some way of configuring it and once done is represented in the text either as {{variable_name_here}}/[[form_name_here]] or alternatively if it can be figured out how an inline widget.

In this design both the replace_field, vars_field, and forms_field allow the user to edit vars and forms. Either vars_field and forms_field should be removed or made to present an alternative way to edit vars and forms where those are the sole focus providing a preferable way to handle more advanced vars and forms configuration

To-do

Stage: Discussion

Issue Status Decision Comment
Base it on AppFlowy-editor or not? Whether the feature should be based on AppFlowy editor, something else, or be built from the ground up.
Package or not? Whether the feature should be developed in this repo or as a package in a separate repo.

State Management

Struggling with state management in espanso_gui and welcome input from anyone proficient in flutter, the issue is this: The app has a table widget of all matches in different files in the match directory of Espanso. Behind the UI there are two classes that are responsible for storing all matches: EspansoMatch which is an object with all the properties of a match in Espanso. Trigger, replace, vars, etc. Then there is EspansoMatches which is a class containing "matches" where there is one entry for each file with matches, those are then lists of EspansoMatch and also "yaml" which is the Yaml format of the matches. What I want to do is to have any every match widget update its EspansoMatch instance which then notifies that match widget to rebuild. At the same time I want it to update the instance of EspansoMatches without it triggering a rebuild since that would rebuild all matches even if only one was changed. EspansoMatches should then have a save function which can be called to write to Espanso's Yaml config.

`espanso_gui` roadmap

Hello there!
Now that we have a GUI project here. We need some structure to keep moving forward.
As we work in issues and features, we can edit the list. These are not in order! This is a all you can eat list of features

❗ TODO

  • missing builds in macOS and Linux operative systems
  • add option to select the config path, either as a config file or as a GUI option (whichever is better!)
  • add some basic CI
  • add some basic testing
  • CONTRIBUTING guide
  • adjust README.md
    • add the supported espanso version
    • add badges

✅ Done:

  • ready items are here!

for reference, this issue is based in the roadmap of nufmt

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.