gitextract_3e73ij71/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── wiki_improvement.md │ ├── PULL_REQUEST_TEMPLATE/ │ │ └── pull_request_template.md │ ├── dependabot.yml │ └── workflows/ │ ├── aur.yml │ ├── ci.yml │ ├── nix-setup.yml │ ├── nix.yml │ ├── site.yml │ └── uv-install.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylintrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── client/ │ ├── pypr-client.c │ ├── pypr-client.rs │ └── pypr-rs/ │ └── Cargo.toml ├── default.nix ├── done.rst ├── examples/ │ ├── README.md │ └── copy_conf.sh ├── flake.nix ├── hatch_build.py ├── justfile ├── package.json ├── pyprland/ │ ├── __init__.py │ ├── adapters/ │ │ ├── __init__.py │ │ ├── backend.py │ │ ├── colors.py │ │ ├── fallback.py │ │ ├── hyprland.py │ │ ├── menus.py │ │ ├── niri.py │ │ ├── proxy.py │ │ ├── units.py │ │ ├── wayland.py │ │ └── xorg.py │ ├── aioops.py │ ├── ansi.py │ ├── client.py │ ├── command.py │ ├── commands/ │ │ ├── __init__.py │ │ ├── discovery.py │ │ ├── models.py │ │ ├── parsing.py │ │ └── tree.py │ ├── common.py │ ├── completions/ │ │ ├── __init__.py │ │ ├── discovery.py │ │ ├── generators/ │ │ │ ├── __init__.py │ │ │ ├── bash.py │ │ │ ├── fish.py │ │ │ └── zsh.py │ │ ├── handlers.py │ │ └── models.py │ ├── config.py │ ├── config_loader.py │ ├── constants.py │ ├── debug.py │ ├── doc.py │ ├── gui/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── api.py │ │ ├── frontend/ │ │ │ ├── .gitignore │ │ │ ├── .vscode/ │ │ │ │ └── extensions.json │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── App.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── DictEditor.vue │ │ │ │ │ ├── FieldInput.vue │ │ │ │ │ └── PluginEditor.vue │ │ │ │ ├── composables/ │ │ │ │ │ ├── useLocalCopy.js │ │ │ │ │ └── useToggleMap.js │ │ │ │ ├── main.js │ │ │ │ ├── style.css │ │ │ │ └── utils.js │ │ │ └── vite.config.js │ │ ├── server.py │ │ └── static/ │ │ ├── assets/ │ │ │ ├── index-CX03GsX-.js │ │ │ └── index-Dpu0NgRN.css │ │ └── index.html │ ├── help.py │ ├── httpclient.py │ ├── ipc.py │ ├── ipc_paths.py │ ├── logging_setup.py │ ├── manager.py │ ├── models.py │ ├── plugins/ │ │ ├── __init__.py │ │ ├── experimental.py │ │ ├── expose.py │ │ ├── fcitx5_switcher.py │ │ ├── fetch_client_menu.py │ │ ├── gamemode.py │ │ ├── interface.py │ │ ├── layout_center.py │ │ ├── lost_windows.py │ │ ├── magnify.py │ │ ├── menubar.py │ │ ├── mixins.py │ │ ├── monitors/ │ │ │ ├── __init__.py │ │ │ ├── commands.py │ │ │ ├── layout.py │ │ │ ├── resolution.py │ │ │ └── schema.py │ │ ├── protocols.py │ │ ├── pyprland/ │ │ │ ├── __init__.py │ │ │ ├── hyprland_core.py │ │ │ ├── niri_core.py │ │ │ └── schema.py │ │ ├── scratchpads/ │ │ │ ├── __init__.py │ │ │ ├── animations.py │ │ │ ├── common.py │ │ │ ├── events.py │ │ │ ├── helpers.py │ │ │ ├── lifecycle.py │ │ │ ├── lookup.py │ │ │ ├── objects.py │ │ │ ├── schema.py │ │ │ ├── transitions.py │ │ │ └── windowruleset.py │ │ ├── shift_monitors.py │ │ ├── shortcuts_menu.py │ │ ├── stash.py │ │ ├── system_notifier.py │ │ ├── toggle_dpms.py │ │ ├── toggle_special.py │ │ ├── wallpapers/ │ │ │ ├── __init__.py │ │ │ ├── cache.py │ │ │ ├── colorutils.py │ │ │ ├── hyprpaper.py │ │ │ ├── imageutils.py │ │ │ ├── models.py │ │ │ ├── online/ │ │ │ │ ├── __init__.py │ │ │ │ └── backends/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── bing.py │ │ │ │ ├── picsum.py │ │ │ │ ├── reddit.py │ │ │ │ ├── unsplash.py │ │ │ │ └── wallhaven.py │ │ │ ├── palette.py │ │ │ ├── templates.py │ │ │ └── theme.py │ │ └── workspaces_follow_focus.py │ ├── process.py │ ├── pypr_daemon.py │ ├── quickstart/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── discovery.py │ │ ├── generator.py │ │ ├── helpers/ │ │ │ ├── __init__.py │ │ │ ├── monitors.py │ │ │ └── scratchpads.py │ │ ├── questions.py │ │ └── wizard.py │ ├── state.py │ ├── terminal.py │ ├── utils.py │ ├── validate_cli.py │ ├── validation.py │ └── version.py ├── pyproject.toml ├── sample_extension/ │ ├── README.md │ ├── pypr_examples/ │ │ ├── __init__.py │ │ └── focus_counter.py │ └── pyproject.toml ├── scripts/ │ ├── backquote_as_links.py │ ├── check_plugin_docs.py │ ├── completions/ │ │ ├── README.md │ │ ├── pypr.bash │ │ └── pypr.zsh │ ├── generate_codebase_overview.py │ ├── generate_monitor_diagrams.py │ ├── generate_plugin_docs.py │ ├── get-pypr │ ├── make_release │ ├── plugin_metadata.toml │ ├── pypr.py │ ├── pypr.sh │ ├── title │ ├── update_get-pypr.sh │ ├── update_version │ └── v_whitelist.py ├── site/ │ ├── .vitepress/ │ │ ├── config.mjs │ │ └── theme/ │ │ ├── custom.css │ │ └── index.js │ ├── Architecture.md │ ├── Architecture_core.md │ ├── Architecture_overview.md │ ├── Commands.md │ ├── Configuration.md │ ├── Development.md │ ├── Examples.md │ ├── Getting-started.md │ ├── InstallVirtualEnvironment.md │ ├── Menu.md │ ├── MultipleConfigurationFiles.md │ ├── Nix.md │ ├── Optimizations.md │ ├── Plugins.md │ ├── Troubleshooting.md │ ├── Variables.md │ ├── components/ │ │ ├── CommandList.vue │ │ ├── ConfigBadges.vue │ │ ├── ConfigTable.vue │ │ ├── EngineDefaults.vue │ │ ├── EngineList.vue │ │ ├── PluginCommands.vue │ │ ├── PluginConfig.vue │ │ ├── PluginList.vue │ │ ├── configHelpers.js │ │ ├── jsonLoader.js │ │ └── usePluginData.js │ ├── expose.md │ ├── fcitx5_switcher.md │ ├── fetch_client_menu.md │ ├── filters.md │ ├── gamemode.md │ ├── generated/ │ │ └── generted_files.keep_me │ ├── index.md │ ├── layout_center.md │ ├── lost_windows.md │ ├── magnify.md │ ├── make_version.sh │ ├── menubar.md │ ├── monitors.md │ ├── scratchpads.md │ ├── scratchpads_advanced.md │ ├── scratchpads_nonstandard.md │ ├── shift_monitors.md │ ├── shortcuts_menu.md │ ├── sidebar.json │ ├── stash.md │ ├── system_notifier.md │ ├── toggle_dpms.md │ ├── toggle_special.md │ ├── versions/ │ │ ├── 2.3.5/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gbar.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.3.6,7/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gbar.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.3.8/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gbar.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.4.0/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gbar.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.4.1+/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gbar.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.4.6/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── bar.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.4.7/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── bar.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.5.x/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── bar.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 2.6.2/ │ │ │ ├── Development.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ └── PluginList.vue │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── menubar.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 3.0.0/ │ │ │ ├── Architecture.md │ │ │ ├── Architecture_core.md │ │ │ ├── Architecture_overview.md │ │ │ ├── Commands.md │ │ │ ├── Configuration.md │ │ │ ├── Development.md │ │ │ ├── Examples.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ ├── ConfigBadges.vue │ │ │ │ ├── ConfigTable.vue │ │ │ │ ├── EngineDefaults.vue │ │ │ │ ├── PluginCommands.vue │ │ │ │ ├── PluginConfig.vue │ │ │ │ ├── PluginList.vue │ │ │ │ ├── configHelpers.js │ │ │ │ └── usePluginData.js │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── generated/ │ │ │ │ ├── expose.json │ │ │ │ ├── fcitx5_switcher.json │ │ │ │ ├── fetch_client_menu.json │ │ │ │ ├── index.json │ │ │ │ ├── layout_center.json │ │ │ │ ├── lost_windows.json │ │ │ │ ├── magnify.json │ │ │ │ ├── menu.json │ │ │ │ ├── menubar.json │ │ │ │ ├── monitors.json │ │ │ │ ├── pyprland.json │ │ │ │ ├── scratchpads.json │ │ │ │ ├── shift_monitors.json │ │ │ │ ├── shortcuts_menu.json │ │ │ │ ├── system_notifier.json │ │ │ │ ├── toggle_dpms.json │ │ │ │ ├── toggle_special.json │ │ │ │ ├── wallpapers.json │ │ │ │ └── workspaces_follow_focus.json │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── menubar.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ ├── wallpapers_online.md │ │ │ ├── wallpapers_templates.md │ │ │ └── workspaces_follow_focus.md │ │ ├── 3.1.1/ │ │ │ ├── Architecture.md │ │ │ ├── Architecture_core.md │ │ │ ├── Architecture_overview.md │ │ │ ├── Commands.md │ │ │ ├── Configuration.md │ │ │ ├── Development.md │ │ │ ├── Examples.md │ │ │ ├── Getting-started.md │ │ │ ├── InstallVirtualEnvironment.md │ │ │ ├── Menu.md │ │ │ ├── MultipleConfigurationFiles.md │ │ │ ├── Nix.md │ │ │ ├── Optimizations.md │ │ │ ├── Plugins.md │ │ │ ├── Troubleshooting.md │ │ │ ├── Variables.md │ │ │ ├── components/ │ │ │ │ ├── CommandList.vue │ │ │ │ ├── ConfigBadges.vue │ │ │ │ ├── ConfigTable.vue │ │ │ │ ├── EngineDefaults.vue │ │ │ │ ├── EngineList.vue │ │ │ │ ├── PluginCommands.vue │ │ │ │ ├── PluginConfig.vue │ │ │ │ ├── PluginList.vue │ │ │ │ ├── configHelpers.js │ │ │ │ ├── jsonLoader.js │ │ │ │ └── usePluginData.js │ │ │ ├── expose.md │ │ │ ├── fcitx5_switcher.md │ │ │ ├── fetch_client_menu.md │ │ │ ├── filters.md │ │ │ ├── gamemode.md │ │ │ ├── generated/ │ │ │ │ ├── expose.json │ │ │ │ ├── fcitx5_switcher.json │ │ │ │ ├── fetch_client_menu.json │ │ │ │ ├── gamemode.json │ │ │ │ ├── index.json │ │ │ │ ├── layout_center.json │ │ │ │ ├── lost_windows.json │ │ │ │ ├── magnify.json │ │ │ │ ├── menu.json │ │ │ │ ├── menubar.json │ │ │ │ ├── monitors.json │ │ │ │ ├── pyprland.json │ │ │ │ ├── scratchpads.json │ │ │ │ ├── shift_monitors.json │ │ │ │ ├── shortcuts_menu.json │ │ │ │ ├── system_notifier.json │ │ │ │ ├── toggle_dpms.json │ │ │ │ ├── toggle_special.json │ │ │ │ ├── wallpapers.json │ │ │ │ └── workspaces_follow_focus.json │ │ │ ├── index.md │ │ │ ├── layout_center.md │ │ │ ├── lost_windows.md │ │ │ ├── magnify.md │ │ │ ├── menubar.md │ │ │ ├── monitors.md │ │ │ ├── scratchpads.md │ │ │ ├── scratchpads_advanced.md │ │ │ ├── scratchpads_nonstandard.md │ │ │ ├── shift_monitors.md │ │ │ ├── shortcuts_menu.md │ │ │ ├── sidebar.json │ │ │ ├── system_notifier.md │ │ │ ├── toggle_dpms.md │ │ │ ├── toggle_special.md │ │ │ ├── wallpapers.md │ │ │ ├── wallpapers_online.md │ │ │ ├── wallpapers_templates.md │ │ │ └── workspaces_follow_focus.md │ │ └── 3.2.1/ │ │ ├── Architecture.md │ │ ├── Architecture_core.md │ │ ├── Architecture_overview.md │ │ ├── Commands.md │ │ ├── Configuration.md │ │ ├── Development.md │ │ ├── Examples.md │ │ ├── Getting-started.md │ │ ├── InstallVirtualEnvironment.md │ │ ├── Menu.md │ │ ├── MultipleConfigurationFiles.md │ │ ├── Nix.md │ │ ├── Optimizations.md │ │ ├── Plugins.md │ │ ├── Troubleshooting.md │ │ ├── Variables.md │ │ ├── components/ │ │ │ ├── CommandList.vue │ │ │ ├── ConfigBadges.vue │ │ │ ├── ConfigTable.vue │ │ │ ├── EngineDefaults.vue │ │ │ ├── EngineList.vue │ │ │ ├── PluginCommands.vue │ │ │ ├── PluginConfig.vue │ │ │ ├── PluginList.vue │ │ │ ├── configHelpers.js │ │ │ ├── jsonLoader.js │ │ │ └── usePluginData.js │ │ ├── expose.md │ │ ├── fcitx5_switcher.md │ │ ├── fetch_client_menu.md │ │ ├── filters.md │ │ ├── gamemode.md │ │ ├── generated/ │ │ │ ├── expose.json │ │ │ ├── fcitx5_switcher.json │ │ │ ├── fetch_client_menu.json │ │ │ ├── gamemode.json │ │ │ ├── index.json │ │ │ ├── layout_center.json │ │ │ ├── lost_windows.json │ │ │ ├── magnify.json │ │ │ ├── menu.json │ │ │ ├── menubar.json │ │ │ ├── monitors.json │ │ │ ├── pyprland.json │ │ │ ├── scratchpads.json │ │ │ ├── shift_monitors.json │ │ │ ├── shortcuts_menu.json │ │ │ ├── stash.json │ │ │ ├── system_notifier.json │ │ │ ├── toggle_dpms.json │ │ │ ├── toggle_special.json │ │ │ ├── wallpapers.json │ │ │ └── workspaces_follow_focus.json │ │ ├── index.md │ │ ├── layout_center.md │ │ ├── lost_windows.md │ │ ├── magnify.md │ │ ├── menubar.md │ │ ├── monitors.md │ │ ├── scratchpads.md │ │ ├── scratchpads_advanced.md │ │ ├── scratchpads_nonstandard.md │ │ ├── shift_monitors.md │ │ ├── shortcuts_menu.md │ │ ├── sidebar.json │ │ ├── stash.md │ │ ├── system_notifier.md │ │ ├── toggle_dpms.md │ │ ├── toggle_special.md │ │ ├── wallpapers.md │ │ ├── wallpapers_online.md │ │ ├── wallpapers_templates.md │ │ └── workspaces_follow_focus.md │ ├── wallpapers.md │ ├── wallpapers_online.md │ ├── wallpapers_templates.md │ └── workspaces_follow_focus.md ├── systemd-unit/ │ └── pyprland.service ├── tests/ │ ├── __init__.py │ ├── conftest.py │ ├── sample_config.toml │ ├── test_adapters_fallback.py │ ├── test_ansi.py │ ├── test_command.py │ ├── test_command_registry.py │ ├── test_common_types.py │ ├── test_common_utils.py │ ├── test_completions.py │ ├── test_config.py │ ├── test_event_signatures.py │ ├── test_external_plugins.py │ ├── test_http.py │ ├── test_interface.py │ ├── test_ipc.py │ ├── test_load_all.py │ ├── test_monitors_commands.py │ ├── test_monitors_layout.py │ ├── test_monitors_resolution.py │ ├── test_plugin_expose.py │ ├── test_plugin_fetch_client_menu.py │ ├── test_plugin_layout_center.py │ ├── test_plugin_lost_windows.py │ ├── test_plugin_magnify.py │ ├── test_plugin_menubar.py │ ├── test_plugin_monitor.py │ ├── test_plugin_scratchpads.py │ ├── test_plugin_shift_monitors.py │ ├── test_plugin_shortcuts_menu.py │ ├── test_plugin_stash.py │ ├── test_plugin_system_notifier.py │ ├── test_plugin_toggle_dpms.py │ ├── test_plugin_toggle_special.py │ ├── test_plugin_wallpapers.py │ ├── test_plugin_workspaces_follow_focus.py │ ├── test_process.py │ ├── test_pyprland.py │ ├── test_scratchpad_vulnerabilities.py │ ├── test_string_template.py │ ├── test_wallpapers_cache.py │ ├── test_wallpapers_colors.py │ ├── test_wallpapers_imageutils.py │ ├── testtools.py │ └── vreg/ │ ├── 01_client_id_change.py │ └── run_tests.sh ├── tickets.rst └── tox.ini