Skip Navigation

Need help building an address-typing form

One of my NY resolutions for 2025 is to ditch AutoHotkey for any cross-platform equivalents, and Espanso is one of them. However, an AHK script I heavily rely on is a modular address autocomplete (I refuse to store address data in the browser), which I just don't know how to replicate in Espanso. I know it can use Python, but I'm not well-versed enough in Python to figure out:

  1. Storage of 2-3 addresses (and the selection of 1 of them):
    • Street Name
    • Line 2 (but only for certain addresses)
    • City
    • State
    • ZIP Code
    • 4-digit ZIP extension
    • Google Maps (or OpenStreetMap...) share URL
  2. Send only the street name
  3. Send everything with modular inclusion or exclusion of the ZIP extension and/or related URL as:
    • One line (comma-divided)
    • Separate lines for pre-city data and the URL
    • Simulate tab keystrokes to navigate through a webpage
      • Be able to account for whether the web form has a separate line for Line 2 or not (like with a checkbox in the Espanso form or whatever'd work)

Any help with this would be much appreciated. This is as far as I got:

 undefined
        - trigger: '`address'
      replace: '{{output}}'
      vars:
        - name: form
          type: form
          params:
            layout: |
              [[street]]
              [[city]]
              [[zip]]
              [[zipext]]
              [[share_url]]
            fields:
              street:
                type: list
                values:
                  - 123 Main St
                  - 456 Elm St
              city:
                type: list
                values:
                  - It was at this point that I realized that the cities should be bundled with the prior lines in some sort of list, or dictionary; I don't know what would be best
        - name: output
          type: script
          params:
            args:
              - python
              - -c
              - |
                if '{{form.}}':
                  print(f'{{form.street}}, {{form.city}} {{form.zip}}-[[form.zipext]] [[share_url]]')
                else:
                  print(f'Alternative rendering methods here')
  
0 comments

No comments

Start the conversation!