As my time with linux, I created a lot of scripts. Some of them have input parameters and sometimes I just forget this parameters.

So I wonder if there is some way to create autocomplete parameters, like i autocomplete a path by pressing the tab key?

For example a script. ./test.sh can be completed with parameter-one, eg. ./test.sh parameter-one or ./test.sh parameter-two. If i type now ./test.sh followed by tab it should add parameter-one if i press tab again it should change to parameter-two.

How can I do that? I’m on bash…

  • trevor@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    6 days ago

    Espanso is probably the most useful software that nobody is using. I can’t live without it.

    I hope it gets an update soon…

    • Flagstaff@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      6 days ago

      Its .YML formatting is really clunky. It feels like it takes up twice as much line space as .AHK (for example), which can do a lot of this kind of stuff in a single line. But I wanna go cross-platform and this is all I can find…

      • trevor@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        3
        ·
        6 days ago

        I like YAML, as long as you aren’t using complicated syntax. Using the | operator will get you some flexible usage that’s mostly easy enough to read. YAML definitely has its problems though. If you want, I can share some snippets of my config.

        Sadly though, due to Espanso not having a working RPM build for Wayland (or a Flatpak, which they’re working on), it’s not quite as cross-platform as I want it to be. It won’t work on any of the cool uBlue-derived distros that I’ve gravitated toward, so I’m hoping we get a nice, big update this year.

        • Flagstaff@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          6 days ago

          Did you put in a request for this? And sure, I’m always interested in seeing how others use it—especially to complex levels.

          • trevor@lemmy.blahaj.zone
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            1 day ago

            It took me a while to get around to this so I could sanitize some of the highly-personal stuff there (mostly just a bunch of URLs because I don’t use browser bookmarks lol), but here’s a condensed version of what I like to use Espanso for.

            The second half is …interesting. I wanted a way to autofill passwords from my password manager in any application, not just a browser. It’s a very homebrewed solution, and it only works on Windows and Linux because macOS blocks tools like Espanso from viewing or modifying login input fields.

            Did you put in a request for this?

            For a Wayland Flatpak or RPM? I haven’t looked in a long time, but I believe there’s an open issue for a Wayland RPM.

            Edit: Found them: Flatpak issue and RPM issue.

            • Flagstaff@programming.dev
              link
              fedilink
              English
              arrow-up
              1
              ·
              edit-2
              1 day ago

              macOS blocks tools like Espanso from viewing or modifying login input fields.

              I wonder if SikuliX may be of interest to you, then. I just invoke KeePassXC’s built-in autotyper; it’s not too much more painful for me. Anyway, thanks for sharing! We certainly use it for very different things. Here’s a Reddit search URL generation script that I use sporadically:

                - trigger: '`rs'
                  replace: '{{output}}'
                  vars:
                    - name: form
                      type: form
                      params:
                        layout: |
                          [[subdomain]]
                          Subreddit (optional): [[subreddit]]
                          Query:
                          [[query]]
                        fields:
                          subdomain:
                            type: choice
                            values:
                              - www
                              - old
                            default: old
                    - name: output
                      type: script
                      params:
                        args:
                          - python
                          - -c
                          - |
                            if '{{form.subreddit}}':
                              print(f'https://{{form.subdomain}}.reddit.com/r/{{form.subreddit}}/search?q={{form.query}}&restrict_sr=on&include_over_18=on')
                            else:
                              print(f'https://{{form.subdomain}}.reddit.com/search?q={{form.query}}&include_over_18=on')
              

              I wanna make a Lemmy equivalent of this, eventually…

              Update: Okay, just did for my instance!

                - trigger: "`lemmy"
                  propagate_case: true
                  replace: "https://programming.dev/search?q=%7B%7Blemmy.query%7D%7D&type=%7B%7Blemmy.search%7D%7D&listingType=All&page=1&sort=%7B%7Blemmy.timeframe%7D%7D"
                  vars:
                    - name: "lemmy"
                      type: form
                      params:
                        layout: |
                          Query: [[query]]
                          Filter: [[search]]Time Frame: [[timeframe]]
                        fields:
                          query:
                          search:
                            type: list
                            values:
                              - All
                              - Comments
                              - Communities
                              - Posts
                              - Users
                              - URL
                            default: All
                          timeframe:
                            type: list
                            values:
                              - TopWeek
                              - TopMonth
                              - TopThreeMonths
                              - TopSixMonths
                              - TopNineMonths
                              - TopYear
                              - TopAll
                            default: TopAll