가장 많이 사용되는 시간 날짜 매크로를 위한 Ulauncher 확장 프로그램 작성 방법

왜요?



나는 많이 썼다. 그리고 내 글에서는 타임스탬프, 날짜, 시간, 시간 범위를 사용합니다.

다음 datetime 형식을 사용합니다.
  • 2020-11-01
  • 15-18
  • 14:58

  • 그들을 위해 내가 원하는 날짜 형식을 클립보드에 복사하는 사용자 지정 bash 스크립트를 사용했습니다. 이 스크립트는 Linux의 사용자 지정 바로 가기에 수동으로 추가되었습니다.

    bash 스크립트의 예:

    #!/bin/sh
    alias setclip='xclip -selection c'
    alias getclip='xclip -selection clipboard -o'
    printf $(date +"%Y-%m-%d") | setclip
    


    처음에는 정말 기뻤지만 얼마 후 사용자 정의 스크립트 수가 증가했습니다. 나는 그것들을 기억하는 데 어려움을 겪었다.



    어떻게?



    나는 Ulauncher을 우연히 발견했고 이러한 시간 날짜 스크립트에 대한 확장을 만들 수 있다는 것이 나에게 실망했습니다.

    모르는 사람들을 위해 Ulauncher은 많은 개발자가 많은 확장을 작성하는 응용 프로그램 실행기입니다.

    몇 가지 예:
  • 이모티콘 확장 프로그램
  • 프로세스 살인자
  • 구글 번역기
  • 스포티파이 플레이어

  • 다음은 확장 개발을 위한 자습서link입니다.

    내 확장 정보



    Ulauncher가 작동하려면 확장 프로그램에 manifest.json 파일이 있어야 합니다.
    manifest.json의 예

    {
      "required_api_version": "^2.0.0",
      "name": "Timestamp macros",
      "description": "Copy to clipboard the most used timedate formats",
      "developer_name": "Nurgazy Nazhimidinov",
      "icon": "images/icon.png",
      "options": {
        "query_debounce": 0.05
      },
      "preferences": [
        {
          "id": "time_kw",
          "type": "keyword",
          "name": "Timemacros",
          "default_value": "tm"
        }
      ]
    }
    
    


    키워드 Timemacros를 쓰면 런처에 확장자가 나온다고 합니다(WARNING 미클릭).




    Timemacros를 작성하고 클릭하면

    또는

    tm 및 SPACE 를 작성하면 KeywordQueryEventListener(EventListener)가 호출됩니다.

    코드는 다음과 같습니다.

    class DemoExtension(Extension):
    
        def __init__(self):
            super(DemoExtension, self).__init__()
            self.subscribe(KeywordQueryEvent, KeywordQueryEventListener())
    
    class KeywordQueryEventListener(EventListener):
    
        def on_event(self, event, extension):
            items = []
            logger.info('preferences %s' % json.dumps(extension.preferences))
            logger.info(event.get_keyword()) # gives the keyword 'tm'
            items.append(ExtensionResultItem(icon='images/icon.png',
                                             name='YYYY-MM-DD',
                                             description='{0:%Y-%m-%d}'.format(datetime.datetime.now()),
                                             on_enter=CopyToClipboardAction('{0:%Y-%m-%d}'.format(datetime.datetime.now()))))
    
            items.append(ExtensionResultItem(icon='images/icon.png',
                                             name='HH:mm',
                                             description='{0:%H:%M}'.format(datetime.datetime.now()),
                                             on_enter=CopyToClipboardAction(
                                                 '{0:%H:%M}'.format(datetime.datetime.now()))))
    
            items.append(ExtensionResultItem(icon='images/icon.png',
                                             name='YYYY-MM-DD HH:mm',
                                             description='{0:%Y-%m-%d %H:%M}'.format(datetime.datetime.now()),
                                             on_enter=CopyToClipboardAction(
                                                 '{0:%Y-%m-%d %H:%M}'.format(datetime.datetime.now()))))
    
            return RenderResultListAction(items)
    
    
    if __name__ == '__main__':
        DemoExtension().run()
    
    


    보시다시피 KeywordQueryEventListener(EventListener)on_event가 실행되고 RenderResultListAction(items)가 반환되어 사용자에게 표시됩니다.

    우리items
  • YYYY-MM-DD
  • HH:mm
  • YYYY-MM-DD HH:mm

  • 항목의 스크린샷은 다음과 같습니다.



    항목 코드:

    items.append(ExtensionResultItem(icon='images/icon.png',
                                             name='YYYY-MM-DD',
                                             description='{0:%Y-%m-%d}'.format(datetime.datetime.now()),
                                             on_enter=CopyToClipboardAction('{0:%Y-%m-%d}'.format(datetime.datetime.now()))))
    
    

    ExtensionResultItem에 대한 설명:
    name - 사용자에게 표시된 제목, 위 스크린샷 참조
    description - 사용자에게도 표시되는 하위 텍스트, 위 스크린샷 참조
    on_enter - 가장 중요한 부분은 사용자가 이 항목을 클릭하면 수행할 작업을 말합니다. 저의 경우 클립보드에 데이터를 복사하는 동작CopyToClipboardAction입니다.

    요약



    결국 저는 사용자 지정 bash 스크립트를 버리고 키보드 단축키를 잊어버릴 수 있는 확장 기능을 개발했습니다.

    Source code on Github

    더 이상 사용되지 않는 bash 스크립트 😄



    From personal blog: https://www.nurgasemetey.com/2020/extension-ulauncher/

    좋은 웹페이지 즐겨찾기