가장 많이 사용되는 시간 날짜 매크로를 위한 Ulauncher 확장 프로그램 작성 방법
왜요?
나는 많이 썼다. 그리고 내 글에서는 타임스탬프, 날짜, 시간, 시간 범위를 사용합니다.
다음 datetime 형식을 사용합니다.
그들을 위해 내가 원하는 날짜 형식을 클립보드에 복사하는 사용자 지정 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
는
{
"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"
}
]
}
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()
항목의 스크린샷은 다음과 같습니다.
항목 코드:
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/
Reference
이 문제에 관하여(가장 많이 사용되는 시간 날짜 매크로를 위한 Ulauncher 확장 프로그램 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nurgasemetey/how-i-wrote-ulauncher-extension-for-most-used-timedate-macros-c5i
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
From personal blog: https://www.nurgasemetey.com/2020/extension-ulauncher/
Reference
이 문제에 관하여(가장 많이 사용되는 시간 날짜 매크로를 위한 Ulauncher 확장 프로그램 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nurgasemetey/how-i-wrote-ulauncher-extension-for-most-used-timedate-macros-c5i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)