Major changes: - Add unload() method to all plugins for proper cleanup (unregister commands/providers/LSP clients, destroy widgets, clear state) - Implement lazy widget loading via "show" signal across all containers - Add autoload: false manifest option for manual/conditional plugin loading - Add Plugins UI with runtime load/unload toggle via Ctrl+Shift+p - Implement controller unregistration system with proper signal disconnection - Add new events: UnregisterCommandEvent, GetFilesEvent, GetSourceViewsEvent, TogglePluginsUiEvent - Fix signal leaks by tracking and disconnecting handlers in widgets (search/replace, LSP manager, tabs, telescope, markdown preview) - Add Save/Save As to tabs context menu - Improve search/replace behavior (selection handling, focus management) - Add telescope file initialization from existing loaded files - Refactor plugin reload watcher to dynamically add/remove plugins on filesystem changes - Add new plugins: file_history, extend_source_view_menu, godot_lsp_client - Fix bug in prettify_json (undefined variable reference
Python-With-Gtk-Template
A template project for Python with Gtk applications.
Requirements
- PyGObject (Gtk introspection library)
- pygobject-stubs (For actually getting pylsp or python-language-server to auto complete in LSPs. Do if GTK3 --no-cache-dir --config-settings=config=Gtk3,Gdk3,Soup2)
- pyxdg (Desktop ".desktop" file parser)
- setproctitle (Define process title to search and kill more easily)
- sqlmodel (SQL databases and is powered by Pydantic and SQLAlchemy)
Note
- pyrightconfig.json can prompt IDEs that use pyright lsp on where imports are located- look at venvPath and venv. "venvPath" is parent path of "venv" where "venv" is just the name of the folder under the parent path that is the python created venv.
- Move respetive sub folder content under user_config to the same places in Linux. Though, user/share/ can go to ~/.config folder if prefered.
- In additiion, place the plugins folder in the same app folder you moved to /usr/share/ or ~/.config/ . There are a "<change_me>" strings and files that need to be set according to your app's name located at:
- __builtins__.py
- user_config/bin/app_name
- user_config/usr/share/app_name
- user_config/usr/share/app_name/icons/app_name.png
- user_config/usr/share/app_name/icons/app_name-64x64.png
- user_config/usr/share/applications/app_name.desktop
For the user_config, after changing names and files, copy all content to their respective destinations. The logic follows Debian Dpkg packaging and its placement logic.
Languages
Python
69.2%
HTML
27.9%
CSS
1.6%
JavaScript
0.9%
Shell
0.4%