Skip to content

Commit bc9f36b

Browse files
committed
✨ feat: feat: complete rewrite from Python/GTK3 to Rust/GTK4/libadwaita
Full rewrite of the BigLinux WebApps Manager and Viewer in Rust, replacing the previous Python+GTK3 implementation. Architecture: - 3-crate workspace: webapps-core, webapps-manager, webapps-viewer - webapps-core: shared models, config, desktop entry generation, i18n, templates - webapps-manager: GTK4/Adw GUI for creating, editing, importing/exporting webapps - webapps-viewer: lightweight WebKitGTK6 browser for viewer-mode webapps Manager features: - Create/edit/delete webapps with URL, name, icon, category, browser, profile - Template gallery (Google, Office365, Communication, Media, Productivity) - Welcome dialog with first-run onboarding - Import/export webapps as ZIP archives - Browser selection dialog with system-installed browser detection - Favicon auto-detection from websites - Legacy .desktop migration from Python-era format - Keyboard shortcuts (Ctrl+N, Ctrl+F, Ctrl+Q) Viewer features: - WebKitGTK6 web view with navigation bar (back/forward/reload/fullscreen) - URL bar with Ctrl+L focus, context menu "Open Link in Browser" - Zoom controls (Ctrl+/-, Ctrl+0) with persistent per-webapp zoom level - Developer tools toggle, software rendering mode via desktop action - Download handling with system notification on completion - Edge resize handles for CSD windows Desktop integration: - Sanitized .desktop entry generation with proper Exec/Icon/Categories - Desktop action for software rendering mode (WEBKIT_DISABLE_DMABUF_RENDERER) - Separate browser profiles with isolated cookies/data - XDG menu integration (applications-merged) - Systemd user service for login tasks Internationalization: - gettextrs integration with 80 translatable strings - 29 languages: bg, cs, da, de, el, en, es, et, fi, fr, he, hr, hu, is, it, ja, ko, nl, no, pl, pt, pt-BR, ro, ru, sk, sv, tr, uk, zh - Pre-compiled .mo files in usr/share/locale/ Build: - Release profile: LTO thin, opt-level s, strip, codegen-units 1 - Binaries: gui ~6.3MB, viewer ~2.2MB - Dependencies: gtk4, libadwaita, webkitgtk-6.0, openssl, gettext Removed: - Python source code and dependencies - GTK3/webkit2gtk-4.0 dependency - Legacy bash CLI script (big-webapps) - JSON locale files (replaced by gettext .po/.mo)
1 parent 3e3d40d commit bc9f36b

161 files changed

Lines changed: 25773 additions & 15957 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 14 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -1,165 +1,19 @@
1-
# Byte-compiled / optimized / DLL files
2-
__pycache__/
3-
*.py[cod]
4-
*$py.class
1+
# Rust build output
2+
/target/
53

6-
# C extensions
7-
*.so
4+
# IDE / editor
5+
.idea/
6+
.vscode/
7+
*.swp
8+
*.swo
9+
*~
810

9-
# Distribution / packaging
10-
.Python
11-
build/
12-
develop-eggs/
13-
dist/
14-
eggs/
15-
.eggs/
16-
parts/
17-
sdist/
18-
wheels/
19-
share/python-wheels/
20-
*.egg-info/
21-
.installed.cfg
22-
*.egg
23-
MANIFEST
11+
# OS artifacts
12+
.DS_Store
13+
Thumbs.db
2414

25-
# PyInstaller
26-
# Usually these files are written by a python script from a template
27-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
28-
*.manifest
29-
*.spec
30-
31-
# Installer logs
32-
pip-log.txt
33-
pip-delete-this-directory.txt
34-
35-
# Unit test / coverage reports
36-
htmlcov/
37-
.tox/
38-
.nox/
39-
.coverage
40-
.coverage.*
41-
.cache
42-
nosetests.xml
43-
coverage.xml
44-
*.cover
45-
*.py,cover
46-
.hypothesis/
47-
.pytest_cache/
48-
cover/
49-
50-
# Django stuff:
51-
*.log
52-
local_settings.py
53-
db.sqlite3
54-
db.sqlite3-journal
55-
56-
# Flask stuff:
57-
instance/
58-
.webassets-cache
59-
60-
# Scrapy stuff:
61-
.scrapy
62-
63-
# PyBuilder
64-
.pybuilder/
65-
target/
66-
67-
# Jupyter Notebook
68-
.ipynb_checkpoints
69-
70-
# IPython
71-
profile_default/
72-
ipython_config.py
73-
74-
# pyenv
75-
# For a library or package, you might want to ignore these files since the code is
76-
# intended to run in multiple environments; otherwise, check them in:
77-
# .python-version
78-
79-
# pipenv
80-
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
81-
# However, in case of collaboration, if having platform-specific dependencies or dependencies
82-
# having no cross-platform support, pipenv may install dependencies that don't work, or not
83-
# install all needed dependencies.
84-
#Pipfile.lock
85-
86-
# UV
87-
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
88-
# This is especially recommended for binary packages to ensure reproducibility, and is more
89-
# commonly ignored for libraries.
90-
#uv.lock
91-
92-
# poetry
93-
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
94-
# This is especially recommended for binary packages to ensure reproducibility, and is more
95-
# commonly ignored for libraries.
96-
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
97-
#poetry.lock
98-
99-
# pdm
100-
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
101-
#pdm.lock
102-
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
103-
# in version control.
104-
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
105-
.pdm.toml
106-
.pdm-python
107-
.pdm-build/
108-
109-
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
110-
__pypackages__/
111-
112-
# Celery stuff
113-
celerybeat-schedule
114-
celerybeat.pid
115-
116-
# SageMath parsed files
117-
*.sage.py
118-
119-
# Environments
120-
.env
121-
.venv
122-
env/
123-
venv/
124-
ENV/
125-
env.bak/
126-
venv.bak/
127-
128-
# Spyder project settings
129-
.spyderproject
130-
.spyproject
131-
132-
# Rope project settings
133-
.ropeproject
134-
135-
# mkdocs documentation
136-
/site
137-
138-
# mypy
139-
.mypy_cache/
140-
.dmypy.json
141-
dmypy.json
142-
143-
# Pyre type checker
144-
.pyre/
145-
146-
# pytype static type analyzer
147-
.pytype/
148-
149-
# Cython debug symbols
150-
cython_debug/
151-
152-
# PyCharm
153-
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
154-
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
155-
# and can be added to the global gitignore or merged into this file. For a more nuclear
156-
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
157-
#.idea/
158-
159-
# Ruff stuff:
160-
.ruff_cache/
161-
162-
# PyPI configuration file
163-
.pypirc
15+
# Planning docs — local only
16+
PLANNING.md
16417

18+
# Audit reports
16519
.audit

0 commit comments

Comments
 (0)