Add project infrastructure and core application files

Add .gitignore, GitLab CI pipeline with test/lint/build/release stages, project documentation (README, LICENSE, CHANGELOG, CONTRIBUTING, SECURITY), PyInstaller packaging configuration with icon and version info, Python project configuration with dependencies, and complete application source including battery provider, device discovery, settings management, UI components, startup control, and comprehensive test suite
This commit is contained in:
2026-06-21 11:07:05 +02:00
parent 7ef92caef8
commit 454cad95c5
33 changed files with 1111 additions and 67 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
<rect width="256" height="256" rx="52" fill="#17191f"/>
<rect x="42" y="69" width="156" height="118" rx="24" fill="#f5f7fa"/>
<rect x="198" y="105" width="20" height="46" rx="8" fill="#f5f7fa"/>
<rect x="58" y="85" width="105" height="86" rx="14" fill="#2cc970"/>
</svg>

After

Width:  |  Height:  |  Size: 367 B

+6
View File
@@ -0,0 +1,6 @@
"""Absolute-import launcher used by PyInstaller."""
from logitech_battery_widget.main import main
if __name__ == "__main__":
raise SystemExit(main())
+39
View File
@@ -0,0 +1,39 @@
# -*- mode: python ; coding: utf-8 -*-
from pathlib import Path
root = Path(SPECPATH).parent
a = Analysis(
[str(root / "packaging" / "launcher.py")],
pathex=[str(root / "src")],
binaries=[],
datas=[],
hiddenimports=[
"PyQt6.QtCore",
"PyQt6.QtGui",
"PyQt6.QtWidgets",
"hid",
"logitech_battery_widget.battery.windows_hid",
],
hookspath=[],
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=1,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name="LogitechBatteryWidget",
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False,
icon=str(root / "packaging" / "icon.ico"),
version=str(root / "packaging" / "version_info.txt"),
)
+12
View File
@@ -0,0 +1,12 @@
VSVersionInfo(
ffi=FixedFileInfo(filevers=(0, 1, 0, 0), prodvers=(0, 1, 0, 0),
mask=0x3f, flags=0x0, OS=0x40004, fileType=0x1, subtype=0x0, date=(0, 0)),
kids=[StringFileInfo([StringTable('040904B0', [
StringStruct('CompanyName', 'Logitech Battery Widget contributors'),
StringStruct('FileDescription', 'Offline Logitech battery status widget'),
StringStruct('FileVersion', '0.1.0'),
StringStruct('InternalName', 'LogitechBatteryWidget'),
StringStruct('LegalCopyright', 'Copyright (c) 2026 contributors'),
StringStruct('OriginalFilename', 'LogitechBatteryWidget.exe'),
StringStruct('ProductName', 'Logitech Battery Widget'),
StringStruct('ProductVersion', '0.1.0')])]), VarFileInfo([VarStruct('Translation', [1033, 1200])])])