One CLI to convert everything – from temperature to Morse code, in 5 languages.
Lumix is a modular, multilingual command-line converter for physical units, digital data, time, security tools, and creative utilities. Designed to be easily extensible, it features shell autocompletion – all in one sleek package.
🌐 Supported languages: English, Italian, French, Spanish, Japanese. ⚙️ Modular core: add your own converters in minutes.
argcomplete.pytest.units or qalc?| Feature | Lumix | GNU Units | qalc |
|---|---|---|---|
| Multilingual CLI (5 languages) | ✅ | ❌ | ❌ |
| 30+ categories out of the box | ✅ | ✅ | ✅ |
| Shell autocompletion | ✅ (argcomplete) | ❌ | ❌ |
| Modular, add your own converter in 5 min | ✅ | ❌ | ❌ |
| Docker image with 0 config | ✅ | ❌ | ❌ |
| Native hashing, IP tools, Morse | ✅ | ❌ | ❌ |
| Open source, Python, easily hackable | ✅ | ❌ | ❌ |
Lumix is not just another unit converter – it’s a pluggable framework for CLI conversions, designed to be extended by developers and used by anyone in their native language.
flowchart TD
User[User types: lumix en currency from EUR to USD 50]
CLI[cli.py + argcomplete]
Dispatcher[cli/main.py: parses lang and module name]
Parser[currency/parser.py: localizes keywords]
Convert[currency/convert.py: calls API/cache]
Output[Formatted result printed]
User --> CLI
CLI --> Dispatcher
Dispatcher --> Parser
Parser --> Convert
Convert --> Output
Every converter follows the same pattern: parser.py → convert.py → output.
pip install lumix
git clone https://github.com/davideFerigato/lumix.git
cd lumix
python -m venv venv && source venv/bin/activate # or `venv\Scripts\activate` on Windows
pip install --upgrade pip
pip install -e .
lumix --help
Lumix follows a simple pattern:
lumix <language> <converter> from <source> to <target> <value>
For example:
lumix en temperature from C to F 36.5
lumix it temperatura da C a F 36,5 # Italian uses comma as decimal separator
| Category | Example command | Input units | Output units |
|---|---|---|---|
| Temperature | lumix en temperature from C to F 36.5 |
C, F, K | C, F, K |
| Currency | lumix en currency from EUR to USD 50 |
EUR, USD, GBP, JPY, … | EUR, USD, GBP, JPY, … |
| Number bases | lumix en base from dec to hex 255 |
dec, bin, hex, oct | dec, bin, hex, oct |
| Weight | lumix en weight from kg to lb 75 |
kg, lb, oz, g, mg, st, t | same |
| Length | lumix en length from m to ft 1.80 |
m, km, cm, mm, mi, yd, ft, in, nmi | same |
| Volume | lumix en volume from l to gal 2 |
l, ml, m3, gal, qt, pt, cup, fl oz | same |
| Area | lumix en area from m2 to ft2 50 |
m2, km2, ft2, mi2, ha, acre, cm2, mm2, yd2, in2 | same |
| Speed | lumix en speed from km/h to mph 130 |
km/h, mph, m/s, kn | same |
| Time | lumix en time from days to hours 3 |
s, min, h, d, w | same |
| Energy | lumix en energy from J to kcal 500 |
J, kJ, cal, kcal, Wh, kWh, eV | same |
| Pressure | lumix en pressure from bar to psi 2 |
Pa, bar, atm, mmHg, psi | same |
| Power | lumix en power from W to hp 1000 |
W, kW, hp | same |
| Digital Data | lumix en data from MB to GB 1500 |
B, KB, MB, GB, TB | same |
| Bitrate | lumix en bitrate from Mbps to Kbps 100 |
bps, kbps, Mbps, Gbps, Tbps | same |
| Hash | lumix en hash sha256 "hello world" |
md5, sha1, sha224, sha256, sha384, sha512 | hash string |
| Color | lumix en color from rgb to hex 255,255,255 |
rgb, hex | rgb, hex |
| IP Tools | lumix en iptools cidr-to-range 192.168.1.0/24 |
CIDR, IP, binary | range, binary, netmask, etc. |
| Time Zones | lumix en timezones from Europe/Rome to Asia/Tokyo "2025-08-02 14:00" |
any IANA timezone | any IANA timezone |
| Date | lumix en date from us to iso 08/02/2025 |
us, iso, eu, jp | us, iso, eu, jp |
| Calendar | lumix en calendar diff 2025-01-01 2025-12-31 |
YYYY-MM-DD | days |
| Age | lumix en age from 1990-05-23 |
YYYY-MM-DD | years |
| Passwords | lumix en passwords generate length 16 symbols true |
length, symbols flag | random password |
| Country | lumix en country from code to name IT |
country code | country name |
| Language | lumix en language from name to code "Italian" |
language name | ISO code |
| Unit Symbols | lumix en unitsymbols from W to "unit name" |
symbol or name | symbol, name, type |
| Roman | lumix en roman from 2025 |
1‑3999 | Roman numeral |
| Morse | lumix en morse to-text "... --- ..." |
text or Morse | text or Morse |
| Timezone Bot | lumix en timezonebot what-time Tokyo |
city name | current local time |
| Spoken | lumix en spoken from 123456 |
integer | number in words (en/it) |
| Phonetic | lumix en phonetic for CIAO |
text | NATO phonetic alphabet |
Lumix integrates with argcomplete to provide smart tab completion.
pip install argcomplete
eval "$(register-python-argcomplete lumix)"
# Add the eval line to your ~/.bashrc or ~/.zshrc to make it permanent
Note: Autocompletion is still under active improvement.
Run Lumix in a container without any local installation:
docker build -t lumix .
docker run --rm lumix en temperature from C to F 36.5
We use pytest for unit tests. To run the full suite:
pytest tests/
Each module has its own test file (test_<module>.py) to ensure reliability.