Skip to main content

pylynxley

Python Platform License Coverage

Tooling: Ruff Basedpyright Ty Pytest Coverage

Quality and Security: Vulture Deptry Detect Secrets

Content and Config: Yamllint Yamlfmt Markdownlint mdformat Taplo

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)

Source distribution for pylynxley 2026.4.10.4
File Size Uploaded
pylynxley-2026.4.10.4.tar.gz 33.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pylynxley 2026.4.10.4
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

2026.4.10.4 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page