Read, write, and create Windows .lnk shortcut files (local, UNC, and UWP).
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pylynxley-2026.4.10.3.tar.gz.
File metadata
- Download URL: pylynxley-2026.4.10.3.tar.gz
- Upload date:
- Size: 33.3 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2099f10c4f6bf0f74d73ed74ca383ca1bb3aa66fbeb46c4a4e1dae582719ba88
|
|
| MD5 |
619824ae94959d69cecaded7fa48cc90
|
|
| BLAKE2b-256 |
bef6e0c003b12422c78f3446b23933e29d5aa3315d65c0ed958384f147a2f031
|
File details
Details for the file pylynxley-2026.4.10.3-py3-none-any.whl.
File metadata
- Download URL: pylynxley-2026.4.10.3-py3-none-any.whl
- Upload date:
- Size: 47.8 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b288878f5225d6521227feb0188e28095096b71495add124199aa1a3ccc41e3
|
|
| MD5 |
59a25d8879f04255e09a890814070e86
|
|
| BLAKE2b-256 |
9908195203b9c60b74000204463ced1eec6c5561927c782e4af3237bea28ba21
|