Skip to content

Instantly share code, notes, and snippets.

@smeech
Last active July 14, 2025 19:09
Show Gist options
  • Select an option

  • Save smeech/5175ddb4790f3ee9e61752162155c086 to your computer and use it in GitHub Desktop.

Select an option

Save smeech/5175ddb4790f3ee9e61752162155c086 to your computer and use it in GitHub Desktop.
[Popup date selector] #espanso #python #bash
# Using zenity in Linux
- trigger: :pickdate
replace: "{{selected_date}}"
vars:
- name: selected_date
type: shell
params:
cmd: zenity --calendar --date-format="%A %d/%m/%Y"
# Espanso popup date selector
- trigger: :ddate
replace: '{{output}}'
vars:
- name: output
type: script
params:
args:
- python
- -c
- |
from tkinter import Tk,Button
from tkcalendar import DateEntry
def get_date():
selected_date = cal.get()
print(f"Selected date: {selected_date}")
root.destroy()
root = Tk()
cal = DateEntry(root, date_pattern="yyyy-mm-dd")
cal.pack()
btn = Button(root, text="Click Here To Return a Date ", command=get_date)
btn.pack()
root.mainloop()
# Modified to show calendar immediately and return date clicked.
- trigger: :ddate
replace: '{{output}}'
vars:
- name: output
type: script
params:
args:
- python
- -c
- |
import sys
from tkinter import Tk
from tkcalendar import DateEntry
def on_date_selected(event):
print(cal.get())
sys.stdout.flush()
root.after(1, root.destroy)
root = Tk()
cal = DateEntry(root, date_pattern="yyyy-mm-dd")
cal.pack()
cal.drop_down()
cal.bind("<<DateEntrySelected>>", on_date_selected)
root.mainloop()
# For Windows only
- trigger: :pickdate
replace: "{{date}}"
vars:
- name: date
type: shell
params:
cmd: |
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object Windows.Forms.Form
$form.Text = "Select a date"
$form.StartPosition = "CenterScreen"
$form.Width = 250
$form.Height = 200
$cal = New-Object Windows.Forms.MonthCalendar
$cal.MaxSelectionCount = 1
$cal.Dock = "Fill"
# Event handler to close form on date select
$cal.Add_DateSelected({
$form.DialogResult = [Windows.Forms.DialogResult]::OK
$form.Close()
})
$form.Controls.Add($cal)
$null = $form.ShowDialog()
$cal.SelectionStart.ToString("yyyy-MM-dd")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment