pylynxley
Python library for reading and writing Windows shortcut files (.lnk).
This project modernizes the pylnk3 approach for current Python and expanded
shortcut coverage. It parses .lnk files into a typed Lnk object, supports
edits and round-trip saving, and provides convenience constructors for creating
new links.
Highlights
- Parse, inspect, and rewrite existing .lnk files.
- Create local, UNC, and UWP shortcuts with a unified API.
- Resolve target paths from LinkInfo, IDList, and ExtraData consistently.
- Test-backed behavior with local/network/UWP fixture coverage.
Supported scenarios:
- Local file/folder shortcuts.
- Remote UNC shortcuts.
- UWP application shortcuts.
- Mixed link data where LinkInfo, IDList, and ExtraData are reconciled.
Requirements
- Python 3.14+
Install
From this repository:
pip install -e .
For development:
pip install -e .[dev]
Quick Start
from pathlib import Path
from pylynxley.lnk import Lnk
lnk = Lnk.from_file(Path("example.lnk"))
print(lnk.path)
created = Lnk.create_local(target=r"C:\\Windows\\explorer.exe", description="Explorer")
created.save(Path("explorer.lnk"))
CLI
The CLI supports parse and create flows for local, remote, and UWP links.
Run it as a module:
python -m pylynxley.lnk --help
Parse existing .lnk file
python -m pylynxley.lnk parse LINK_FILE
Prints core fields (flags, show mode, resolved path, working directory, arguments) and diagnostics for LinkInfo, IDList, and ExtraData.
Create local .lnk file
python -m pylynxley.lnk create-local TARGET OUT_FILE \
[--desc TEXT] [--args TEXT] [--icon ICON_PATH] [--workdir DIR] \
[--window {normal,max,min}]
Create remote (UNC) .lnk file
python -m pylynxley.lnk create-remote UNC_PATH OUT_FILE [--desc TEXT]
Create UWP .lnk file
python -m pylynxley.lnk create-uwp PACKAGE_FAMILY TARGET OUT_FILE \
[--location PATH] [--logo44 PATH] [--desc TEXT]
CLI examples
python -m pylynxley.lnk parse src/pylynxley/tests/examples/local_file.lnk
python -m pylynxley.lnk create-local C:\Windows\explorer.exe \
explorer.lnk --window max
python -m pylynxley.lnk create-remote \
\\192.168.1.1\share\file.doc share-doc.lnk
python -m pylynxley.lnk create-uwp \
Microsoft.WindowsCalculator_8wekyb3d8bbwe \
Microsoft.WindowsCalculator_8wekyb3d8bbwe!App calc.lnk
Python API
from pathlib import Path
from pylynxley.lnk import Lnk
# Read and inspect an existing shortcut
lnk = Lnk.from_file(Path("example.lnk"))
print(lnk.path)
# Create and save a local shortcut
new_lnk = Lnk.create_local(
target=r"C:\Windows\explorer.exe",
description="Explorer",
)
new_lnk.save(Path("explorer.lnk"))
Limitations
- Windows-focused behavior.
- This project targets shell link formats covered by the test fixtures, not every shortcut variant in the Windows ecosystem.
Tests
uv run pytest --doctest-modules
uv run pytest --doctest-modules --cov=src/pylynxley --cov-report=term-missing
Notes
- Behavior is validated against local, network, and UWP fixture shortcuts in
src/pylynxley/tests/examples. - CLI entrypoint behavior is covered by dedicated tests.
Metadata
Release files for pylynxley 2026.4.10.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pylynxley-2026.4.10.4.tar.gz | 33.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylynxley-2026.4.10.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.6 kB
Release files / pylynxley-2026.4.10.4.tar.gz
| Download URL | pylynxley-2026.4.10.4.tar.gz |
|---|---|
| Size | 33.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b8eac142f18621d391ce28e2704a42e53cb958a1621691c8dda974197787cc4
|
|
BLAKE2b-256 checksum How to use checksums |
0e352307de103b7a957d9a074e71ab16e0cbdfd416df154129aaa71d55f7032e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pylynxley-2026.4.10.4-py3-none-any.whl
| Download URL | pylynxley-2026.4.10.4-py3-none-any.whl |
|---|---|
| Size | 48.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b49d6daac7c28447a692eaba7b9b96de5e37ffba7b143e2e42a52f6e3bf3ca10
|
|
BLAKE2b-256 checksum How to use checksums |
d67b4d3619b165709122fb781fee7e5dc2cdef92d7e379e065ee45c51ee4290d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|