| |
| \ \ / __| | /
| \ \ / \__ \ <
_| \_/ ____/ _|\_\
Terminal-based calendar with minimalist design and extensive customization
lvsk-calendar is a lightweight, modular terminal calendar written in pure Bash. Designed for Arch Linux and Hyprland enthusiasts, it combines minimalist aesthetics with powerful customization options. No compilation neededโjust pure shell scripting.
- ๐จ Fully Customizable: 5 built-in color schemes, custom backgrounds, and extensive configuration options
- โก Lightning Fast: Minimal resource usage, instant rendering, pure Bash with no dependencies beyond coreutils
- ๐ฏ Keyboard-Driven: Arrow keys or vim-style navigation (hjkl)
- ๐ช Hyprland Integration: Automatic floating window setup with zero configuration
- 5 Built-in Color Schemes: monochrome (default), pastel, nord, dracula, gruvbox
- 4 Background Styles: orbital, stars, minimal, none + custom background support
- Month View Calendar: Full month grid with complete weeks
- ISO 8601 Week Numbers: Week numbers displayed alongside calendar
- Public Holidays: Auto-detected country holidays with local caching
- Arrow Keys or hjkl (vim-style): Navigate between days
- [ ]: Previous/Next month shortcuts
- t: Jump to today instantly
- q: Exit application
- Smart Overflow: Navigating past month boundaries auto-switches months
- Hyprland: Dynamic floating window rules (no manual config needed)
- Waybar: Custom module support with one-click launch
- Terminal Emulators: Auto-detection for ghostty, kitty, alacritty, foot, wezterm
- User Configuration:
~/.config/lvsk-calendar/configwith auto-setup - Custom Backgrounds: Create your own ASCII art backgrounds
- True Color Support: Hex (#RRGGBB) or ANSI 256-color palette
- Character Mapping: Customize all borders, corners, and decorative elements
- Layout Dimensions: Adjustable frame widths and spacing
yay -S lvsk-calendaror
paru -S lvsk-calendargit clone https://github.com/Gianluska/lvsk-calendar.git
cd lvsk-calendar
makepkg -siRuntime:
bash- Core shell interpretercoreutils- date, tput, stty commands
Optional (for holidays):
curl- Fetch holiday data from public APIjq- JSON parsing (fallback available without it)
lvsk-calendarOpens the calendar in your existing terminal window.
lvsk-calendar-launcherOpens a new floating terminal window with auto-configured settings:
- 600x500px centered window
- Instant floating (no animations)
- Auto-closes on exit
- No manual Hyprland config needed!
| Key(s) | Action | Details |
|---|---|---|
โ / k |
Previous week | Move up 7 days |
โ / j |
Next week | Move down 7 days |
โ / h |
Previous day | Move left 1 day |
โ / l |
Next day | Move right 1 day |
[ |
Previous month | Jump to previous month |
] |
Next month | Jump to next month |
t |
Jump to today | Return to current date |
q |
Quit | Exit application cleanly |
On first launch, lvsk-calendar automatically:
- Creates
~/.config/lvsk-calendar/directory - Copies default configuration to
~/.config/lvsk-calendar/config - Copies all built-in backgrounds to
~/.config/lvsk-calendar/backgrounds/
Edit your configuration:
nvim ~/.config/lvsk-calendar/configChoose from 5 built-in color schemes:
color_scheme=monochrome # Warm pastel monochrome (default)
color_scheme=pastel # Soft pastel colors
color_scheme=nord # Nord theme colors
color_scheme=dracula # Dracula theme
color_scheme=gruvbox # Gruvbox theme
Choose decorative backgrounds:
background_style=orbital # Cosmic orbital design (default)
background_style=stars # Starry night pattern
background_style=minimal # Clean dots pattern
background_style=none # No decoration
background_style=custom # Your custom background
Create your own background:
-
Copy an existing background:
cp ~/.config/lvsk-calendar/backgrounds/orbital.sh \ ~/.config/lvsk-calendar/backgrounds/custom.sh
-
Edit the function:
nvim ~/.config/lvsk-calendar/backgrounds/custom.sh -
Activate in config:
background_style=custom
header_frame_width=40 # Month/year frame width
footer_frame_width=52 # Controls footer width
calendar_grid_width=38 # Calendar grid width
skip_splash=false # Show/hide splash screen on startup
holidays_enabled=true # Enable public holidays display
country_code=BR # 2-letter ISO country code (auto-detected if omitted)
Holidays are fetched from the Nager.Date API and cached locally in ~/.cache/lvsk-calendar/holidays/. Country is auto-detected from your system locale if not configured.
# Using hex colors
color_base=#E0E0E0
color_accent=#88C0D0
# Or ANSI 256 codes
color_base=253
color_subtle=242
color_highlight_bg=236
char_h=โ # Horizontal border
char_v=โ # Vertical border
char_tl=โญ # Top-left corner
char_tr=โฎ # Top-right corner
char_bl=โฐ # Bottom-left corner
char_br=โฏ # Bottom-right corner
The launcher (lvsk-calendar-launcher) provides zero-config Hyprland integration:
How it works:
- Dynamically adds windowrules via
hyprctl - Opens terminal with special title
- Rules apply before window appears
- Auto-closes window on exit
Window Configuration:
- Float: Yes (automatic)
- Size: 600x500 pixels
- Position: Centered
- Animations: Instant (no transition delay)
Add a calendar button to your Waybar:
~/.config/waybar/config
{
"modules-center": [
"clock",
"custom/calendar"
],
"custom/calendar": {
"format": " ๓ฐญ ",
"on-click": "lvsk-calendar-launcher",
"tooltip-format": "Click to open calendar"
}
}Contributions are welcome! Areas for improvement:
- Terminal emulator support
- Feature enhancements
- Bug fixes
- New background designs
MIT - Use it however you want.
- Inspired by minimalist terminal UI design
- Built for the Arch Linux and Hyprland community
- Powered by pure Bash and community feedback
- Repository: https://github.com/Gianluska/lvsk-calendar
- AUR Package: https://aur.archlinux.org/packages/lvsk-calendar
- Issues: https://github.com/Gianluska/lvsk-calendar/issues
- Example Configuration:
config.example
Made with โค๏ธ from Brazil