SYMBOL INDEX (1870 symbols across 178 files) FILE: client/pypr-client.c function main (line 20) | int main(int argc, char *argv[]) { FILE: client/pypr-client.rs constant EXIT_SUCCESS (line 7) | const EXIT_SUCCESS: i32 = 0; constant EXIT_USAGE_ERROR (line 8) | const EXIT_USAGE_ERROR: i32 = 1; constant EXIT_ENV_ERROR (line 9) | const EXIT_ENV_ERROR: i32 = 2; constant EXIT_CONNECTION_ERROR (line 10) | const EXIT_CONNECTION_ERROR: i32 = 3; constant EXIT_COMMAND_ERROR (line 11) | const EXIT_COMMAND_ERROR: i32 = 4; function run (line 13) | fn run() -> Result<(), i32> { function main (line 98) | fn main() { FILE: hatch_build.py function _find_compiler (line 24) | def _find_compiler() -> str: function _try_compile (line 39) | def _try_compile(cc: str, source: Path, *, static: bool = False) -> tupl... class NativeClientBuildHook (line 76) | class NativeClientBuildHook(BuildHookInterface): method initialize (line 81) | def initialize(self, version: str, build_data: dict) -> None: # noqa:... FILE: pyprland/adapters/backend.py class EnvironmentBackend (line 22) | class EnvironmentBackend(ABC): method __init__ (line 30) | def __init__(self, state: SharedState) -> None: method get_clients (line 39) | async def get_clients( method get_monitors (line 57) | async def get_monitors(self, *, log: Logger, include_disabled: bool = ... method parse_event (line 66) | def parse_event(self, raw_data: str, *, log: Logger) -> tuple[str, Any... method get_monitor_props (line 74) | async def get_monitor_props( method execute (line 101) | async def execute(self, command: str | list | dict, *, log: Logger, **... method execute_json (line 111) | async def execute_json(self, command: str, *, log: Logger, **kwargs: A... method execute_batch (line 121) | async def execute_batch(self, commands: list[str], *, log: Logger) -> ... method notify (line 130) | async def notify(self, message: str, duration: int, color: str, *, log... method notify_info (line 140) | async def notify_info(self, message: str, duration: int = 5000, *, log... method notify_error (line 150) | async def notify_error(self, message: str, duration: int = 5000, *, lo... method get_client_props (line 160) | async def get_client_props( method focus_window (line 209) | async def focus_window(self, address: str, *, log: Logger) -> bool: method move_window_to_workspace (line 221) | async def move_window_to_workspace( method pin_window (line 243) | async def pin_window(self, address: str, *, log: Logger) -> bool: method close_window (line 255) | async def close_window(self, address: str, *, silent: bool = True, log... method resize_window (line 268) | async def resize_window(self, address: str, width: int, height: int, *... method move_window (line 282) | async def move_window(self, address: str, x: int, y: int, *, log: Logg... method toggle_floating (line 296) | async def toggle_floating(self, address: str, *, log: Logger) -> bool: method set_keyword (line 308) | async def set_keyword(self, keyword_command: str, *, log: Logger) -> b... FILE: pyprland/adapters/colors.py function convert_color (line 4) | def convert_color(description: str) -> str: FILE: pyprland/adapters/fallback.py function make_monitor_info (line 14) | def make_monitor_info( # noqa: PLR0913 # pylint: disable=too-many-argu... class FallbackBackend (line 73) | class FallbackBackend(EnvironmentBackend): method get_clients (line 84) | async def get_clients( method parse_event (line 106) | def parse_event(self, raw_data: str, *, log: Logger) -> tuple[str, Any... method execute (line 118) | async def execute(self, command: str | list | dict, *, log: Logger, **... method execute_batch (line 132) | async def execute_batch(self, commands: list[str], *, log: Logger) -> ... method execute_json (line 141) | async def execute_json(self, command: str, *, log: Logger, **kwargs: A... method notify (line 155) | async def notify( method is_available (line 185) | async def is_available(cls) -> bool: method _check_command (line 196) | async def _check_command(cls, command: str) -> bool: method _run_monitor_command (line 215) | async def _run_monitor_command( FILE: pyprland/adapters/hyprland.py class HyprlandBackend (line 17) | class HyprlandBackend(EnvironmentBackend): method _format_command (line 20) | def _format_command(self, command_list: list[str] | list[list[str]], d... method execute (line 31) | async def execute(self, command: str | list | dict, *, log: Logger, **... method execute_json (line 69) | async def execute_json(self, command: str, *, log: Logger, **kwargs: A... method get_clients (line 81) | async def get_clients( method get_monitors (line 105) | async def get_monitors(self, *, log: Logger, include_disabled: bool = ... method execute_batch (line 115) | async def execute_batch(self, commands: list[str], *, log: Logger) -> ... method parse_event (line 137) | def parse_event(self, raw_data: str, *, log: Logger) -> tuple[str, Any... method notify (line 149) | async def notify(self, message: str, duration: int = DEFAULT_NOTIFICAT... method notify_info (line 161) | async def notify_info(self, message: str, duration: int = DEFAULT_NOTI... method notify_error (line 172) | async def notify_error(self, message: str, duration: int = DEFAULT_NOT... method _notify_impl (line 183) | async def _notify_impl(self, text: str, duration: int, color: str, ico... FILE: pyprland/adapters/menus.py class MenuEngine (line 21) | class MenuEngine: method __init__ (line 31) | def __init__(self, extra_parameters: str) -> None: method is_available (line 41) | def is_available(cls) -> bool: method run (line 49) | async def run(self, choices: Iterable[str], prompt: str = "") -> str: function _menu (line 84) | def _menu(proc: str, params: str) -> type[MenuEngine]: function init (line 117) | async def init(force_engine: str | None = None, extra_parameters: str = ... class MenuMixin (line 148) | class MenuMixin: method ensure_menu_configured (line 177) | async def ensure_menu_configured(self) -> None: method on_reload (line 184) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... FILE: pyprland/adapters/niri.py function get_niri_transform (line 35) | def get_niri_transform(value: str, default: int = 0) -> int: function niri_output_to_monitor_info (line 48) | def niri_output_to_monitor_info(name: str, data: dict[str, Any]) -> Moni... class NiriBackend (line 118) | class NiriBackend(EnvironmentBackend): method parse_event (line 121) | def parse_event(self, raw_data: str, *, log: Logger) -> tuple[str, Any... method execute (line 142) | async def execute(self, command: str | list | dict, *, log: Logger, **... method execute_json (line 172) | async def execute_json(self, command: str, *, log: Logger, **kwargs: A... method get_clients (line 186) | async def get_clients( method _map_niri_client (line 210) | def _map_niri_client(self, niri_client: dict[str, Any]) -> ClientInfo: method get_monitors (line 239) | async def get_monitors(self, *, log: Logger, include_disabled: bool = ... method execute_batch (line 249) | async def execute_batch(self, commands: list[str], *, log: Logger) -> ... method notify (line 272) | async def notify( method focus_window (line 295) | async def focus_window(self, address: str, *, log: Logger) -> bool: method move_window_to_workspace (line 304) | async def move_window_to_workspace( method pin_window (line 325) | async def pin_window(self, address: str, *, log: Logger) -> bool: method close_window (line 335) | async def close_window(self, address: str, *, silent: bool = True, log... method resize_window (line 345) | async def resize_window(self, address: str, width: int, height: int, *... method move_window (line 357) | async def move_window(self, address: str, x: int, y: int, *, log: Logg... method toggle_floating (line 369) | async def toggle_floating(self, address: str, *, log: Logger) -> bool: method set_keyword (line 379) | async def set_keyword(self, keyword_command: str, *, log: Logger) -> b... FILE: pyprland/adapters/proxy.py class BackendProxy (line 19) | class BackendProxy: method __init__ (line 31) | def __init__(self, backend: "EnvironmentBackend", log: Logger) -> None: method execute (line 44) | async def execute(self, command: str | list | dict, **kwargs: Any) -> ... method execute_json (line 56) | async def execute_json(self, command: str, **kwargs: Any) -> Any: method execute_batch (line 68) | async def execute_batch(self, commands: list[str]) -> None: method get_clients (line 78) | async def get_clients( method get_monitors (line 96) | async def get_monitors(self, include_disabled: bool = False) -> list[M... method get_monitor_props (line 107) | async def get_monitor_props( method get_client_props (line 123) | async def get_client_props( method notify (line 143) | async def notify(self, message: str, duration: int = 5000, color: str ... method notify_info (line 153) | async def notify_info(self, message: str, duration: int = 5000) -> None: method notify_error (line 162) | async def notify_error(self, message: str, duration: int = 5000) -> None: method focus_window (line 173) | async def focus_window(self, address: str) -> bool: method move_window_to_workspace (line 184) | async def move_window_to_workspace( method pin_window (line 203) | async def pin_window(self, address: str) -> bool: method close_window (line 214) | async def close_window(self, address: str, silent: bool = True) -> bool: method resize_window (line 226) | async def resize_window(self, address: str, width: int, height: int) -... method move_window (line 239) | async def move_window(self, address: str, x: int, y: int) -> bool: # ... method toggle_floating (line 252) | async def toggle_floating(self, address: str) -> bool: method set_keyword (line 263) | async def set_keyword(self, keyword_command: str) -> bool: method parse_event (line 276) | def parse_event(self, raw_data: str) -> tuple[str, Any] | None: FILE: pyprland/adapters/units.py function convert_monitor_dimension (line 11) | def convert_monitor_dimension(size: int | str, ref_value: int, monitor: ... function convert_coords (line 37) | def convert_coords(coords: str, monitor: MonitorInfo) -> list[int]: FILE: pyprland/adapters/wayland.py class WaylandBackend (line 11) | class WaylandBackend(FallbackBackend): method is_available (line 20) | async def is_available(cls) -> bool: method get_monitors (line 28) | async def get_monitors(self, *, log: Logger, include_disabled: bool = ... method _parse_wlr_randr_output (line 46) | def _parse_wlr_randr_output(self, output: str, include_disabled: bool,... method _parse_output_section (line 92) | def _parse_output_section( # noqa: C901 # pylint: disable=too-many-l... FILE: pyprland/adapters/xorg.py class XorgBackend (line 20) | class XorgBackend(FallbackBackend): method is_available (line 28) | async def is_available(cls) -> bool: method get_monitors (line 36) | async def get_monitors(self, *, log: Logger, include_disabled: bool = ... method _parse_xrandr_output (line 54) | def _parse_xrandr_output( # pylint: disable=too-many-locals FILE: pyprland/aioops.py class AsyncFile (line 42) | class AsyncFile: method __init__ (line 49) | def __init__(self, file: io.TextIOWrapper) -> None: method readlines (line 52) | async def readlines(self) -> list[str]: method read (line 56) | async def read(self) -> str: method __aenter__ (line 60) | async def __aenter__(self) -> Self: method __aexit__ (line 63) | async def __aexit__( function aiopen (line 72) | async def aiopen(*args, **kwargs) -> AsyncIterator[AsyncFile]: function aiexists (line 77) | async def aiexists(*args, **kwargs) -> bool: function aiisdir (line 81) | async def aiisdir(*args, **kwargs) -> bool: function aiisfile (line 85) | async def aiisfile(*args, **kwargs) -> bool: function ailistdir (line 89) | async def ailistdir(*args, **kwargs) -> list[str]: # type: ignore[no-re... function aiunlink (line 93) | async def aiunlink(*args, **kwargs) -> None: # type: ignore[no-redef, m... function airmtree (line 98) | async def airmtree(path: str) -> None: function airmdir (line 109) | async def airmdir(path: str) -> None: function is_process_running (line 120) | async def is_process_running(name: str) -> bool: function graceful_cancel_tasks (line 142) | async def graceful_cancel_tasks( class DebouncedTask (line 178) | class DebouncedTask: method __init__ (line 196) | def __init__(self, ignore_window: float = 3.0) -> None: method schedule (line 207) | def schedule(self, coro_func: Callable[[], Coroutine[Any, Any, Any]], ... method set_ignore_window (line 236) | def set_ignore_window(self) -> None: method cancel (line 244) | def cancel(self) -> None: class TaskManager (line 251) | class TaskManager: method __init__ (line 284) | def __init__( method running (line 303) | def running(self) -> bool: method start (line 307) | def start(self) -> None: method create (line 312) | def create(self, coro: Coroutine[Any, Any, Any], *, key: str | None = ... method _wrap_task (line 331) | async def _wrap_task(self, coro: Coroutine[Any, Any, Any]) -> None: method cancel_keyed (line 345) | def cancel_keyed(self, key: str) -> bool: method sleep (line 360) | async def sleep(self, duration: float) -> bool: method stop (line 380) | async def stop(self) -> None: FILE: pyprland/ansi.py function should_colorize (line 47) | def should_colorize(stream: TextIO | None = None) -> bool: function colorize (line 70) | def colorize(text: str, *codes: str) -> str: function make_style (line 85) | def make_style(*codes: str) -> tuple[str, str]: class LogStyles (line 99) | class LogStyles: class HandlerStyles (line 107) | class HandlerStyles: FILE: pyprland/client.py function _get_config_file_path (line 16) | def _get_config_file_path() -> str: function run_client (line 32) | async def run_client() -> None: FILE: pyprland/command.py function use_param (line 19) | def use_param(txt: str, optional_value: Literal[False] = ...) -> str: ... function use_param (line 23) | def use_param(txt: str, optional_value: Literal[True]) -> str | bool: ... function use_param (line 26) | def use_param(txt: str, optional_value: bool = False) -> str | bool: function _run (line 53) | def _run(invoke_daemon: bool) -> None: function main (line 78) | def main() -> None: FILE: pyprland/commands/discovery.py function extract_commands_from_object (line 17) | def extract_commands_from_object(obj: object, source: str) -> list[Comma... function get_client_commands (line 58) | def get_client_commands() -> list[CommandInfo]: function get_all_commands (line 81) | def get_all_commands(manager: Pyprland) -> dict[str, CommandInfo]: FILE: pyprland/commands/models.py class CommandArg (line 23) | class CommandArg: class CommandInfo (line 31) | class CommandInfo: class CommandNode (line 42) | class CommandNode: FILE: pyprland/commands/parsing.py function normalize_command_name (line 15) | def normalize_command_name(cmd: str) -> str: function parse_docstring (line 30) | def parse_docstring(docstring: str) -> tuple[list[CommandArg], str, str]: FILE: pyprland/commands/tree.py function get_parent_prefixes (line 16) | def get_parent_prefixes(commands: dict[str, str] | Iterable[str]) -> set... function get_display_name (line 47) | def get_display_name(cmd_name: str, parent_prefixes: set[str]) -> str: function build_command_tree (line 70) | def build_command_tree(commands: dict[str, CommandInfo]) -> dict[str, Co... FILE: pyprland/completions/discovery.py function _classify_arg (line 28) | def _classify_arg( function _build_completion_args (line 67) | def _build_completion_args( function _build_command_from_node (line 90) | def _build_command_from_node( function _apply_command_overrides (line 121) | def _apply_command_overrides(commands: dict[str, CommandCompletion], man... function get_command_completions (line 198) | def get_command_completions(manager: Pyprland) -> dict[str, CommandCompl... FILE: pyprland/completions/generators/bash.py function _build_subcommand_case (line 13) | def _build_subcommand_case(cmd_name: str, cmd: CommandCompletion) -> str: function _build_help_case (line 39) | def _build_help_case(cmd: CommandCompletion, all_commands: str) -> str: function _build_args_case (line 67) | def _build_args_case(cmd_name: str, cmd: CommandCompletion) -> str | None: function generate_bash (line 89) | def generate_bash(commands: dict[str, CommandCompletion]) -> str: FILE: pyprland/completions/generators/fish.py function _build_main_commands (line 27) | def _build_main_commands(commands: dict[str, CommandCompletion]) -> list... function _build_subcommand_completions (line 43) | def _build_subcommand_completions(cmd_name: str, cmd: CommandCompletion)... function _build_help_completions (line 60) | def _build_help_completions(cmd: CommandCompletion, all_commands: list[s... function _build_args_completions (line 85) | def _build_args_completions(cmd_name: str, cmd: CommandCompletion) -> li... function generate_fish (line 101) | def generate_fish(commands: dict[str, CommandCompletion]) -> str: FILE: pyprland/completions/generators/zsh.py function _build_command_descriptions (line 13) | def _build_command_descriptions(commands: dict[str, CommandCompletion]) ... function _build_subcommand_case (line 26) | def _build_subcommand_case(cmd_name: str, cmd: CommandCompletion) -> str: function _build_help_case (line 42) | def _build_help_case(cmd: CommandCompletion) -> str: function _build_args_case (line 71) | def _build_args_case(cmd_name: str, cmd: CommandCompletion) -> str | None: function generate_zsh (line 98) | def generate_zsh(commands: dict[str, CommandCompletion]) -> str: FILE: pyprland/completions/handlers.py function get_default_path (line 23) | def get_default_path(shell: str) -> str: function _get_success_message (line 35) | def _get_success_message(shell: str, output_path: str, used_default: boo... function _parse_compgen_args (line 70) | def _parse_compgen_args(args: str) -> tuple[bool, str, str | None]: function handle_compgen (line 97) | def handle_compgen(manager: Pyprland, args: str) -> tuple[bool, str]: FILE: pyprland/completions/models.py class CompletionArg (line 47) | class CompletionArg: class CommandCompletion (line 58) | class CommandCompletion: FILE: pyprland/config.py function coerce_to_bool (line 33) | def coerce_to_bool(value: ConfigValueType | None, default: bool = False)... class SchemaAwareMixin (line 59) | class SchemaAwareMixin: method __init_schema__ (line 75) | def __init_schema__(self) -> None: method set_schema (line 79) | def set_schema(self, schema: ConfigItems) -> None: method _get_raw (line 87) | def _get_raw(self, name: str) -> ConfigValueType: method get (line 95) | def get(self, name: str) -> ConfigValueType | None: ... method get (line 98) | def get(self, name: str, default: None) -> ConfigValueType | None: ... method get (line 101) | def get(self, name: str, default: ConfigValueType) -> ConfigValueType:... method get (line 103) | def get(self, name: str, default: ConfigValueType | None = None) -> Co... method get_bool (line 120) | def get_bool(self, name: str, default: bool = False) -> bool: method get_int (line 139) | def get_int(self, name: str, default: int = 0) -> int: method get_float (line 158) | def get_float(self, name: str, default: float = 0.0) -> float: method get_str (line 177) | def get_str(self, name: str, default: str = "") -> str: method has_explicit (line 192) | def has_explicit(self, name: str) -> bool: class Configuration (line 208) | class Configuration(SchemaAwareMixin, dict): method __init__ (line 214) | def __init__( method _get_raw (line 235) | def _get_raw(self, name: str) -> ConfigValueType: method get (line 241) | def get(self, name: str, default: ConfigValueType | None = None) -> Co... method iter_subsections (line 253) | def iter_subsections(self) -> Iterator[tuple[str, dict[str, Any]]]: FILE: pyprland/config_loader.py function resolve_config_path (line 41) | def resolve_config_path(config_filename: str) -> Path: function load_toml (line 53) | def load_toml(path: Path) -> dict[str, Any]: function load_toml_directory (line 67) | def load_toml_directory(directory: Path) -> dict[str, Any]: function load_config (line 77) | def load_config(config_filename: str | None = None) -> dict[str, Any]: class ConfigLoader (line 110) | class ConfigLoader: method __init__ (line 120) | def __init__(self, log: logging.Logger) -> None: method config (line 131) | def config(self) -> dict[str, Any]: method load (line 135) | async def load(self, config_filename: str = "") -> dict[str, Any]: method _open_config (line 152) | async def _open_config(self, config_filename: str = "") -> dict[str, A... method _load_config_directory (line 208) | def _load_config_directory(self, directory: Path) -> dict[str, Any]: method _load_config_file (line 221) | def _load_config_file(self, fname: Path) -> dict[str, Any]: FILE: pyprland/debug.py class _DebugState (line 12) | class _DebugState: function is_debug (line 21) | def is_debug() -> bool: function set_debug (line 26) | def set_debug(value: bool) -> None: FILE: pyprland/doc.py function _c (line 23) | def _c(text: str, *codes: str) -> str: function _format_default (line 30) | def _format_default(value: Any) -> str: function _get_plugin_description (line 43) | def _get_plugin_description(plugin: Plugin) -> str: function format_plugin_list (line 51) | def format_plugin_list(plugins: dict[str, Plugin]) -> str: function format_plugin_doc (line 82) | def format_plugin_doc( function _format_config_section (line 137) | def _format_config_section(schema: ConfigItems) -> list[str]: function _format_field_brief (line 161) | def _format_field_brief(field: ConfigField) -> list[str]: function _format_field_status (line 194) | def _format_field_status(field: ConfigField) -> str: function _format_field_choices (line 203) | def _format_field_choices(field: ConfigField) -> list[str]: function _format_field_children (line 214) | def _format_field_children(field: ConfigField) -> list[str]: function format_config_field_doc (line 226) | def format_config_field_doc(plugin_name: str, field: ConfigField) -> str: FILE: pyprland/gui/__init__.py function _find_free_port (line 47) | def _find_free_port() -> int: function _write_lock (line 54) | def _write_lock(port: int) -> None: function _remove_lock (line 60) | def _remove_lock() -> None: function _check_existing_instance (line 71) | def _check_existing_instance() -> int | None: function _wait_for_server (line 104) | def _wait_for_server(port: int) -> bool: function _start_server (line 120) | def _start_server(port: int) -> None: function _daemonize_server (line 132) | def _daemonize_server(port: int) -> bool: function main (line 157) | def main() -> None: FILE: pyprland/gui/api.py function _field_to_dict (line 58) | def _field_to_dict(field: ConfigField) -> dict[str, Any]: function _schema_to_list (line 82) | def _schema_to_list(schema: ConfigItems | None) -> list[dict[str, Any]]: function _plugin_to_dict (line 89) | def _plugin_to_dict(plugin: PluginInfo) -> dict[str, Any]: function get_plugins_schema (line 110) | def get_plugins_schema() -> list[dict[str, Any]]: function get_config (line 121) | def get_config() -> dict[str, Any]: function validate_config (line 144) | def validate_config(config: dict[str, Any]) -> list[str]: function _toml_key (line 195) | def _toml_key(key: str) -> str: function _generate_plugin_toml (line 204) | def _generate_plugin_toml(plugin_name: str, plugin_data: dict[str, Any])... function _write_subtable (line 250) | def _write_subtable(lines: list[str], prefix: str, data: dict[str, Any])... function _generate_variables_toml (line 269) | def _generate_variables_toml(variables: dict[str, Any]) -> str: function _generate_main_toml (line 283) | def _generate_main_toml( function _backup_conf_d_file (line 325) | def _backup_conf_d_file(path: Path) -> Path | None: function _find_conf_d (line 335) | def _find_conf_d(config_path: Path) -> tuple[list[str], Path | None]: function _write_confd_plugins (line 351) | def _write_confd_plugins( function _cleanup_composite_files (line 392) | def _cleanup_composite_files( function save_config (line 411) | def save_config(config: dict[str, Any]) -> dict[str, Any]: function _save_result (line 469) | def _save_result( function _generate_plugin_toml_raw (line 487) | def _generate_plugin_toml_raw(existing_data: dict[str, Any]) -> str: function _send_ipc_command (line 523) | async def _send_ipc_command(command: str) -> str: function apply_config (line 542) | async def apply_config(config: dict[str, Any]) -> dict[str, Any]: FILE: pyprland/gui/frontend/src/composables/useLocalCopy.js function useLocalCopy (line 12) | function useLocalCopy(propGetter, emit, eventName) { FILE: pyprland/gui/frontend/src/composables/useToggleMap.js function useToggleMap (line 8) | function useToggleMap() { FILE: pyprland/gui/frontend/src/utils.js function tryParseJson (line 11) | function tryParseJson(raw, fallback) { function formatValue (line 19) | function formatValue(val) { function groupFields (line 30) | function groupFields(fields) { FILE: pyprland/gui/server.py function handle_get_plugins (line 27) | async def handle_get_plugins(_request: web.Request) -> web.Response: function handle_get_config (line 33) | async def handle_get_config(_request: web.Request) -> web.Response: function handle_validate (line 39) | async def handle_validate(request: web.Request) -> web.Response: function handle_save (line 47) | async def handle_save(request: web.Request) -> web.Response: function handle_apply (line 55) | async def handle_apply(request: web.Request) -> web.Response: function handle_spa_fallback (line 71) | async def handle_spa_fallback(request: web.Request) -> web.FileResponse: function create_app (line 96) | def create_app() -> web.Application: FILE: pyprland/gui/static/assets/index-CX03GsX-.js function t (line 1) | function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.r... function n (line 1) | function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)} function e (line 1) | function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1... function ue (line 1) | function ue(e){if(d(e)){let t={};for(let n=0;n{if... function k (line 1) | function k(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;nye(e,t))} method constructor (line 1) | constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effect... method active (line 1) | get active(){return this._active} method pause (line 1) | pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=... method resume (line 1) | resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,t;if(t... method run (line 1) | run(e){if(this._active){let t=j;try{return j=this,e()}finally{j=t}}} method on (line 1) | on(){++this._on===1&&(this.prevScope=j,j=this)} method off (line 1) | off(){this._on>0&&--this._on===0&&(j=this.prevScope,this.prevScope=void 0)} method stop (line 1) | stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.... function Te (line 1) | function Te(){return j} method constructor (line 1) | constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flag... method pause (line 1) | pause(){this.flags|=64} method resume (line 1) | resume(){this.flags&64&&(this.flags&=-65,Ee.has(this)&&(Ee.delete(this),... method notify (line 1) | notify(){this.flags&2&&!(this.flags&32)||this.flags&8||je(this)} method run (line 1) | run(){if(!(this.flags&1))return this.fn();this.flags|=2,We(this),Pe(this... method stop (line 1) | stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)Re(e);this.dep... method trigger (line 1) | trigger(){this.flags&64?Ee.add(this):this.scheduler?this.scheduler():thi... method runIfDirty (line 1) | runIfDirty(){Ie(this)&&this.run()} method dirty (line 1) | get dirty(){return Ie(this)} function je (line 1) | function je(e,t=!1){if(e.flags|=8,t){e.next=Ae,Ae=e;return}e.next=ke,ke=e} function Me (line 1) | function Me(){Oe++} function Ne (line 1) | function Ne(){if(--Oe>0)return;if(Ae){let e=Ae;for(Ae=void 0;e;){let t=e... function Pe (line 1) | function Pe(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveL... function Fe (line 1) | function Fe(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version... function Ie (line 1) | function Ie(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.versi... function Le (line 1) | function Le(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersio... function Re (line 1) | function Re(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,... function ze (line 1) | function ze(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void... function He (line 1) | function He(){Ve.push(Be),Be=!1} function Ue (line 1) | function Ue(){let e=Ve.pop();Be=e===void 0?!0:e} function We (line 1) | function We(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=M;M=void 0;... method constructor (line 1) | constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextD... method constructor (line 1) | constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,thi... method track (line 1) | track(e){if(!M||!Be||M===this.computed)return;let t=this.activeLink;if(t... method trigger (line 1) | trigger(e){this.version++,Ge++,this.notify(e)} method notify (line 1) | notify(e){Me();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.s... function Je (line 1) | function Je(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!... function N (line 1) | function N(e,t,n){if(Be&&M){let t=Ye.get(e);t||Ye.set(e,t=new Map);let r... function $e (line 1) | function $e(e,t,n,r,i,a){let o=Ye.get(e);if(!o){Ge++;return}let s=e=>{e&... function et (line 1) | function et(e){let t=F(e);return t===e?t:(N(t,`iterate`,Qe),P(e)?t:t.map... function tt (line 1) | function tt(e){return N(e=F(e),`iterate`,Qe),e} function nt (line 1) | function nt(e,t){return zt(e)?Ht(Rt(e)?I(t):t):I(t)} method [Symbol.iterator] (line 1) | [Symbol.iterator](){return it(this,Symbol.iterator,e=>nt(this,e))} method concat (line 1) | concat(...e){return et(this).concat(...e.map(e=>d(e)?et(e):e))} method entries (line 1) | entries(){return it(this,`entries`,e=>(e[1]=nt(this,e[1]),e))} method every (line 1) | every(e,t){return ot(this,`every`,e,t,void 0,arguments)} method filter (line 1) | filter(e,t){return ot(this,`filter`,e,t,e=>e.map(e=>nt(this,e)),arguments)} method find (line 1) | find(e,t){return ot(this,`find`,e,t,e=>nt(this,e),arguments)} method findIndex (line 1) | findIndex(e,t){return ot(this,`findIndex`,e,t,void 0,arguments)} method findLast (line 1) | findLast(e,t){return ot(this,`findLast`,e,t,e=>nt(this,e),arguments)} method findLastIndex (line 1) | findLastIndex(e,t){return ot(this,`findLastIndex`,e,t,void 0,arguments)} method forEach (line 1) | forEach(e,t){return ot(this,`forEach`,e,t,void 0,arguments)} method includes (line 1) | includes(...e){return ct(this,`includes`,e)} method indexOf (line 1) | indexOf(...e){return ct(this,`indexOf`,e)} method join (line 1) | join(e){return et(this).join(e)} method lastIndexOf (line 1) | lastIndexOf(...e){return ct(this,`lastIndexOf`,e)} method map (line 1) | map(e,t){return ot(this,`map`,e,t,void 0,arguments)} method pop (line 1) | pop(){return lt(this,`pop`)} method push (line 1) | push(...e){return lt(this,`push`,e)} method reduce (line 1) | reduce(e,...t){return st(this,`reduce`,e,t)} method reduceRight (line 1) | reduceRight(e,...t){return st(this,`reduceRight`,e,t)} method shift (line 1) | shift(){return lt(this,`shift`)} method some (line 1) | some(e,t){return ot(this,`some`,e,t,void 0,arguments)} method splice (line 1) | splice(...e){return lt(this,`splice`,e)} method toReversed (line 1) | toReversed(){return et(this).toReversed()} method toSorted (line 1) | toSorted(e){return et(this).toSorted(e)} method toSpliced (line 1) | toSpliced(...e){return et(this).toSpliced(...e)} method unshift (line 1) | unshift(...e){return lt(this,`unshift`,e)} method values (line 1) | values(){return it(this,`values`,e=>nt(this,e))} function it (line 1) | function it(e,t,n){let r=tt(e),i=r[t]();return r!==e&&!P(e)&&(i._next=i.... function ot (line 1) | function ot(e,t,n,r,i,a){let o=tt(e),s=o!==e&&!P(e),c=o[t];if(c!==at[t])... function st (line 1) | function st(e,t,n,r){let i=tt(e),a=i!==e&&!P(e),o=n,s=!1;i!==e&&(a?(s=r.... function ct (line 1) | function ct(e,t,n){let r=F(e);N(r,`iterate`,Qe);let i=r[t](...n);return(... function lt (line 1) | function lt(e,t,n=[]){He(),Me();let r=F(e)[t].apply(e,n);return Ne(),Ue(... function ft (line 1) | function ft(e){_(e)||(e=String(e));let t=F(this);return N(t,`has`,e),t.h... method constructor (line 1) | constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t} method get (line 1) | get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=... method constructor (line 1) | constructor(e=!1){super(!1,e)} method set (line 1) | set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=zt(i);if... method deleteProperty (line 1) | deleteProperty(e,t){let n=u(e,t),r=e[t],i=Reflect.deleteProperty(e,t);re... method has (line 1) | has(e,t){let n=Reflect.has(e,t);return(!_(t)||!dt.has(t))&&N(e,`has`,t),n} method ownKeys (line 1) | ownKeys(e){return N(e,`iterate`,d(e)?`length`:Xe),Reflect.ownKeys(e)} method constructor (line 1) | constructor(e=!1){super(!0,e)} method set (line 1) | set(e,t){return!0} method deleteProperty (line 1) | deleteProperty(e,t){return!0} function xt (line 1) | function xt(e,t,n){return function(...r){let i=this.__v_raw,a=F(i),o=f(a... function St (line 1) | function St(e){return function(...t){return e===`delete`?!1:e===`clear`?... function Ct (line 1) | function Ct(e,t){let n={get(n){let r=this.__v_raw,i=F(r),a=F(n);e||(D(n,... function wt (line 1) | function wt(e,t){let n=Ct(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r=... function Mt (line 1) | function Mt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:cas... function Nt (line 1) | function Nt(e){return e.__v_skip||!Object.isExtensible(e)?0:Mt(S(e))} function Pt (line 1) | function Pt(e){return zt(e)?e:Lt(e,!1,gt,Tt,Ot)} function Ft (line 1) | function Ft(e){return Lt(e,!1,vt,Et,kt)} function It (line 1) | function It(e){return Lt(e,!0,_t,Dt,At)} function Lt (line 1) | function Lt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive))retur... function Rt (line 1) | function Rt(e){return zt(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)} function zt (line 1) | function zt(e){return!!(e&&e.__v_isReadonly)} function P (line 1) | function P(e){return!!(e&&e.__v_isShallow)} function Bt (line 1) | function Bt(e){return e?!!e.__v_raw:!1} function F (line 1) | function F(e){let t=e&&e.__v_raw;return t?F(t):e} function Vt (line 1) | function Vt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&O(e,`__v_... function L (line 1) | function L(e){return e?e.__v_isRef===!0:!1} function R (line 1) | function R(e){return Ut(e,!1)} function Ut (line 1) | function Ut(e,t){return L(e)?e:new Wt(e,t)} method constructor (line 1) | constructor(e,t){this.dep=new qe,this.__v_isRef=!0,this.__v_isShallow=!1... method value (line 1) | get value(){return this.dep.track(),this._value} method value (line 1) | set value(e){let t=this._rawValue,n=this.__v_isShallow||P(e)||zt(e);e=n?... function z (line 1) | function z(e){return L(e)?e.value:e} function Kt (line 1) | function Kt(e){return Rt(e)?e:new Proxy(e,Gt)} method constructor (line 1) | constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=n... method notify (line 1) | notify(){if(this.flags|=16,!(this.flags&8)&&M!==this)return je(this,!0),!0} method value (line 1) | get value(){let e=this.dep.track();return Le(this),e&&(e.version=this.de... method value (line 1) | set value(e){this.setter&&this.setter(e)} function Jt (line 1) | function Jt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new qt(r... function Qt (line 1) | function Qt(e,t=!1,n=Zt){if(n){let t=Xt.get(n);t||Xt.set(n,t=[]),t.push(... function $t (line 1) | function $t(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJo... function en (line 1) | function en(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e... function tn (line 1) | function tn(e,t,n,r){try{return r?e(...r):e()}catch(e){rn(e,t,n)}} function nn (line 1) | function nn(e,t,n,r){if(h(e)){let i=tn(e,t,n,r);return i&&y(i)&&i.catch(... function rn (line 1) | function rn(e,n,r,i=!0){let a=n?n.vnode:null,{errorHandler:o,throwUnhand... function an (line 1) | function an(e,t,n,r=!0,i=!1){if(i)throw e;console.error(e)} function fn (line 1) | function fn(e){let t=dn||un;return e?t.then(this?e.bind(this):e):t} function pn (line 1) | function pn(e){let t=on+1,n=B.length;for(;t>>1,i=B[r],a=y... function mn (line 1) | function mn(e){if(!(e.flags&1)){let t=yn(e),n=B[B.length-1];!n||!(e.flag... function hn (line 1) | function hn(){dn||=un.then(bn)} function gn (line 1) | function gn(e){d(e)?sn.push(...e):cn&&e.id===-1?cn.splice(ln+1,0,e):e.fl... function _n (line 1) | function _n(e,t,n=on+1){for(;nyn(e)-yn... function bn (line 1) | function bn(e){try{for(on=0;on{r._d&&ki(-1);le... function wn (line 1) | function wn(e,n){if(V===null)return e;let r=la(V),i=e.dirs||=[];for(let ... function Tn (line 1) | function Tn(e,t,n,r){let i=e.dirs,a=t&&t.dirs;for(let o=0;or... function Nn (line 1) | function Nn(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;eVn(e,n&&(d(n)?n[t]:n... function Hn (line 1) | function Hn(e){let t=Bn.get(e);t&&(t.flags|=8,Bn.delete(e))} function Gn (line 1) | function Gn(e,t){qn(e,`a`,t)} function Kn (line 1) | function Kn(e,t){qn(e,`da`,t)} function qn (line 1) | function qn(e,t,n=Q){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeacti... function Jn (line 1) | function Jn(e,t,n,r){let i=Yn(t,e,r,!0);nr(()=>{c(r[t],i)},n)} function Yn (line 1) | function Yn(e,t,n=Q,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)... function or (line 1) | function or(e,t=Q){Yn(`ec`,e,t)} function cr (line 1) | function cr(e,t){return ur(sr,e,!0,t)||e} function ur (line 1) | function ur(e,t,n=!0,r=!1){let i=V||Q;if(i){let n=i.type;if(e===sr){let ... function dr (line 1) | function dr(e,t){return e&&(e[t]||e[T(t)]||e[ie(T(t))])} function H (line 1) | function H(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&Rt(e),r=... method get (line 1) | get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,pr... method set (line 1) | set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return mr(a,n)?(a[n]=r,!... method has (line 1) | has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,typ... method defineProperty (line 1) | defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.va... function gr (line 1) | function gr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e} function vr (line 1) | function vr(e){let t=Sr(e),n=e.proxy,i=e.ctx;_r=!1,t.beforeCreate&&br(t.... function yr (line 1) | function yr(e,t,n=r){d(e)&&(e=Dr(e));for(let n in e){let r=e[n],i;i=v(r)... function br (line 1) | function br(e,t,n){nn(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)} function xr (line 1) | function xr(e,t,n,r){let i=r.includes(`.`)?Nn(n,r):()=>n[r];if(g(e)){let... function Sr (line 1) | function Sr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCach... function Cr (line 1) | function Cr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Cr(e,a,n,!0),i&&i.f... function Tr (line 1) | function Tr(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e... function Er (line 1) | function Er(e,t){return Or(Dr(e),Dr(t))} function Dr (line 1) | function Dr(e){if(d(e)){let t={};for(let n=0;n0?K||n:null,Di(),Oi>0&&K&&K.p... function J (line 1) | function J(e,t,n,r,i,a){return Ai(Y(e,t,n,r,i,a,!0))} function ji (line 1) | function ji(e,t,n,r,i){return Ai(X(e,t,n,r,i,!0))} function Mi (line 1) | function Mi(e){return e?e.__v_isVNode===!0:!1} function Ni (line 1) | function Ni(e,t){return e.type===t.type&&e.key===t.key} function Y (line 1) | function Y(e,t=null,n=null,r=0,i=null,a=e===G?0:1,o=!1,s=!1){let c={__v_... function Ii (line 1) | function Ii(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===lr)&&(e=wi),Mi(... function Li (line 1) | function Li(e){return e?Bt(e)||Yr(e)?s({},e):e:null} function Ri (line 1) | function Ri(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,tran... function zi (line 1) | function zi(e=` `,t=0){return X(Ci,null,e,t)} function Z (line 1) | function Z(e=``,t=!1){return t?(q(),ji(wi,null,e)):X(wi,null,e)} function Bi (line 1) | function Bi(e){return e==null||typeof e==`boolean`?X(wi):d(e)?X(G,null,e... function Vi (line 1) | function Vi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ri(e)} function Hi (line 1) | function Hi(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))... function Ui (line 1) | function Ui(...e){let t={};for(let n=0;nka(e,t,n));else if(n??=``,t.star... function Ma (line 1) | function Ma(e,t){let n=ja[t];if(n)return n;let r=T(t);if(r!==`filter`&&r... function Pa (line 1) | function Pa(e,t,n,r,i,a=ge(t)){r&&t.startsWith(`xlink:`)?n==null?e.remov... function Fa (line 1) | function Fa(e,t,n,r,i){if(t===`innerHTML`||t===`textContent`){n!=null&&(... function Ia (line 1) | function Ia(e,t,n,r){e.addEventListener(t,n,r)} function La (line 1) | function La(e,t,n,r){e.removeEventListener(t,n,r)} function za (line 1) | function za(e,t,n,r,i=null){let a=e[Ra]||(e[Ra]={}),o=a[t];if(r&&o)o.val... function Va (line 1) | function Va(e){let t;if(Ba.test(e)){t={};let n;for(;n=e.match(Ba);)e=e.s... function Ga (line 1) | function Ga(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=... function Ka (line 1) | function Ka(e,t){if(d(t)){let n=e.stopImmediatePropagation;return e.stop... function Ya (line 1) | function Ya(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t... function Xa (line 1) | function Xa(e,t){let n=e._def.props;if(!n)return!1;let r=T(t);return Arr... function Qa (line 1) | function Qa(e){e.target.composing=!0} function $a (line 1) | function $a(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEve... function to (line 1) | function to(e,t,n){return t&&(e=e.trim()),n&&(e=se(e)),e} method created (line 1) | created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[eo]=Za(i);let a=r||i... method mounted (line 1) | mounted(e,{value:t}){e.value=t??``} method beforeUpdate (line 1) | beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o... method created (line 1) | created(e,{value:t,modifiers:{number:n}},r){let i=p(t);Ia(e,`change`,()=... method mounted (line 1) | mounted(e,{value:t}){io(e,t)} method beforeUpdate (line 1) | beforeUpdate(e,t,n){e[eo]=Za(n)} method updated (line 1) | updated(e,{value:t}){e._assigning||io(e,t)} function io (line 1) | function io(e,t){let n=e.multiple,r=d(t);if(!(n&&!r&&!p(t))){for(let i=0... function ao (line 1) | function ao(e){return`_value`in e?e._value:e.value} function mo (line 1) | function mo(){return po||=di(fo)} function go (line 1) | function go(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLEl... function _o (line 1) | function _o(e){return g(e)?document.querySelector(e):e} function vo (line 1) | function vo(e,t,n){let r=R({...e()}),i=!1;return An(e,e=>{i=!0,r.value={... function yo (line 1) | function yo(){let e=Pt({});return{state:e,toggle:t=>{e[t]=!e[t]}}} function Co (line 1) | function Co(e,t){try{return JSON.parse(e)}catch{return t===void 0?e:t}} function wo (line 1) | function wo(e){return e==null?``:typeof e==`object`?JSON.stringify(e):St... function To (line 1) | function To(e){let t={};for(let n of e){let e=n.category||`general`;t[e]... method setup (line 1) | setup(e,{emit:t}){let n=e,r=vo(()=>n.value,t,`update:value`),{state:i,to... method setup (line 4) | setup(e,{emit:t}){let n=e,r=t,i=$(()=>(n.field.type||`str`).toLowerCase(... method setup (line 4) | setup(e,{emit:t}){let n=e,r=vo(()=>n.config,t,`update:config`),{state:i,... method setup (line 4) | setup(e){let t=R(!0),n=R(!1),r=R(``),i=R(`success`),a=R([]),o=R([]),s=R(... FILE: pyprland/help.py function get_commands_help (line 17) | def get_commands_help(manager: Pyprland) -> dict[str, tuple[str, str]]: function get_help (line 55) | def get_help(manager: Pyprland) -> str: function get_command_help (line 100) | def get_command_help(manager: Pyprland, command: str) -> str: FILE: pyprland/httpclient.py class FallbackClientError (line 54) | class FallbackClientError(Exception): class FallbackClientTimeout (line 58) | class FallbackClientTimeout: method __init__ (line 61) | def __init__(self, total: float = 30) -> None: class FallbackResponse (line 70) | class FallbackResponse: method __init__ (line 73) | def __init__(self, status: int, url: str, data: bytes) -> None: method json (line 85) | async def json(self) -> Any: method read (line 93) | async def read(self) -> bytes: method raise_for_status (line 101) | def raise_for_status(self) -> None: class _AsyncRequestContext (line 108) | class _AsyncRequestContext: method __init__ (line 111) | def __init__(self, coro_fn: Callable[[], Coroutine[Any, Any, FallbackR... method __aenter__ (line 119) | async def __aenter__(self) -> FallbackResponse: method __aexit__ (line 123) | async def __aexit__(self, *args: object) -> None: class FallbackClientSession (line 127) | class FallbackClientSession: method __init__ (line 130) | def __init__( method get (line 154) | def get( method close (line 209) | async def close(self) -> None: method __aenter__ (line 213) | async def __aenter__(self) -> Self: method __aexit__ (line 217) | async def __aexit__(self, *args: object) -> None: function reset_fallback_warning (line 222) | def reset_fallback_warning() -> None: FILE: pyprland/ipc.py class _IpcState (line 35) | class _IpcState: function hyprctl_connection (line 50) | async def hyprctl_connection(logger: Logger) -> AsyncGenerator[tuple[asy... function niri_connection (line 70) | async def niri_connection(logger: Logger) -> AsyncGenerator[tuple[asynci... function set_notify_method (line 93) | def set_notify_method(method: str) -> None: function get_event_stream (line 102) | async def get_event_stream() -> tuple[asyncio.StreamReader, asyncio.Stre... function retry_on_reset (line 122) | def retry_on_reset(func: Callable) -> Callable: function niri_request (line 153) | async def niri_request(payload: str | dict | list, logger: Logger) -> JS... function get_response (line 165) | async def get_response(command: bytes, logger: Logger) -> JSONResponse: function init (line 181) | def init() -> None: FILE: pyprland/ipc_paths.py function init_ipc_folder (line 55) | def init_ipc_folder() -> None: FILE: pyprland/logging_setup.py class LogObjects (line 16) | class LogObjects: function init_logger (line 22) | def init_logger(filename: str | None = None, force_debug: bool = False) ... function get_logger (line 71) | def get_logger(name: str = "pypr", level: int | None = None) -> logging.... FILE: pyprland/manager.py function remove_duplicate (line 49) | def remove_duplicate(names: list[str]) -> Callable: class Pyprland (line 75) | class Pyprland: # pylint: disable=too-many-instance-attributes method __init__ (line 91) | def __init__(self) -> None: method initialize (line 125) | async def initialize(self) -> None: method _select_fallback_backend (line 140) | async def _select_fallback_backend(self) -> None: method _load_single_plugin (line 164) | async def _load_single_plugin(self, name: str, init: bool) -> bool: method _init_plugin (line 203) | async def _init_plugin(self, name: str) -> None: method __load_plugins_config (line 227) | async def __load_plugins_config(self, init: bool = True) -> None: method load_config (line 257) | async def load_config(self, init: bool = True) -> None: method plain_log_handler (line 290) | def plain_log_handler(self, plugin: Plugin, name: str, params: tuple[s... method colored_log_handler (line 300) | def colored_log_handler(self, plugin: Plugin, name: str, params: tuple... method _run_plugin_handler (line 311) | async def _run_plugin_handler(self, plugin: Plugin, full_name: str, pa... method _run_plugin_handler_with_result (line 347) | async def _run_plugin_handler_with_result( method _dispatch_to_plugin (line 366) | async def _dispatch_to_plugin(self, plugin: Plugin, full_name: str, pa... method _handle_single_plugin (line 397) | async def _handle_single_plugin(self, plugin: Plugin, full_name: str, ... method _call_handler (line 417) | async def _call_handler(self, full_name: str, *params: str, notify: st... method read_events_loop (line 453) | async def read_events_loop(self) -> None: method exit_plugins (line 474) | async def exit_plugins(self) -> None: method _abort_plugins (line 479) | async def _abort_plugins(self, writer: asyncio.StreamWriter) -> None: method _has_handler (line 503) | def _has_handler(self, handler_name: str) -> bool: method _resolve_handler (line 514) | def _resolve_handler(self, tokens: list[str]) -> tuple[str, list[str]]: method _process_plugin_command (line 538) | async def _process_plugin_command(self, data: str) -> str: method _handle_exit_cleanup (line 577) | async def _handle_exit_cleanup(self, writer: asyncio.StreamWriter) -> ... method read_command (line 588) | async def read_command(self, reader: asyncio.StreamReader, writer: asy... method serve (line 613) | async def serve(self) -> None: method _execute_queued_task (line 618) | async def _execute_queued_task(self, name: str, task: partial) -> None: method _plugin_runner_loop (line 636) | async def _plugin_runner_loop(self, name: str) -> None: method plugins_runner (line 661) | async def plugins_runner(self) -> None: method run (line 668) | async def run(self) -> None: FILE: pyprland/models.py class RetensionTimes (line 24) | class RetensionTimes(float, Enum): class WorkspaceDf (line 31) | class WorkspaceDf(TypedDict): class MonitorInfo (line 67) | class MonitorInfo(TypedDict): class VersionInfo (line 98) | class VersionInfo: class PyprError (line 106) | class PyprError(BaseException): class ExitCode (line 111) | class ExitCode(IntEnum): class ResponsePrefix (line 122) | class ResponsePrefix(StrEnum): class ReloadReason (line 129) | class ReloadReason(Enum): class Environment (line 141) | class Environment(StrEnum): FILE: pyprland/plugins/experimental.py class Extension (line 7) | class Extension(Plugin, environments=[Environment.HYPRLAND]): FILE: pyprland/plugins/expose.py class Extension (line 8) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method on_reload (line 17) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method exposed_clients (line 23) | def exposed_clients(self) -> list[ClientInfo]: method run_expose (line 29) | async def run_expose(self) -> None: FILE: pyprland/plugins/fcitx5_switcher.py class Extension (line 8) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method event_activewindowv2 (line 22) | async def event_activewindowv2(self, _addr: str) -> None: FILE: pyprland/plugins/fetch_client_menu.py class Extension (line 10) | class Extension(MenuMixin, Plugin, environments=[Environment.HYPRLAND]): method on_reload (line 30) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method _center_window_on_monitor (line 35) | async def _center_window_on_monitor(self, address: str) -> None: method run_unfetch_client (line 109) | async def run_unfetch_client(self) -> None: method run_fetch_client_menu (line 119) | async def run_fetch_client_menu(self) -> None: FILE: pyprland/plugins/gamemode.py class Extension (line 17) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method __init__ (line 48) | def __init__(self, name: str) -> None: method _matches_pattern (line 55) | def _matches_pattern(self, window_class: str) -> bool: method exit (line 67) | async def exit(self) -> None: method _update_gamemode (line 71) | async def _update_gamemode(self) -> None: method _enable_gamemode (line 100) | async def _enable_gamemode(self, notify: bool = True) -> None: method _disable_gamemode (line 128) | async def _disable_gamemode(self, notify: bool = True) -> None: method on_reload (line 143) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method run_gamemode (line 167) | async def run_gamemode(self) -> None: method event_openwindow (line 174) | async def event_openwindow(self, params: str) -> None: method event_closewindow (line 191) | async def event_closewindow(self, addr: str) -> None: FILE: pyprland/plugins/interface.py class PluginContext (line 36) | class PluginContext: class Plugin (line 48) | class Plugin: method __init_subclass__ (line 82) | def __init_subclass__(cls, environments: Environments | None = None, *... method get_config (line 93) | def get_config(self, name: str) -> ConfigValue: method get_config_str (line 120) | def get_config_str(self, name: str) -> str: method get_config_int (line 124) | def get_config_int(self, name: str) -> int: method get_config_float (line 140) | def get_config_float(self, name: str) -> float: method get_config_bool (line 156) | def get_config_bool(self, name: str) -> bool: method get_config_list (line 164) | def get_config_list(self, name: str) -> list[Any]: method get_config_dict (line 170) | def get_config_dict(self, name: str) -> dict[str, Any]: method __init__ (line 182) | def __init__(self, name: str) -> None: method init (line 195) | async def init(self) -> None: method on_reload (line 201) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method exit (line 220) | async def exit(self) -> None: method load_config (line 225) | async def load_config(self, config: dict[str, Any]) -> None: method validate_config (line 234) | def validate_config(self) -> list[str]: method validate_config_static (line 252) | def validate_config_static(cls, plugin_name: str, config: dict) -> lis... method get_clients (line 271) | async def get_clients( method get_focused_monitor_or_warn (line 286) | async def get_focused_monitor_or_warn(self, context: str = "") -> Moni... FILE: pyprland/plugins/layout_center.py class Extension (line 21) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method init (line 49) | async def init(self) -> None: method event_openwindow (line 62) | async def event_openwindow(self, windescr: str) -> None: method event_activewindowv2 (line 98) | async def event_activewindowv2(self, _: str) -> None: method event_closewindow (line 114) | async def event_closewindow(self, addr: str) -> None: method run_layout_center (line 130) | async def run_layout_center(self, what: str) -> None: method on_reload (line 145) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method get_clients (line 157) | async def get_clients( method unprepare_window (line 169) | async def unprepare_window(self, clients: list[ClientInfo] | None = No... method prepare_window (line 185) | async def prepare_window(self, clients: list[ClientInfo] | None = None... method _calculate_centered_geometry (line 209) | async def _calculate_centered_geometry( method _sanity_check (line 239) | async def _sanity_check(self, clients: list[ClientInfo] | None = None)... method _run_changefocus (line 253) | async def _run_changefocus(self, direction: int, default_override: str... method _run_toggle (line 283) | async def _run_toggle(self) -> None: method offset (line 297) | def offset(self) -> tuple[int, int]: method margin (line 306) | def margin(self) -> int: method enabled (line 312) | def enabled(self) -> bool: method enabled (line 317) | def enabled(self, value: bool) -> None: method main_window_addr (line 324) | def main_window_addr(self) -> str: method main_window_addr (line 329) | def main_window_addr(self, value: str) -> None: FILE: pyprland/plugins/lost_windows.py function contains (line 7) | def contains(monitor: MonitorInfo, window: ClientInfo) -> bool: class Extension (line 19) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method run_attract_lost (line 22) | async def run_attract_lost(self) -> None: FILE: pyprland/plugins/magnify.py class Extension (line 11) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method on_reload (line 25) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method ease_out_quad (line 33) | def ease_out_quad(self, step: float, start: int, end: int, duration: i... method animated_eased_zoom (line 45) | def animated_eased_zoom(self, start: int, end: int, duration: int) -> ... method run_zoom (line 58) | async def run_zoom(self, *args) -> None: FILE: pyprland/plugins/menubar.py function get_pid_from_layers_hyprland (line 23) | def get_pid_from_layers_hyprland(layers: dict) -> bool | int: function is_bar_in_layers_niri (line 41) | def is_bar_in_layers_niri(layers: list) -> bool: function is_bar_alive (line 53) | async def is_bar_alive( class Extension (line 89) | class Extension(Plugin, environments=[Environment.HYPRLAND, Environment.... method __init__ (line 110) | def __init__(self, name: str) -> None: method on_reload (line 115) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method _run_program (line 122) | def _run_program(self) -> None: method is_running (line 173) | def is_running(self) -> bool: method run_bar (line 177) | async def run_bar(self, args: str) -> None: method set_best_monitor (line 198) | async def set_best_monitor(self) -> None: method get_best_monitor (line 208) | async def get_best_monitor(self) -> str: method event_monitoradded (line 226) | async def event_monitoradded(self, monitor: str) -> None: method niri_outputschanged (line 242) | async def niri_outputschanged(self, _data: dict) -> None: method exit (line 268) | async def exit(self) -> None: method stop (line 272) | async def stop(self) -> None: FILE: pyprland/plugins/mixins.py class MonitorListDescriptor (line 13) | class MonitorListDescriptor: method __get__ (line 25) | def __get__(self, obj: object, _objtype: type | None = None) -> list[s... method __set__ (line 37) | def __set__(self, obj: object, value: list[str]) -> None: class MonitorTrackingMixin (line 49) | class MonitorTrackingMixin: method event_monitoradded (line 75) | async def event_monitoradded(self, name: str) -> None: method event_monitorremoved (line 83) | async def event_monitorremoved(self, name: str) -> None: FILE: pyprland/plugins/monitors/__init__.py class Extension (line 28) | class Extension(Plugin, environments=[Environment.HYPRLAND, Environment.... method on_reload (line 68) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method event_configreloaded (line 88) | async def event_configreloaded(self, _: str = "") -> None: method _delayed_relayout (line 94) | async def _delayed_relayout(self) -> None: method event_monitoradded (line 100) | async def event_monitoradded(self, name: str) -> None: method niri_outputschanged (line 116) | async def niri_outputschanged(self, _data: dict) -> None: method run_relayout (line 126) | async def run_relayout(self) -> bool: method _run_relayout (line 130) | async def _run_relayout(self, monitors: list[MonitorInfo] | None = Non... method _run_relayout_niri (line 166) | async def _run_relayout_niri(self) -> bool: method _mark_disabled_monitors (line 194) | def _mark_disabled_monitors( method _build_graph (line 219) | def _build_graph( method _compute_positions (line 242) | def _compute_positions( method _apply_layout (line 269) | async def _apply_layout( method _apply_niri_layout (line 317) | async def _apply_niri_layout( method _resolve_names (line 354) | def _resolve_names(self, monitors: list[MonitorInfo]) -> dict[str, Any]: method _hotplug_command (line 366) | async def _hotplug_command(self, monitors: list[MonitorInfo], name: st... method _clear_mon_by_pat_cache (line 384) | def _clear_mon_by_pat_cache(self) -> None: FILE: pyprland/plugins/monitors/commands.py function build_hyprland_command (line 19) | def build_hyprland_command(monitor: MonitorInfo, config: dict[str, Any])... function build_niri_position_action (line 40) | def build_niri_position_action(name: str, x_pos: int, y_pos: int) -> dict: function build_niri_scale_action (line 54) | def build_niri_scale_action(name: str, scale: float) -> dict: function build_niri_transform_action (line 67) | def build_niri_transform_action(name: str, transform: int | str) -> dict: function build_niri_disable_action (line 84) | def build_niri_disable_action(name: str) -> dict: FILE: pyprland/plugins/monitors/layout.py function get_dims (line 12) | def get_dims(mon: MonitorInfo, config: dict[str, Any] | None = None) -> ... function _place_left (line 47) | def _place_left(ref_rect: tuple[int, int, int, int], mon_dim: tuple[int,... function _place_right (line 69) | def _place_right(ref_rect: tuple[int, int, int, int], mon_dim: tuple[int... function _place_top (line 91) | def _place_top(ref_rect: tuple[int, int, int, int], mon_dim: tuple[int, ... function _place_bottom (line 113) | def _place_bottom(ref_rect: tuple[int, int, int, int], mon_dim: tuple[in... function compute_xy (line 135) | def compute_xy( function build_graph (line 167) | def build_graph( function compute_positions (line 204) | def compute_positions( function find_cycle_path (line 258) | def find_cycle_path(config: dict[str, Any], unprocessed: list[str]) -> str: FILE: pyprland/plugins/monitors/resolution.py function get_monitor_by_pattern (line 9) | def get_monitor_by_pattern( function resolve_placement_config (line 47) | def resolve_placement_config( FILE: pyprland/plugins/monitors/schema.py function validate_placement_keys (line 39) | def validate_placement_keys(value: dict[str, Any]) -> list[str]: FILE: pyprland/plugins/protocols.py class HyprlandEvents (line 23) | class HyprlandEvents(Protocol): method event_activewindowv2 (line 32) | async def event_activewindowv2(self, addr: str) -> None: method event_changefloatingmode (line 40) | async def event_changefloatingmode(self, args: str) -> None: method event_closewindow (line 48) | async def event_closewindow(self, addr: str) -> None: method event_configreloaded (line 56) | async def event_configreloaded(self, data: str = "") -> None: method event_focusedmon (line 64) | async def event_focusedmon(self, mon: str) -> None: method event_monitoradded (line 72) | async def event_monitoradded(self, name: str) -> None: method event_monitorremoved (line 80) | async def event_monitorremoved(self, name: str) -> None: method event_openwindow (line 88) | async def event_openwindow(self, params: str) -> None: method event_workspace (line 96) | async def event_workspace(self, workspace: str) -> None: class NiriEvents (line 106) | class NiriEvents(Protocol): method niri_outputschanged (line 112) | async def niri_outputschanged(self, data: dict[str, Any]) -> None: FILE: pyprland/plugins/pyprland/__init__.py class Extension (line 32) | class Extension(HyprlandStateMixin, NiriStateMixin, Plugin): method init (line 38) | async def init(self) -> None: method on_reload (line 47) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method run_version (line 55) | def run_version(self) -> str: method run_dumpjson (line 59) | def run_dumpjson(self) -> str: method run_help (line 63) | def run_help(self, command: str = "") -> str: method run_doc (line 72) | def run_doc(self, args: str = "") -> str: method _get_option_doc (line 118) | def _get_option_doc(self, plugin_name: str, plugin: Plugin, option_nam... method run_reload (line 159) | async def run_reload(self) -> None: method run_compgen (line 167) | def run_compgen(self, args: str = "") -> str: method run_exit (line 185) | def run_exit(self) -> None: method _parse_config_path (line 189) | def _parse_config_path(self, path: str) -> tuple[str, list[str]]: method _get_nested_value (line 208) | def _get_nested_value(self, data: dict, keys: list[str]) -> Any: method _set_nested_value (line 229) | def _set_nested_value(self, data: dict, keys: list[str], value: Any) -... method _delete_nested_value (line 244) | def _delete_nested_value(self, data: dict, keys: list[str]) -> bool: method _get_field_schema (line 264) | def _get_field_schema(self, plugin_name: str, keys: list[str]) -> Conf... method _coerce_value (line 297) | def _coerce_value(self, value_str: str, field: ConfigField | None, cur... method _get_target_type (line 321) | def _get_target_type(self, field: ConfigField | None, current_value: A... method _coerce_to_type (line 330) | def _coerce_to_type(self, value_str: str, target_type: type) -> Any: ... method _parse_bool (line 353) | def _parse_bool(self, value_str: str) -> bool: method _parse_list (line 363) | def _parse_list(self, value_str: str) -> list: method run_get (line 374) | def run_get(self, path: str) -> str: method run_set (line 411) | async def run_set(self, args: str) -> str: # noqa: C901 FILE: pyprland/plugins/pyprland/hyprland_core.py class HyprlandStateMixin (line 12) | class HyprlandStateMixin(StateMonitorTrackingMixin): method _init_hyprland (line 25) | async def _init_hyprland(self) -> None: method event_configreloaded (line 77) | async def event_configreloaded(self, _: str = "") -> None: method event_activewindowv2 (line 90) | async def event_activewindowv2(self, addr: str) -> None: method event_workspace (line 103) | async def event_workspace(self, workspace: str) -> None: method event_focusedmon (line 112) | async def event_focusedmon(self, mon: str) -> None: method _set_hyprland_version (line 121) | def _set_hyprland_version(self, version_str: str, auto_increment: bool... FILE: pyprland/plugins/pyprland/niri_core.py class NiriStateMixin (line 10) | class NiriStateMixin: method _init_niri (line 22) | async def _init_niri(self) -> None: method niri_outputschanged (line 43) | async def niri_outputschanged(self, _data: dict) -> None: FILE: pyprland/plugins/scratchpads/__init__.py class Extension (line 31) | class Extension(LifecycleMixin, EventsMixin, TransitionsMixin, Plugin, e... method __init__ (line 45) | def __init__(self, name: str) -> None: method exit (line 53) | async def exit(self) -> None: method validate_config (line 78) | def validate_config(self) -> list[str]: method validate_config_static (line 94) | def validate_config_static(cls, _plugin_name: str, config: dict) -> li... method on_reload (line 106) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method _unset_windowrules (line 172) | async def _unset_windowrules(self, scratch: Scratch) -> None: method _configure_windowrules (line 188) | async def _configure_windowrules(self, scratch: Scratch) -> None: method cancel_task (line 240) | def cancel_task(self, uid: str) -> bool: method _detach_window (line 254) | async def _detach_window(self, scratch: Scratch, address: str) -> None: method _attach_window (line 265) | async def _attach_window(self, scratch: Scratch, address: str) -> None: method run_attach (line 285) | async def run_attach(self) -> None: method run_toggle (line 306) | async def run_toggle(self, uid_or_uids: str) -> None: method run_show (line 361) | async def run_show(self, uid: str) -> None: method _hide_excluded (line 409) | async def _hide_excluded(self, scratch: Scratch, excluded_ids: list[st... method _handle_multiwindow (line 422) | async def _handle_multiwindow(self, scratch: Scratch, clients: list[Cl... method run_hide (line 449) | async def run_hide(self, uid: str, flavor: HideFlavors = HideFlavors.N... method _hide_scratch (line 484) | async def _hide_scratch(self, scratch: Scratch, active_window: str, ac... method _save_multiwindow_state (line 537) | async def _save_multiwindow_state(self, scratch: Scratch, clients: lis... method _move_clients_out (line 556) | async def _move_clients_out(self, scratch: Scratch, monitor: MonitorIn... method _handle_focus_tracking (line 591) | async def _handle_focus_tracking(self, scratch: Scratch, active_window... FILE: pyprland/plugins/scratchpads/animations.py class AnimationTarget (line 13) | class AnimationTarget(enum.Enum): class Placement (line 21) | class Placement: # {{{ method get (line 26) | def get(animation_type: str, monitor: MonitorInfo, client: ClientInfo,... method get_offscreen (line 38) | def get_offscreen(animation_type: str, monitor: MonitorInfo, client: C... method fromtop (line 66) | def fromtop(monitor: MonitorInfo, client: ClientInfo, margin: int) -> ... method frombottom (line 86) | def frombottom(monitor: MonitorInfo, client: ClientInfo, margin: int) ... method fromleft (line 107) | def fromleft(monitor: MonitorInfo, client: ClientInfo, margin: int) ->... method fromright (line 127) | def fromright(monitor: MonitorInfo, client: ClientInfo, margin: int) -... FILE: pyprland/plugins/scratchpads/common.py class HideFlavors (line 9) | class HideFlavors(Flag): class FocusTracker (line 19) | class FocusTracker: method clear (line 25) | def clear(self) -> None: FILE: pyprland/plugins/scratchpads/events.py class EventsMixin (line 28) | class EventsMixin: method cancel_task (line 44) | def cancel_task(self, uid: str) -> bool: method run_hide (line 49) | async def run_hide(self, uid: str, flavor: HideFlavors = HideFlavors.N... method update_scratch_info (line 53) | async def update_scratch_info(self, orig_scratch: Scratch | None = Non... method _handle_multiwindow (line 57) | async def _handle_multiwindow(self, scratch: Scratch, clients: list[Cl... method event_changefloatingmode (line 62) | async def event_changefloatingmode(self, args: str) -> None: method event_workspace (line 74) | async def event_workspace(self, name: str) -> None: method event_closewindow (line 85) | async def event_closewindow(self, addr: str) -> None: method event_monitorremoved (line 104) | async def event_monitorremoved(self, monitor_name: str) -> None: method event_monitoradded (line 127) | async def event_monitoradded(self, monitor_name: str) -> None: method event_activewindowv2 (line 177) | async def event_activewindowv2(self, addr: str) -> None: method _hysteresis_handling (line 203) | async def _hysteresis_handling(self, scratch: Scratch) -> None: method _alternative_lookup (line 223) | async def _alternative_lookup(self) -> bool: method event_openwindow (line 240) | async def event_openwindow(self, params: str) -> None: FILE: pyprland/plugins/scratchpads/helpers.py function mk_scratch_name (line 24) | def mk_scratch_name(uid: str) -> str: function compute_offset (line 34) | def compute_offset(pos1: tuple[int, int] | None, pos2: tuple[int, int] |... function apply_offset (line 46) | def apply_offset(pos: tuple[int, int], offset: tuple[int, int]) -> tuple... function get_size (line 56) | def get_size(monitor: MonitorInfo) -> tuple[int, int]: function get_active_space_identifier (line 69) | def get_active_space_identifier(state: SharedState) -> tuple[str, str]: function get_all_space_identifiers (line 78) | async def get_all_space_identifiers(monitors: list[MonitorInfo]) -> list... function get_match_fn (line 90) | def get_match_fn(prop_name: str, prop_value: float | bool | str | list) ... class DynMonitorConfig (line 111) | class DynMonitorConfig(SchemaAwareMixin): method __init__ (line 114) | def __init__( method __setitem__ (line 140) | def __setitem__(self, name: str, value: ConfigValueType) -> None: method update (line 143) | def update(self, other: dict[str, ConfigValueType]) -> None: method _get_raw (line 151) | def _get_raw(self, name: str) -> ConfigValueType: method __getitem__ (line 160) | def __getitem__(self, name: str) -> ConfigValueType: method __contains__ (line 164) | def __contains__(self, name: object) -> bool: method __str__ (line 169) | def __str__(self) -> str: FILE: pyprland/plugins/scratchpads/lifecycle.py class LifecycleMixin (line 24) | class LifecycleMixin: method _configure_windowrules (line 38) | async def _configure_windowrules(self, scratch: Scratch) -> None: method _unset_windowrules (line 42) | async def _unset_windowrules(self, scratch: Scratch) -> None: method __wait_for_client (line 46) | async def __wait_for_client(self, scratch: Scratch, use_proc: bool = T... method _start_scratch_nopid (line 79) | async def _start_scratch_nopid(self, scratch: Scratch) -> bool: method _start_scratch (line 97) | async def _start_scratch(self, scratch: Scratch) -> bool: method ensure_alive (line 124) | async def ensure_alive(self, uid: str) -> bool: method start_scratch_command (line 150) | async def start_scratch_command(self, name: str) -> None: method update_scratch_info (line 170) | async def update_scratch_info(self, orig_scratch: Scratch | None = Non... FILE: pyprland/plugins/scratchpads/lookup.py class ScratchDB (line 10) | class ScratchDB: # {{{ method __init__ (line 18) | def __init__(self) -> None: method get_by_state (line 25) | def get_by_state(self, status: str) -> set[Scratch]: method has_state (line 33) | def has_state(self, scratch: Scratch, status: str) -> bool: method set_state (line 42) | def set_state(self, scratch: Scratch, status: str) -> None: method clear_state (line 51) | def clear_state(self, scratch: Scratch, status: str) -> None: method __iter__ (line 63) | def __iter__(self) -> Iterator[str]: method values (line 67) | def values(self) -> Iterable[Scratch]: method items (line 71) | def items(self) -> Iterable[tuple[str, Scratch]]: method reset (line 77) | def reset(self, scratch: Scratch) -> None: method clear (line 88) | def clear(self, name: str | None = None, pid: int | None = None, addr:... method register (line 108) | def register(self, scratch: Scratch) -> None: ... method register (line 111) | def register(self, scratch: Scratch, name: str) -> None: ... method register (line 114) | def register(self, scratch: Scratch, *, pid: int) -> None: ... method register (line 117) | def register(self, scratch: Scratch, *, addr: str) -> None: ... method register (line 119) | def register(self, scratch: Scratch, name: str | None = None, pid: int... method get (line 151) | def get(self, name: str) -> Scratch | None: ... method get (line 154) | def get(self, *, pid: int) -> Scratch | None: ... method get (line 157) | def get(self, *, addr: str) -> Scratch | None: ... method get (line 159) | def get(self, name: str | None = None, pid: int | None = None, addr: s... FILE: pyprland/plugins/scratchpads/objects.py class ClientPropGetter (line 22) | class ClientPropGetter(Protocol): method __call__ (line 25) | async def __call__( class MetaInfo (line 38) | class MetaInfo: class Scratch (line 51) | class Scratch: # {{{ method __init__ (line 62) | def __init__(self, uid: str, full_config: dict[str, Any], plugin: "Ext... method forced_monitor (line 79) | def forced_monitor(self) -> str | None: method animation_type (line 87) | def animation_type(self) -> str: method _make_initial_config (line 91) | def _make_initial_config(self, config: dict) -> dict: method set_config (line 113) | def set_config(self, full_config: dict[str, Any]) -> None: method have_address (line 138) | def have_address(self, addr: str) -> bool: method have_command (line 147) | def have_command(self) -> bool: method initialize (line 151) | async def initialize(self, ex: "_scratchpads_extension_m.Extension") -... method is_alive (line 171) | async def is_alive(self) -> bool: method fetch_matching_client (line 190) | async def fetch_matching_client(self, clients: list[ClientInfo] | None... method get_match_props (line 203) | def get_match_props(self) -> tuple[str, str | float]: method reset (line 214) | def reset(self, pid: int) -> None: method client_ready (line 228) | def client_ready(self) -> bool: method address (line 233) | def address(self) -> str: method full_address (line 240) | def full_address(self) -> str: method update_client_info (line 246) | async def update_client_info( method event_workspace (line 275) | def event_workspace(self, name: str) -> None: method __str__ (line 284) | def __str__(self) -> str: FILE: pyprland/plugins/scratchpads/schema.py function _validate_against_schema (line 12) | def _validate_against_schema(config: dict, prefix: str, schema: ConfigIt... function _validate_animation (line 29) | def _validate_animation(value: str) -> list[str]: function _validate_monitor_overrides (line 125) | def _validate_monitor_overrides(name: str, scratch_config: dict, errors:... function get_template_names (line 140) | def get_template_names(config: dict) -> set[str]: function is_pure_template (line 165) | def is_pure_template(name: str, config: dict, template_names: set[str]) ... function validate_scratchpad_config (line 183) | def validate_scratchpad_config(name: str, scratch_config: dict, *, is_te... FILE: pyprland/plugins/scratchpads/transitions.py class TransitionsMixin (line 26) | class TransitionsMixin: method _handle_multiwindow (line 40) | async def _handle_multiwindow(self, scratch: Scratch, clients: list[Cl... method update_scratch_info (line 45) | async def update_scratch_info(self, orig_scratch: Scratch | None = Non... method get_offsets (line 49) | async def get_offsets(self, scratch: Scratch, monitor: MonitorInfo | N... method _hide_transition (line 82) | async def _hide_transition(self, scratch: Scratch, monitor: MonitorInf... method _slide_animation (line 100) | async def _slide_animation( method _show_transition (line 137) | async def _show_transition(self, scratch: Scratch, monitor: MonitorInf... method _pin_scratch (line 240) | async def _pin_scratch(self, scratch: Scratch) -> None: method _update_infos (line 252) | async def _update_infos(self, scratch: Scratch, clients: list[ClientIn... method _animate_show (line 277) | async def _animate_show(self, scratch: Scratch, monitor: MonitorInfo, ... method _fix_size (line 317) | async def _fix_size(self, scratch: Scratch, monitor: MonitorInfo) -> N... method _fix_position (line 334) | async def _fix_position(self, scratch: Scratch, monitor: MonitorInfo) ... FILE: pyprland/plugins/scratchpads/windowruleset.py class WindowRuleSet (line 11) | class WindowRuleSet: method __init__ (line 14) | def __init__(self, state: SharedState) -> None: method set_class (line 20) | def set_class(self, value: str) -> None: method set_name (line 28) | def set_name(self, value: str) -> None: method set (line 36) | def set(self, param: str, value: str) -> None: method _get_content (line 45) | def _get_content(self) -> Iterable[str]: method get_content (line 63) | def get_content(self) -> list[str]: FILE: pyprland/plugins/shift_monitors.py class Extension (line 10) | class Extension(MonitorTrackingMixin, Plugin, environments=[Environment.... method init (line 15) | async def init(self) -> None: method niri_outputschanged (line 23) | async def niri_outputschanged(self, _data: dict) -> None: method run_shift_monitors (line 35) | async def run_shift_monitors(self, arg: str) -> None: FILE: pyprland/plugins/shortcuts_menu.py class Extension (line 13) | class Extension(MenuMixin, Plugin): method run_menu (line 29) | async def run_menu(self, name: str = "") -> None: method _handle_chain (line 75) | async def _handle_chain(self, options: list[str | dict]) -> None: method _run_command (line 108) | async def _run_command(self, command: str, variables: dict[str, str]) ... FILE: pyprland/plugins/stash.py class Extension (line 14) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method __init__ (line 21) | def __init__(self, name: str) -> None: method on_reload (line 27) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method run_stash (line 38) | async def run_stash(self, name: str = "default") -> None: method _restore_floating (line 81) | async def _restore_floating(self, addr: str) -> None: method event_closewindow (line 89) | async def event_closewindow(self, addr: str) -> None: method run_stash_toggle (line 105) | async def run_stash_toggle(self, name: str = "default") -> None: method _show_stash (line 119) | async def _show_stash(self, name: str) -> None: method _hide_stash (line 135) | async def _hide_stash(self, name: str) -> None: FILE: pyprland/plugins/system_notifier.py class Extension (line 41) | class Extension(Plugin): method __init__ (line 92) | def __init__(self, name: str) -> None: method on_reload (line 99) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method exit (line 116) | async def exit(self) -> None: method start_source (line 123) | async def start_source(self, props: dict[str, str]) -> None: method start_parser (line 148) | async def start_parser(self, name: str, props: list) -> None: FILE: pyprland/plugins/toggle_dpms.py class Extension (line 7) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method run_toggle_dpms (line 10) | async def run_toggle_dpms(self) -> None: FILE: pyprland/plugins/toggle_special.py class Extension (line 10) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method run_toggle_special (line 17) | async def run_toggle_special(self, special_workspace: str = "minimized... FILE: pyprland/plugins/wallpapers/__init__.py class OnlineState (line 51) | class OnlineState: function fetch_monitors (line 61) | async def fetch_monitors(extension: "Extension") -> list[MonitorInfo]: class Extension (line 79) | class Extension(Plugin): method __init__ (line 147) | def __init__(self, name: str) -> None: method on_reload (line 153) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method _create_cache (line 230) | def _create_cache(self, cache_dir: Path) -> ImageCache: method _setup_online_fetching (line 241) | async def _setup_online_fetching( method _cleanup_caches (line 304) | async def _cleanup_caches(self) -> None: method _get_local_paths (line 322) | def _get_local_paths(self) -> list[Path]: method _warn_no_images (line 333) | async def _warn_no_images(self) -> None: method exit (line 342) | async def exit(self) -> None: method event_monitoradded (line 352) | async def event_monitoradded(self, _: str) -> None: method niri_outputschanged (line 356) | async def niri_outputschanged(self, _: dict) -> None: method select_next_image (line 360) | async def select_next_image(self) -> str: method _fetch_online_image (line 387) | async def _fetch_online_image(self) -> str: method _prefetch_online_image (line 444) | async def _prefetch_online_image(self) -> None: method run_wall_rm (line 474) | async def run_wall_rm(self) -> None: method run_wall_cleanup (line 526) | async def run_wall_cleanup(self, arg: str = "") -> str: method _clear_rounded_cache (line 556) | async def _clear_rounded_cache(self) -> int: method _cleanup_orphaned_rounded (line 573) | async def _cleanup_orphaned_rounded(self) -> tuple[int, int]: method run_wall_info (line 613) | async def run_wall_info(self, arg: str = "") -> str: method _prepare_wallpaper (line 691) | async def _prepare_wallpaper(self, monitor: MonitorInfo, img_path: str... method _run_one (line 697) | async def _run_one(self, template: str, values: dict[str, str]) -> None: method _generate_templates (line 705) | async def _generate_templates(self, img_path: str, color: str | None =... method update_vars (line 747) | async def update_vars(self, variables: dict[str, Any], monitor: Monito... method _iter_one (line 755) | async def _iter_one(self, variables: dict[str, Any]) -> None: method main_loop (line 803) | async def main_loop(self) -> None: method terminate (line 827) | async def terminate(self) -> None: method run_wall_next (line 833) | async def run_wall_next(self) -> None: method run_wall_pause (line 838) | async def run_wall_pause(self) -> None: method run_wall_clear (line 842) | async def run_wall_clear(self) -> None: method run_color (line 853) | async def run_color(self, arg: str) -> None: method run_palette (line 871) | async def run_palette(self, arg: str = "") -> str: FILE: pyprland/plugins/wallpapers/cache.py class ImageCache (line 15) | class ImageCache: method __init__ (line 25) | def __init__( method _hash_key (line 46) | def _hash_key(self, key: str) -> str: method get_path (line 63) | def get_path(self, key: str, extension: str = "jpg") -> Path: method is_valid (line 76) | def is_valid(self, path: Path) -> bool: method get (line 95) | def get(self, key: str, extension: str = "jpg") -> Path | None: method store (line 110) | async def store(self, key: str, data: bytes, extension: str = "jpg") -... method _get_cache_size (line 131) | def _get_cache_size(self) -> int: method _get_cache_count (line 143) | def _get_cache_count(self) -> int: method _is_under_limits (line 151) | def _is_under_limits(self, current_size: int, current_count: int) -> b... method _auto_cleanup (line 165) | def _auto_cleanup(self) -> None: method cleanup (line 191) | def cleanup(self, max_age: int | None = None) -> int: method clear (line 218) | def clear(self) -> int: FILE: pyprland/plugins/wallpapers/colorutils.py function _build_hue_histogram (line 28) | def _build_hue_histogram(hsv_pixels: list[tuple[int, int, int]]) -> tupl... function _smooth_histogram (line 48) | def _smooth_histogram(hue_weights: list[float]) -> list[float]: function _find_peaks (line 67) | def _find_peaks(smoothed_weights: list[float]) -> list[tuple[float, int]]: function _get_best_pixel_for_hue (line 85) | def _get_best_pixel_for_hue( function _calculate_hue_diff (line 119) | def _calculate_hue_diff(hue1: int, hue2: int) -> int: function _select_colors_from_peaks (line 132) | def _select_colors_from_peaks( function get_dominant_colors (line 190) | def get_dominant_colors(img_path: str) -> list[tuple[int, int, int]]: function nicify_oklab (line 229) | def nicify_oklab( FILE: pyprland/plugins/wallpapers/hyprpaper.py class HyprpaperManager (line 19) | class HyprpaperManager: method __init__ (line 22) | def __init__(self, log: "logging.Logger") -> None: method ensure_running (line 30) | async def ensure_running(self) -> bool: method set_wallpaper (line 52) | async def set_wallpaper(self, commands: list[str], backend: "BackendPr... method stop (line 70) | async def stop(self) -> None: FILE: pyprland/plugins/wallpapers/imageutils.py function expand_path (line 23) | def expand_path(path: str) -> str: function get_files_with_ext (line 32) | async def get_files_with_ext( class MonitorInfo (line 58) | class MonitorInfo: function get_effective_dimensions (line 68) | def get_effective_dimensions(monitor: MonitorInfo) -> tuple[int, int]: class RoundedImageManager (line 86) | class RoundedImageManager: method __init__ (line 89) | def __init__(self, radius: int, cache: ImageCache) -> None: method hash_source (line 99) | def hash_source(self, image_path: str) -> str: method _hash_settings (line 110) | def _hash_settings(self, monitor: MonitorInfo) -> str: method build_key (line 122) | def build_key(self, monitor: MonitorInfo, image_path: str) -> str: method scale_and_round (line 139) | def scale_and_round(self, src: str, monitor: MonitorInfo) -> str: method _create_rounded_mask (line 176) | def _create_rounded_mask(self, width: int, height: int, scale: int, re... function to_hex (line 192) | def to_hex(red: int, green: int, blue: int) -> str: function to_rgb (line 203) | def to_rgb(red: int, green: int, blue: int) -> str: function to_rgba (line 214) | def to_rgba(red: int, green: int, blue: int) -> str: function get_variant_color (line 225) | def get_variant_color(hue: float, saturation: float, lightness: float) -... FILE: pyprland/plugins/wallpapers/models.py class Theme (line 10) | class Theme(StrEnum): class ColorScheme (line 21) | class ColorScheme(StrEnum): class MaterialColors (line 38) | class MaterialColors: class ColorVariant (line 47) | class ColorVariant: class VariantConfig (line 55) | class VariantConfig: FILE: pyprland/plugins/wallpapers/online/__init__.py class NoBackendAvailableError (line 51) | class NoBackendAvailableError(Exception): method __init__ (line 54) | def __init__(self, message: str = "No backends available", tried: list... class OnlineFetcher (line 65) | class OnlineFetcher: method __init__ (line 76) | def __init__( method backends (line 117) | def backends(self) -> list[str]: method available_backends (line 122) | def available_backends(self) -> list[str]: method _get_session (line 126) | async def _get_session(self) -> Any: method close (line 139) | async def close(self) -> None: method __aenter__ (line 145) | async def __aenter__(self) -> Self: method __aexit__ (line 149) | async def __aexit__(self, *args: object) -> None: method _select_backends (line 153) | def _select_backends(self, backend: str | None) -> list[str]: method _try_backend (line 175) | async def _try_backend( method get_image (line 222) | async def get_image( method _download_image (line 276) | async def _download_image(self, session: Any, url: str) -> bytes: FILE: pyprland/plugins/wallpapers/online/backends/__init__.py function register_backend (line 31) | def register_backend(cls: type[Backend]) -> type[Backend]: function get_backend (line 44) | def get_backend(name: str) -> Backend: function get_available_backends (line 63) | def get_available_backends() -> list[str]: FILE: pyprland/plugins/wallpapers/online/backends/base.py class ImageInfo (line 24) | class ImageInfo: class Backend (line 46) | class Backend(ABC): method fetch_image_info (line 63) | async def fetch_image_info( class BackendError (line 87) | class BackendError(Exception): method __init__ (line 90) | def __init__(self, backend: str, message: str) -> None: function fetch_redirect_image (line 102) | async def fetch_redirect_image( FILE: pyprland/plugins/wallpapers/online/backends/bing.py class BingBackend (line 20) | class BingBackend(Backend): method fetch_image_info (line 34) | async def fetch_image_info( FILE: pyprland/plugins/wallpapers/online/backends/picsum.py class PicsumBackend (line 16) | class PicsumBackend(Backend): method _extract_id (line 30) | def _extract_id(url: str) -> str: method fetch_image_info (line 45) | async def fetch_image_info( FILE: pyprland/plugins/wallpapers/online/backends/reddit.py class RedditBackend (line 37) | class RedditBackend(Backend): method fetch_image_info (line 50) | async def fetch_image_info( method _get_subreddits (line 106) | def _get_subreddits(self, keywords: list[str] | None) -> list[str]: method _filter_posts (line 129) | def _filter_posts( method _is_image_url (line 172) | def _is_image_url(self, url: str) -> bool: method _post_to_image_info (line 187) | def _post_to_image_info(self, post: dict) -> ImageInfo: FILE: pyprland/plugins/wallpapers/online/backends/unsplash.py class UnsplashBackend (line 14) | class UnsplashBackend(Backend): method fetch_image_info (line 27) | async def fetch_image_info( method _extract_id (line 68) | def _extract_id(url: str) -> str: FILE: pyprland/plugins/wallpapers/online/backends/wallhaven.py class WallhavenBackend (line 16) | class WallhavenBackend(Backend): method fetch_image_info (line 29) | async def fetch_image_info( FILE: pyprland/plugins/wallpapers/palette.py function hex_to_rgb (line 33) | def hex_to_rgb(hex_color: str) -> tuple[int, int, int]: function _categorize_palette (line 46) | def _categorize_palette(palette: dict[str, str]) -> dict[str, list[str]]: function palette_to_json (line 72) | def palette_to_json(palette: dict[str, str]) -> str: function palette_to_terminal (line 104) | def palette_to_terminal(palette: dict[str, str]) -> str: # pylint: disa... function generate_sample_palette (line 156) | def generate_sample_palette( FILE: pyprland/plugins/wallpapers/templates.py function _set_alpha (line 15) | def _set_alpha(color: str, alpha: str) -> str: function _set_lightness (line 33) | def _set_lightness(hex_color: str, amount: str) -> str: function _apply_filters (line 57) | async def _apply_filters(content: str, replacements: dict[str, str]) -> ... class TemplateEngine (line 94) | class TemplateEngine: method __init__ (line 97) | def __init__(self, log: logging.Logger) -> None: method process_single_template (line 105) | async def process_single_template( FILE: pyprland/plugins/wallpapers/theme.py function detect_theme (line 18) | async def detect_theme(logger: logging.Logger) -> Theme: function get_color_scheme_props (line 61) | def get_color_scheme_props(color_scheme: ColorScheme | str) -> dict[str,... function _get_rgb_for_variant (line 124) | def _get_rgb_for_variant( function _get_base_hs (line 144) | def _get_base_hs( function _populate_colors (line 171) | def _populate_colors( function _process_material_variant (line 216) | def _process_material_variant( function generate_palette (line 246) | def generate_palette( FILE: pyprland/plugins/workspaces_follow_focus.py class Extension (line 11) | class Extension(Plugin, environments=[Environment.HYPRLAND]): method on_reload (line 20) | async def on_reload(self, reason: ReloadReason = ReloadReason.RELOAD) ... method event_focusedmon (line 25) | async def event_focusedmon(self, screenid_name: str) -> None: method run_change_workspace (line 45) | async def run_change_workspace(self, direction: str) -> None: FILE: pyprland/process.py function create_subprocess (line 22) | async def create_subprocess( class ManagedProcess (line 51) | class ManagedProcess: method __init__ (line 75) | def __init__(self, graceful_timeout: float = 1.0) -> None: method pid (line 87) | def pid(self) -> int | None: method returncode (line 92) | def returncode(self) -> int | None: method is_alive (line 97) | def is_alive(self) -> bool: method process (line 102) | def process(self) -> asyncio.subprocess.Process | None: method start (line 106) | async def start( method stop (line 124) | async def stop(self) -> int | None: method restart (line 158) | async def restart(self) -> None: method wait (line 169) | async def wait(self) -> int: method iter_lines (line 180) | async def iter_lines(self) -> AsyncIterator[str]: class SupervisedProcess (line 202) | class SupervisedProcess(ManagedProcess): method __init__ (line 225) | def __init__( method is_supervised (line 249) | def is_supervised(self) -> bool: method start (line 253) | async def start( method _supervise (line 276) | async def _supervise(self) -> None: method stop (line 308) | async def stop(self) -> int | None: FILE: pyprland/pypr_daemon.py function get_event_stream_with_retry (line 15) | async def get_event_stream_with_retry( function run_daemon (line 36) | async def run_daemon() -> None: FILE: pyprland/quickstart/__init__.py class Args (line 11) | class Args: function parse_args (line 19) | def parse_args(argv: list[str]) -> Args: function print_help (line 46) | def print_help() -> None: function main (line 59) | def main() -> None: FILE: pyprland/quickstart/discovery.py class PluginInfo (line 18) | class PluginInfo: function discover_plugins (line 27) | def discover_plugins() -> list[PluginInfo]: function load_plugin_info (line 56) | def load_plugin_info(name: str) -> PluginInfo | None: function filter_by_environment (line 87) | def filter_by_environment(plugins: list[PluginInfo], environment: str) -... FILE: pyprland/quickstart/generator.py function get_config_path (line 21) | def get_config_path() -> Path: function backup_config (line 32) | def backup_config(config_path: Path) -> Path | None: function format_toml_value (line 51) | def format_toml_value(value: Any, indent: int = 0) -> str: # noqa: PLR0911 function generate_toml (line 98) | def generate_toml(config: dict) -> str: # noqa: C901 function _is_inline_dict (line 166) | def _is_inline_dict(data: dict) -> bool: function write_config (line 182) | def write_config( function merge_config (line 208) | def merge_config(existing: dict, new: dict) -> dict: function load_existing_config (line 229) | def load_existing_config(path: Path | None = None) -> dict | None: FILE: pyprland/quickstart/helpers/__init__.py function detect_app (line 23) | def detect_app(candidates: list[str]) -> str | None: function detect_terminal (line 38) | def detect_terminal() -> str | None: function get_terminal_command (line 47) | def get_terminal_command(terminal: str, class_name: str) -> str: function detect_running_environment (line 61) | def detect_running_environment() -> Environment | None: FILE: pyprland/quickstart/helpers/monitors.py class DetectedMonitor (line 18) | class DetectedMonitor: function detect_monitors_hyprland (line 27) | def detect_monitors_hyprland() -> list[DetectedMonitor]: function detect_monitors_niri (line 57) | def detect_monitors_niri() -> list[DetectedMonitor]: function detect_monitors (line 93) | def detect_monitors(environment: str) -> list[DetectedMonitor]: function ask_monitor_layout (line 109) | def ask_monitor_layout(monitors: list[DetectedMonitor]) -> dict: FILE: pyprland/quickstart/helpers/scratchpads.py class ScratchpadConfig (line 90) | class ScratchpadConfig: function detect_available_presets (line 101) | def detect_available_presets() -> list[tuple[str, str, str]]: function build_command (line 115) | def build_command( function create_preset_config (line 149) | def create_preset_config( function ask_scratchpads (line 183) | def ask_scratchpads() -> list[ScratchpadConfig]: function scratchpad_to_dict (line 237) | def scratchpad_to_dict(config: ScratchpadConfig) -> dict: FILE: pyprland/quickstart/questions.py function _is_path_type (line 15) | def _is_path_type(field_type: type | tuple) -> bool: function _is_path_list_type (line 24) | def _is_path_list_type(field_type: type | tuple) -> bool: function field_to_question (line 33) | def field_to_question(field: ConfigField, current_value: Any = None) -> ... function _ask_choice (line 77) | def _ask_choice(question: str, choices: list, default: Any) -> Any | None: function _ask_bool (line 89) | def _ask_bool(question: str, default: Any) -> bool | None: function _ask_int (line 98) | def _ask_int(question: str, default: Any) -> int | None: function _ask_float (line 120) | def _ask_float(question: str, default: Any) -> float | None: function _ask_text (line 142) | def _ask_text(question: str, default: Any) -> str | None: function _ask_list (line 149) | def _ask_list(question: str, default: Any) -> list | None: function _ask_path (line 168) | def _ask_path(question: str, default: Any, only_directories: bool = Fals... function _ask_path_list (line 179) | def _ask_path_list(question: str, default: Any, only_directories: bool =... function ask_plugin_options (line 216) | def ask_plugin_options( # noqa: C901 function _process_field (line 272) | def _process_field( FILE: pyprland/quickstart/wizard.py function print_banner (line 31) | def print_banner() -> None: function ask_environment (line 38) | def ask_environment() -> str | None: function ask_plugins (line 74) | def ask_plugins(plugins: list[PluginInfo]) -> list[PluginInfo]: function configure_scratchpads (line 113) | def configure_scratchpads(plugin: PluginInfo, environment: str) -> dict: function configure_monitors (line 139) | def configure_monitors(plugin: PluginInfo, environment: str) -> dict: function configure_plugin (line 165) | def configure_plugin(plugin: PluginInfo, environment: str) -> dict: function handle_existing_config (line 186) | def handle_existing_config(config_path: Path) -> bool: function build_config (line 223) | def build_config( function run_wizard (line 250) | def run_wizard( function _show_keybind_hints (line 313) | def _show_keybind_hints(scratchpads_config: dict, environment: str) -> N... FILE: pyprland/state.py class SharedState (line 22) | class SharedState: method active_monitors (line 35) | def active_monitors(self) -> list[str]: method set_disabled_monitors (line 39) | def set_disabled_monitors(self, disabled: set[str]) -> None: FILE: pyprland/terminal.py function set_terminal_size (line 19) | def set_terminal_size(descriptor: int, rows: int, cols: int) -> None: function set_raw_mode (line 30) | def set_raw_mode(descriptor: int) -> None: function run_interactive_program (line 44) | def run_interactive_program(command: str) -> None: FILE: pyprland/utils.py function merge (line 27) | def merge(merged: dict[str, Any], obj2: dict[str, Any], replace: bool = ... function apply_variables (line 64) | def apply_variables(template: str, variables: dict[str, str]) -> str: function apply_filter (line 83) | def apply_filter(text: str, filt_cmd: str) -> str: function is_rotated (line 111) | def is_rotated(monitor: MonitorInfo) -> bool: function notify_send (line 123) | async def notify_send(text: str, duration: int = 3000, color: str | None... FILE: pyprland/validate_cli.py function _load_plugin_module (line 21) | def _load_plugin_module(name: str) -> type[Plugin] | None: function _load_validate_config (line 39) | def _load_validate_config(log: logging.Logger) -> dict: function _validate_plugin (line 75) | def _validate_plugin(plugin_name: str, config: dict) -> tuple[int, int]: function run_validate (line 125) | def run_validate() -> None: FILE: pyprland/validation.py class ConfigField (line 29) | class ConfigField: # pylint: disable=too-many-instance-attributes method type_name (line 63) | def type_name(self) -> str: class ConfigItems (line 81) | class ConfigItems(list): method __init__ (line 84) | def __init__(self, *args: ConfigField) -> None: method get (line 88) | def get(self, name: str) -> ConfigField | None: function _find_similar_key (line 107) | def _find_similar_key(unknown_key: str, known_keys: list[str]) -> str | ... function format_config_error (line 123) | def format_config_error(plugin: str, field: str, message: str, suggestio... class ConfigValidator (line 141) | class ConfigValidator: method __init__ (line 144) | def __init__(self, config: dict, plugin_name: str, logger: logging.Log... method validate (line 156) | def validate(self, schema: ConfigItems) -> list[str]: method _check_type (line 217) | def _check_type(self, field_def: ConfigField, value: Any) -> str | None: method _check_union_type (line 248) | def _check_union_type( method _check_bool (line 265) | def _check_bool(self, field_def: ConfigField, value: Any) -> str | None: method _check_numeric (line 278) | def _check_numeric(self, field_def: ConfigField, value: Any) -> str | ... method _check_str (line 295) | def _check_str(self, field_def: ConfigField, value: Any) -> str | None: method _check_list (line 306) | def _check_list(self, field_def: ConfigField, value: Any) -> str | None: method _check_dict (line 317) | def _check_dict(self, field_def: ConfigField, value: Any) -> str | None: method _validate_dict_children (line 334) | def _validate_dict_children( method _get_required_suggestion (line 370) | def _get_required_suggestion(self, field_def: ConfigField) -> str: method warn_unknown_keys (line 398) | def warn_unknown_keys(self, schema: ConfigItems) -> list[str]: FILE: sample_extension/pypr_examples/focus_counter.py class Extension (line 12) | class Extension(Plugin): method run_counter (line 23) | async def run_counter(self, args: str = "") -> None: method event_activewindowv2 (line 33) | async def event_activewindowv2(self, _addr: str) -> None: FILE: scripts/backquote_as_links.py function replace_links (line 6) | def replace_links(match): function main (line 14) | def main(filename): FILE: scripts/check_plugin_docs.py class PluginCoverage (line 36) | class PluginCoverage: function load_plugin_json (line 49) | def load_plugin_json(plugin_name: str) -> dict | None: function extract_option_name (line 58) | def extract_option_name(full_name: str) -> str: function find_plugin_pages (line 67) | def find_plugin_pages(plugin_name: str) -> list[Path]: function parse_filter_from_component (line 86) | def parse_filter_from_component(content: str, plugin_name: str) -> tuple... function check_commands_component (line 119) | def check_commands_component(content: str, plugin_name: str) -> bool: function analyze_plugin (line 125) | def analyze_plugin(plugin_name: str) -> PluginCoverage: function discover_plugins (line 174) | def discover_plugins() -> list[str]: function main (line 186) | def main() -> int: FILE: scripts/generate_codebase_overview.py class ModuleInfo (line 31) | class ModuleInfo: method has_good_docstring (line 41) | def has_good_docstring(self) -> bool: method docstring_status (line 46) | def docstring_status(self) -> str: function parse_module (line 149) | def parse_module(path: Path) -> ModuleInfo: function collect_modules (line 193) | def collect_modules() -> dict[str, list[ModuleInfo]]: function format_module_row (line 219) | def format_module_row(mod: ModuleInfo) -> str: function generate_section (line 234) | def generate_section(title: str, modules: list[ModuleInfo], groupings: d... function generate_coverage_report (line 272) | def generate_coverage_report(all_modules: list[ModuleInfo]) -> list[str]: function main (line 304) | def main() -> int: FILE: scripts/generate_monitor_diagrams.py class Monitor (line 9) | class Monitor: method effective_size (line 19) | def effective_size(self, base_unit: float = 0.1) -> tuple[float, float]: class DiagramConfig (line 37) | class DiagramConfig: function generate_svg (line 70) | def generate_svg(config: DiagramConfig) -> str: function basic_top_of (line 111) | def basic_top_of() -> DiagramConfig: function basic_bottom_of (line 119) | def basic_bottom_of() -> DiagramConfig: function basic_left_of (line 127) | def basic_left_of() -> DiagramConfig: function basic_right_of (line 135) | def basic_right_of() -> DiagramConfig: function align_left_start (line 143) | def align_left_start() -> DiagramConfig: function align_left_center (line 151) | def align_left_center() -> DiagramConfig: function align_left_end (line 161) | def align_left_end() -> DiagramConfig: function align_top_start (line 171) | def align_top_start() -> DiagramConfig: function align_top_center (line 179) | def align_top_center() -> DiagramConfig: function align_top_end (line 189) | def align_top_end() -> DiagramConfig: function setup_dual (line 199) | def setup_dual() -> DiagramConfig: function setup_triple (line 207) | def setup_triple() -> DiagramConfig: function setup_stacked (line 217) | def setup_stacked() -> DiagramConfig: function real_world_l_shape (line 227) | def real_world_l_shape() -> DiagramConfig: function main (line 281) | def main() -> None: FILE: scripts/generate_plugin_docs.py class ConfigItem (line 41) | class ConfigItem: class CommandItem (line 57) | class CommandItem: class PluginDoc (line 67) | class PluginDoc: function extract_config_from_schema (line 77) | def extract_config_from_schema(schema: list) -> list[ConfigItem]: function extract_commands (line 115) | def extract_commands(extension_class: type) -> list[CommandItem]: function get_plugin_description (line 137) | def get_plugin_description(extension_class: type) -> str: function check_menu_mixin (line 146) | def check_menu_mixin(extension_class: type) -> list: function load_scratchpads_schema (line 165) | def load_scratchpads_schema() -> list: function discover_plugins (line 172) | def discover_plugins() -> list[str]: function load_plugin (line 195) | def load_plugin(plugin_name: str) -> PluginDoc | None: function load_metadata (line 281) | def load_metadata() -> dict[str, dict]: function generate_plugin_json (line 289) | def generate_plugin_json(plugin_doc: PluginDoc) -> dict: function generate_menu_json (line 300) | def generate_menu_json() -> dict: function generate_index_json (line 323) | def generate_index_json(plugin_docs: list[PluginDoc], metadata: dict) ->... function main (line 353) | def main(): FILE: scripts/pypr.py function get_parser (line 29) | def get_parser(): FILE: site/.vitepress/config.mjs function loadSidebar (line 25) | function loadSidebar(dir) { function buildVersionedConfig (line 45) | function buildVersionedConfig() { method _render (line 113) | _render(src, env, md) { FILE: site/.vitepress/theme/index.js method enhanceApp (line 16) | enhanceApp({ app, router }) { FILE: site/components/configHelpers.js function hasChildren (line 14) | function hasChildren(item) { function hasDefault (line 23) | function hasDefault(value) { function formatDefault (line 36) | function formatDefault(value) { function renderDescription (line 55) | function renderDescription(text) { FILE: site/components/jsonLoader.js function getPluginData (line 19) | function getPluginData(name, version = null) { FILE: site/components/usePluginData.js function usePluginData (line 31) | function usePluginData(loader) { FILE: site/versions/3.0.0/components/configHelpers.js function hasChildren (line 14) | function hasChildren(item) { function hasDefault (line 23) | function hasDefault(value) { function formatDefault (line 36) | function formatDefault(value) { function renderDescription (line 55) | function renderDescription(text) { FILE: site/versions/3.0.0/components/usePluginData.js function usePluginData (line 31) | function usePluginData(loader) { FILE: site/versions/3.1.1/components/configHelpers.js function hasChildren (line 14) | function hasChildren(item) { function hasDefault (line 23) | function hasDefault(value) { function formatDefault (line 36) | function formatDefault(value) { function renderDescription (line 55) | function renderDescription(text) { FILE: site/versions/3.1.1/components/jsonLoader.js function getPluginData (line 19) | function getPluginData(name, version = null) { FILE: site/versions/3.1.1/components/usePluginData.js function usePluginData (line 31) | function usePluginData(loader) { FILE: site/versions/3.2.1/components/configHelpers.js function hasChildren (line 14) | function hasChildren(item) { function hasDefault (line 23) | function hasDefault(value) { function formatDefault (line 36) | function formatDefault(value) { function renderDescription (line 55) | function renderDescription(text) { FILE: site/versions/3.2.1/components/jsonLoader.js function getPluginData (line 19) | function getPluginData(name, version = null) { FILE: site/versions/3.2.1/components/usePluginData.js function usePluginData (line 31) | function usePluginData(loader) { FILE: tests/conftest.py function test_logger (line 30) | def test_logger(): function pytest_configure (line 58) | def pytest_configure(): function _contains_error (line 66) | def _contains_error(text: str) -> str | None: function pytest_runtest_makereport (line 80) | def pytest_runtest_makereport(item, call): class GlobalMocks (line 101) | class GlobalMocks: method reset (line 114) | def reset(self): method pypr (line 119) | async def pypr(self, cmd): method wait_queues (line 125) | async def wait_queues(self): method send_event (line 140) | async def send_event(self, cmd): function make_extension (line 149) | def make_extension(plugin_class, name: str | None = None, *, logger=None... function mocked_unix_server (line 231) | async def mocked_unix_server(command_reader, *_): function mocked_unix_connection (line 238) | async def mocked_unix_connection(path): function empty_config (line 246) | async def empty_config(monkeypatch): function third_monitor (line 253) | async def third_monitor(monkeypatch): function sample1_config (line 261) | async def sample1_config(monkeypatch): function mocked_hyprctl_json (line 267) | async def mocked_hyprctl_json(self, command, *, log=None, **kwargs): function subprocess_shell_mock (line 289) | def subprocess_shell_mock(mocker): function server_fixture (line 305) | async def server_fixture(monkeypatch, mocker): FILE: tests/test_adapters_fallback.py function test_log (line 11) | def test_log(): function mock_state (line 21) | def mock_state(): class TestWaylandBackend (line 26) | class TestWaylandBackend: method test_parse_single_monitor (line 29) | def test_parse_single_monitor(self, test_log, mock_state): method test_parse_multiple_monitors (line 53) | def test_parse_multiple_monitors(self, test_log, mock_state): method test_parse_rotated_monitor (line 82) | def test_parse_rotated_monitor(self, test_log, mock_state): method test_parse_disabled_monitor_excluded (line 98) | def test_parse_disabled_monitor_excluded(self, test_log, mock_state): method test_parse_disabled_monitor_included (line 122) | def test_parse_disabled_monitor_included(self, test_log, mock_state): method test_parse_no_mode_skipped (line 145) | def test_parse_no_mode_skipped(self, test_log, mock_state): method test_parse_empty_output (line 161) | def test_parse_empty_output(self, test_log, mock_state): class TestXorgBackend (line 169) | class TestXorgBackend: method test_parse_single_monitor (line 172) | def test_parse_single_monitor(self, test_log, mock_state): method test_parse_multiple_monitors (line 190) | def test_parse_multiple_monitors(self, test_log, mock_state): method test_parse_rotated_monitor (line 209) | def test_parse_rotated_monitor(self, test_log, mock_state): method test_parse_inverted_monitor (line 221) | def test_parse_inverted_monitor(self, test_log, mock_state): method test_parse_disconnected_excluded (line 233) | def test_parse_disconnected_excluded(self, test_log, mock_state): method test_parse_disconnected_included (line 246) | def test_parse_disconnected_included(self, test_log, mock_state): method test_parse_empty_output (line 260) | def test_parse_empty_output(self, test_log, mock_state): method test_parse_connected_no_mode (line 267) | def test_parse_connected_no_mode(self, test_log, mock_state): FILE: tests/test_ansi.py function test_colorize_single_code (line 21) | def test_colorize_single_code(): function test_colorize_multiple_codes (line 27) | def test_colorize_multiple_codes(): function test_colorize_no_codes (line 33) | def test_colorize_no_codes(): function test_make_style (line 39) | def test_make_style(): function test_make_style_no_codes (line 46) | def test_make_style_no_codes(): function test_should_colorize_respects_no_color (line 53) | def test_should_colorize_respects_no_color(): function test_should_colorize_respects_force_color (line 59) | def test_should_colorize_respects_force_color(): function test_should_colorize_non_tty (line 67) | def test_should_colorize_non_tty(): function test_log_styles (line 74) | def test_log_styles(): function test_handler_styles (line 81) | def test_handler_styles(): function test_constants (line 87) | def test_constants(): FILE: tests/test_command.py function pyprland_app (line 14) | def pyprland_app(): function test_load_config_toml (line 25) | async def test_load_config_toml(pyprland_app): function test_load_config_toml_with_notify (line 59) | async def test_load_config_toml_with_notify(pyprland_app): function test_load_config_json_fallback (line 89) | async def test_load_config_json_fallback(pyprland_app): function test_load_config_missing (line 126) | async def test_load_config_missing(pyprland_app): function test_run_plugin_handler_success (line 137) | async def test_run_plugin_handler_success(pyprland_app): function test_run_plugin_handler_exception (line 152) | async def test_run_plugin_handler_exception(pyprland_app, monkeypatch): function test_call_handler_dispatch (line 172) | async def test_call_handler_dispatch(pyprland_app): function test_call_handler_dispatch_with_wait (line 205) | async def test_call_handler_dispatch_with_wait(pyprland_app): function test_call_handler_unknown_command (line 245) | async def test_call_handler_unknown_command(pyprland_app): function test_read_command_socket (line 259) | async def test_read_command_socket(pyprland_app): function test_read_command_socket_error (line 282) | async def test_read_command_socket_error(pyprland_app): function test_read_command_socket_unknown (line 303) | async def test_read_command_socket_unknown(pyprland_app): function test_read_command_exit (line 324) | async def test_read_command_exit(pyprland_app): function test_load_plugin_module_builtin (line 350) | def test_load_plugin_module_builtin(): function test_load_plugin_module_not_found (line 357) | def test_load_plugin_module_not_found(): function test_run_validate_valid_config (line 363) | def test_run_validate_valid_config(): function test_run_validate_missing_required_field (line 392) | def test_run_validate_missing_required_field(): function test_run_validate_config_not_found (line 421) | def test_run_validate_config_not_found(): FILE: tests/test_command_registry.py class TestParseDocstring (line 11) | class TestParseDocstring: method test_required_arg (line 14) | def test_required_arg(self): method test_optional_arg (line 23) | def test_optional_arg(self): method test_mixed_args (line 31) | def test_mixed_args(self): method test_no_args (line 41) | def test_no_args(self): method test_pipe_choices (line 48) | def test_pipe_choices(self): method test_empty_docstring (line 56) | def test_empty_docstring(self): method test_multiline_docstring (line 63) | def test_multiline_docstring(self): method test_arg_only_no_description (line 75) | def test_arg_only_no_description(self): method test_multiple_optional_args (line 82) | def test_multiple_optional_args(self): class TestExtractCommandsFromObject (line 90) | class TestExtractCommandsFromObject: method test_extract_from_class (line 93) | def test_extract_from_class(self): method test_extract_from_instance (line 111) | def test_extract_from_instance(self): method test_source_preserved (line 124) | def test_source_preserved(self): method test_args_extracted (line 134) | def test_args_extracted(self): method test_no_commands (line 146) | def test_no_commands(self): method test_method_without_docstring (line 156) | def test_method_without_docstring(self): class TestGetClientCommands (line 168) | class TestGetClientCommands: method test_returns_edit_and_validate (line 171) | def test_returns_edit_and_validate(self): method test_source_is_client (line 178) | def test_source_is_client(self): method test_has_descriptions (line 184) | def test_has_descriptions(self): class TestCommandInfoDataclass (line 192) | class TestCommandInfoDataclass: method test_create_command_info (line 195) | def test_create_command_info(self): class TestCommandArgDataclass (line 209) | class TestCommandArgDataclass: method test_create_required_arg (line 212) | def test_create_required_arg(self): method test_create_optional_arg (line 218) | def test_create_optional_arg(self): function _make_cmd (line 225) | def _make_cmd(name: str, source: str) -> CommandInfo: class TestGetParentPrefixes (line 236) | class TestGetParentPrefixes: method test_same_source_groups (line 239) | def test_same_source_groups(self): method test_different_sources_not_grouped (line 249) | def test_different_sources_not_grouped(self): method test_mixed_same_and_different_sources (line 259) | def test_mixed_same_and_different_sources(self): method test_single_command_no_grouping (line 271) | def test_single_command_no_grouping(self): method test_legacy_iterable_groups_all (line 279) | def test_legacy_iterable_groups_all(self): class TestBuildCommandTree (line 287) | class TestBuildCommandTree: method test_cross_plugin_commands_stay_flat (line 290) | def test_cross_plugin_commands_stay_flat(self): method test_same_plugin_commands_grouped (line 309) | def test_same_plugin_commands_grouped(self): method test_mixed_plugins_correct_grouping (line 329) | def test_mixed_plugins_correct_grouping(self): method test_root_command_with_same_source_children (line 349) | def test_root_command_with_same_source_children(self): class TestGetDisplayName (line 366) | class TestGetDisplayName: method test_hierarchical_command (line 369) | def test_hierarchical_command(self): method test_non_hierarchical_command (line 374) | def test_non_hierarchical_command(self): method test_no_parent_prefixes (line 379) | def test_no_parent_prefixes(self): FILE: tests/test_common_types.py function test_version_info_init (line 4) | def test_version_info_init(): function test_version_info_defaults (line 11) | def test_version_info_defaults(): function test_version_info_compare_major (line 18) | def test_version_info_compare_major(): function test_version_info_compare_minor (line 25) | def test_version_info_compare_minor(): function test_version_info_compare_micro (line 32) | def test_version_info_compare_micro(): function test_version_info_equality (line 39) | def test_version_info_equality(): FILE: tests/test_common_utils.py function test_merge_dicts (line 5) | def test_merge_dicts(): function test_merge_lists (line 12) | def test_merge_lists(): function test_merge_overwrite (line 19) | def test_merge_overwrite(): function test_apply_filter_empty (line 26) | def test_apply_filter_empty(): function test_apply_filter_substitute (line 30) | def test_apply_filter_substitute(): function test_apply_filter_substitute_global (line 35) | def test_apply_filter_substitute_global(): function test_apply_filter_malformed (line 40) | def test_apply_filter_malformed(): function test_is_rotated (line 46) | def test_is_rotated(): FILE: tests/test_completions.py function _load_commands_from_json (line 27) | def _load_commands_from_json() -> dict[str, CommandInfo]: function _build_completions_from_json (line 51) | def _build_completions_from_json() -> dict[str, CommandCompletion]: function commands_from_json (line 100) | def commands_from_json() -> dict[str, CommandCompletion]: function zsh_script (line 106) | def zsh_script(commands_from_json: dict[str, CommandCompletion]) -> str: function bash_script (line 112) | def bash_script(commands_from_json: dict[str, CommandCompletion]) -> str: function fish_script (line 118) | def fish_script(commands_from_json: dict[str, CommandCompletion]) -> str: class TestZshSyntax (line 127) | class TestZshSyntax: method test_syntax_valid (line 130) | def test_syntax_valid(self, zsh_script: str) -> None: class TestBashSyntax (line 141) | class TestBashSyntax: method test_syntax_valid (line 144) | def test_syntax_valid(self, bash_script: str) -> None: class TestFishSyntax (line 155) | class TestFishSyntax: method test_syntax_valid (line 158) | def test_syntax_valid(self, fish_script: str, tmp_path: Path) -> None: class TestZshCommandPresence (line 173) | class TestZshCommandPresence: method test_all_commands_present (line 176) | def test_all_commands_present(self, zsh_script: str, commands_from_jso... method test_help_case_exists (line 181) | def test_help_case_exists(self, zsh_script: str) -> None: method test_help_uses_commands_array (line 185) | def test_help_uses_commands_array(self, zsh_script: str) -> None: class TestBashCommandPresence (line 190) | class TestBashCommandPresence: method test_all_commands_present (line 193) | def test_all_commands_present(self, bash_script: str, commands_from_js... method test_help_case_exists (line 198) | def test_help_case_exists(self, bash_script: str) -> None: class TestFishCommandPresence (line 203) | class TestFishCommandPresence: method test_all_commands_present (line 206) | def test_all_commands_present(self, fish_script: str, commands_from_js... method test_help_completion_exists (line 211) | def test_help_completion_exists(self, fish_script: str) -> None: class TestSubcommandCompletions (line 219) | class TestSubcommandCompletions: method test_zsh_wall_subcommands (line 222) | def test_zsh_wall_subcommands(self, zsh_script: str) -> None: method test_bash_wall_subcommands (line 229) | def test_bash_wall_subcommands(self, bash_script: str) -> None: method test_fish_wall_subcommands (line 235) | def test_fish_wall_subcommands(self, fish_script: str) -> None: method test_zsh_help_wall_subcommands (line 240) | def test_zsh_help_wall_subcommands(self, zsh_script: str) -> None: method test_bash_help_wall_subcommands (line 245) | def test_bash_help_wall_subcommands(self, bash_script: str) -> None: method test_fish_help_wall_subcommands (line 250) | def test_fish_help_wall_subcommands(self, fish_script: str) -> None: FILE: tests/test_config.py function test_config_access (line 5) | def test_config_access(test_logger): function test_get_bool (line 12) | def test_get_bool(test_logger): function test_get_int (line 53) | def test_get_int(test_logger): function test_get_float (line 61) | def test_get_float(test_logger): function test_get_str (line 69) | def test_get_str(test_logger): function test_iter_subsections (line 76) | def test_iter_subsections(test_logger): function test_config_field_defaults (line 102) | def test_config_field_defaults(): function test_config_field_with_values (line 113) | def test_config_field_with_values(): function test_find_similar_key (line 131) | def test_find_similar_key(): function test_format_config_error (line 147) | def test_format_config_error(): function test_config_validator_required_fields (line 158) | def test_config_validator_required_fields(test_logger): function test_config_validator_type_checking (line 178) | def test_config_validator_type_checking(test_logger): function test_config_validator_choices (line 217) | def test_config_validator_choices(test_logger): function test_config_validator_unknown_keys (line 236) | def test_config_validator_unknown_keys(test_logger): function test_config_validator_numeric_strings (line 260) | def test_config_validator_numeric_strings(test_logger): function test_config_validator_optional_fields (line 274) | def test_config_validator_optional_fields(test_logger): function test_config_validator_union_types (line 287) | def test_config_validator_union_types(test_logger): function test_config_validator_children_schema (line 327) | def test_config_validator_children_schema(test_logger): function test_config_validator_children_type_errors (line 347) | def test_config_validator_children_type_errors(test_logger): function test_config_validator_children_unknown_keys (line 367) | def test_config_validator_children_unknown_keys(test_logger): function test_config_validator_children_collects_all_errors (line 387) | def test_config_validator_children_collects_all_errors(test_logger): function test_config_validator_children_non_dict_value (line 418) | def test_config_validator_children_non_dict_value(test_logger): function test_config_validator_nested_children_schema (line 438) | def test_config_validator_nested_children_schema(test_logger): function test_get_template_names_single_use (line 484) | def test_get_template_names_single_use(): function test_get_template_names_list_use (line 492) | def test_get_template_names_list_use(): function test_get_template_names_no_use (line 501) | def test_get_template_names_no_use(): function test_get_template_names_skips_non_dict_and_dotted (line 509) | def test_get_template_names_skips_non_dict_and_dotted(): function test_is_pure_template_true (line 519) | def test_is_pure_template_true(): function test_is_pure_template_false_when_has_command (line 528) | def test_is_pure_template_false_when_has_command(): function test_is_pure_template_false_when_not_referenced (line 538) | def test_is_pure_template_false_when_not_referenced(): function test_is_pure_template_false_for_nonexistent (line 548) | def test_is_pure_template_false_for_nonexistent(): function test_validate_pure_template_no_errors (line 553) | def test_validate_pure_template_no_errors(): function test_validate_real_scratchpad_without_command_errors (line 566) | def test_validate_real_scratchpad_without_command_errors(): function test_validate_static_with_templates (line 579) | def test_validate_static_with_templates(): FILE: tests/test_event_signatures.py function get_protocol_signatures (line 31) | def get_protocol_signatures(protocol_cls: type) -> dict[str, inspect.Sig... function signatures_compatible (line 40) | def signatures_compatible(actual: inspect.Signature, expected: inspect.S... function test_hyprland_event_signatures (line 76) | def test_hyprland_event_signatures(): function test_niri_event_signatures (line 120) | def test_niri_event_signatures(): function test_protocol_methods_documented (line 162) | def test_protocol_methods_documented(): FILE: tests/test_external_plugins.py function external_plugin_config (line 13) | async def external_plugin_config(monkeypatch): function test_ext_plugin (line 25) | async def test_ext_plugin(): FILE: tests/test_http.py class TestFallbackClientTimeout (line 30) | class TestFallbackClientTimeout: method test_default_timeout (line 33) | def test_default_timeout(self) -> None: method test_custom_timeout (line 38) | def test_custom_timeout(self) -> None: class TestFallbackResponse (line 44) | class TestFallbackResponse: method test_status_and_url (line 47) | def test_status_and_url(self) -> None: method test_json (line 54) | async def test_json(self) -> None: method test_read (line 62) | async def test_read(self) -> None: method test_raise_for_status_ok (line 69) | def test_raise_for_status_ok(self) -> None: method test_raise_for_status_redirect (line 74) | def test_raise_for_status_redirect(self) -> None: method test_raise_for_status_client_error (line 79) | def test_raise_for_status_client_error(self) -> None: method test_raise_for_status_server_error (line 85) | def test_raise_for_status_server_error(self) -> None: class TestFallbackClientSession (line 92) | class TestFallbackClientSession: method reset_warning (line 96) | def reset_warning(self) -> None: method _mock_response (line 100) | def _mock_response(self, data: bytes, status: int = HTTP_OK, url: str ... method test_get_simple (line 109) | async def test_get_simple(self) -> None: method test_get_with_params (line 121) | async def test_get_with_params(self) -> None: method test_get_with_headers (line 137) | async def test_get_with_headers(self) -> None: method test_get_with_timeout (line 153) | async def test_get_with_timeout(self) -> None: method test_http_error_returns_response (line 167) | async def test_http_error_returns_response(self) -> None: method test_network_error_raises_client_error (line 184) | async def test_network_error_raises_client_error(self) -> None: method test_timeout_raises_client_error (line 195) | async def test_timeout_raises_client_error(self) -> None: method test_session_context_manager (line 206) | async def test_session_context_manager(self) -> None: method test_close (line 219) | async def test_close(self) -> None: method test_warns_on_first_use (line 226) | def test_warns_on_first_use(self) -> None: method test_warns_only_once (line 231) | def test_warns_only_once(self) -> None: class TestFallbackClientError (line 242) | class TestFallbackClientError: method test_is_exception (line 245) | def test_is_exception(self) -> None: method test_message (line 249) | def test_message(self) -> None: FILE: tests/test_interface.py class ConcretePlugin (line 7) | class ConcretePlugin(Plugin): function plugin (line 14) | def plugin(): function test_plugin_init (line 31) | async def test_plugin_init(plugin): function test_load_config (line 41) | async def test_load_config(plugin): function test_get_clients_filter (line 52) | async def test_get_clients_filter(plugin): FILE: tests/test_ipc.py function test_log (line 12) | def test_log(): function mock_open_connection (line 22) | def mock_open_connection(mocker): function test_hyprctl_connection_context_manager (line 34) | async def test_hyprctl_connection_context_manager(mock_open_connection): function test_hyprctl_connection_error (line 47) | async def test_hyprctl_connection_error(mocker): function test_get_response (line 59) | async def test_get_response(mock_open_connection): function test_hyprland_backend_execute_success (line 72) | async def test_hyprland_backend_execute_success(mock_open_connection, te... function test_hyprland_backend_execute_failure (line 86) | async def test_hyprland_backend_execute_failure(mock_open_connection, te... function test_hyprland_backend_execute_batch (line 100) | async def test_hyprland_backend_execute_batch(mock_open_connection, test... function test_backend_get_client_props (line 119) | async def test_backend_get_client_props(mock_open_connection, test_log): FILE: tests/test_load_all.py function load_all_config (line 7) | async def load_all_config(monkeypatch): function test_load_all (line 33) | async def test_load_all(subprocess_shell_mock): FILE: tests/test_monitors_commands.py class TestBuildHyprlandCommand (line 15) | class TestBuildHyprlandCommand: method test_basic_command (line 18) | def test_basic_command(self): method test_with_custom_resolution_string (line 36) | def test_with_custom_resolution_string(self): method test_with_custom_resolution_list (line 54) | def test_with_custom_resolution_list(self): method test_with_custom_scale (line 72) | def test_with_custom_scale(self): method test_with_custom_rate (line 90) | def test_with_custom_rate(self): method test_with_transform (line 108) | def test_with_transform(self): class TestBuildNiriPositionAction (line 127) | class TestBuildNiriPositionAction: method test_basic_position (line 130) | def test_basic_position(self): method test_zero_position (line 141) | def test_zero_position(self): class TestBuildNiriScaleAction (line 149) | class TestBuildNiriScaleAction: method test_scale_1 (line 152) | def test_scale_1(self): method test_scale_2 (line 158) | def test_scale_2(self): method test_scale_fractional (line 164) | def test_scale_fractional(self): class TestBuildNiriTransformAction (line 171) | class TestBuildNiriTransformAction: method test_transform_0 (line 174) | def test_transform_0(self): method test_transform_1 (line 185) | def test_transform_1(self): method test_transform_4 (line 191) | def test_transform_4(self): method test_transform_string (line 197) | def test_transform_string(self): method test_transform_out_of_range (line 203) | def test_transform_out_of_range(self): class TestBuildNiriDisableAction (line 210) | class TestBuildNiriDisableAction: method test_disable (line 213) | def test_disable(self): class TestNiriTransformNames (line 220) | class TestNiriTransformNames: method test_length (line 223) | def test_length(self): method test_values (line 227) | def test_values(self): FILE: tests/test_monitors_layout.py function make_monitor (line 16) | def make_monitor(name, width=1920, height=1080, x=0, y=0, scale=1.0, tra... class TestGetDims (line 31) | class TestGetDims: method test_basic_dimensions (line 34) | def test_basic_dimensions(self): method test_with_scale (line 43) | def test_with_scale(self): method test_with_config_scale (line 52) | def test_with_config_scale(self): method test_with_config_resolution_string (line 62) | def test_with_config_resolution_string(self): method test_with_config_resolution_list (line 72) | def test_with_config_resolution_list(self): method test_with_transform_90 (line 82) | def test_with_transform_90(self): method test_with_transform_270 (line 91) | def test_with_transform_270(self): method test_with_transform_180 (line 100) | def test_with_transform_180(self): class TestComputeXy (line 110) | class TestComputeXy: method test_left (line 113) | def test_left(self): method test_right (line 123) | def test_right(self): method test_top (line 133) | def test_top(self): method test_bottom (line 143) | def test_bottom(self): method test_left_center (line 153) | def test_left_center(self): method test_right_center (line 163) | def test_right_center(self): method test_top_center (line 173) | def test_top_center(self): method test_bottom_end (line 183) | def test_bottom_end(self): method test_unknown_rule_returns_ref_position (line 193) | def test_unknown_rule_returns_ref_position(self): class TestBuildGraph (line 204) | class TestBuildGraph: method test_basic_graph (line 207) | def test_basic_graph(self): method test_multiple_targets_reported (line 224) | def test_multiple_targets_reported(self): method test_ignores_monitor_props (line 243) | def test_ignores_monitor_props(self): method test_ignores_disables (line 258) | def test_ignores_disables(self): class TestComputePositions (line 274) | class TestComputePositions: method test_chain_layout (line 277) | def test_chain_layout(self): method test_circular_dependency (line 297) | def test_circular_dependency(self): method test_anchor_monitor (line 314) | def test_anchor_monitor(self): class TestFindCyclePath (line 332) | class TestFindCyclePath: method test_simple_cycle (line 335) | def test_simple_cycle(self): method test_three_way_cycle (line 349) | def test_three_way_cycle(self): method test_no_clear_cycle (line 364) | def test_no_clear_cycle(self): class TestConstants (line 379) | class TestConstants: method test_monitor_props (line 382) | def test_monitor_props(self): method test_max_cycle_path_length (line 389) | def test_max_cycle_path_length(self): FILE: tests/test_monitors_resolution.py function make_monitor (line 11) | def make_monitor(name, description=None, width=1920, height=1080, x=0, y... class TestGetMonitorByPattern (line 26) | class TestGetMonitorByPattern: method test_match_by_name (line 29) | def test_match_by_name(self): method test_match_by_description_substring (line 43) | def test_match_by_description_substring(self): method test_no_match (line 57) | def test_no_match(self): method test_cache_hit (line 69) | def test_cache_hit(self): method test_cache_populated (line 82) | def test_cache_populated(self): method test_name_takes_precedence (line 97) | def test_name_takes_precedence(self): class TestResolvePlacementConfig (line 112) | class TestResolvePlacementConfig: method test_basic_resolution (line 115) | def test_basic_resolution(self): method test_description_pattern_resolution (line 130) | def test_description_pattern_resolution(self): method test_preserves_monitor_props (line 145) | def test_preserves_monitor_props(self): method test_multiple_targets_as_list (line 166) | def test_multiple_targets_as_list(self): method test_unmatched_pattern_ignored (line 181) | def test_unmatched_pattern_ignored(self): method test_unmatched_target_ignored (line 196) | def test_unmatched_target_ignored(self): method test_uses_provided_cache (line 210) | def test_uses_provided_cache(self): method test_empty_config (line 226) | def test_empty_config(self): method test_empty_monitors (line 237) | def test_empty_monitors(self): method test_mixed_props_and_rules (line 248) | def test_mixed_props_and_rules(self): FILE: tests/test_plugin_expose.py function sample_clients (line 8) | def sample_clients(): function extension (line 17) | def extension(): function test_exposed_clients_filtering (line 24) | async def test_exposed_clients_filtering(extension, sample_clients): function test_run_expose_enable (line 39) | async def test_run_expose_enable(extension, sample_clients): function test_run_expose_disable (line 63) | async def test_run_expose_disable(extension, sample_clients): function test_run_expose_empty_workspace (line 87) | async def test_run_expose_empty_workspace(extension): FILE: tests/test_plugin_fetch_client_menu.py function extension (line 9) | def extension(): function test_run_unfetch_client_success (line 24) | async def test_run_unfetch_client_success(extension): function test_run_unfetch_client_unknown (line 33) | async def test_run_unfetch_client_unknown(extension): function test_run_fetch_client_menu (line 43) | async def test_run_fetch_client_menu(extension): function test_run_fetch_client_menu_cancel (line 67) | async def test_run_fetch_client_menu_cancel(extension): function test_center_window_on_monitor_floats_and_centers (line 77) | async def test_center_window_on_monitor_floats_and_centers(extension): function test_center_window_already_floating (line 95) | async def test_center_window_already_floating(extension): function test_center_window_resizes_if_too_large (line 113) | async def test_center_window_resizes_if_too_large(extension): function test_center_window_with_rotated_monitor (line 132) | async def test_center_window_with_rotated_monitor(extension): function test_center_window_disabled (line 153) | async def test_center_window_disabled(extension): function test_center_window_with_scaled_monitor (line 171) | async def test_center_window_with_scaled_monitor(extension): FILE: tests/test_plugin_layout_center.py function extension (line 8) | def extension(): function test_sanity_check_fails (line 19) | async def test_sanity_check_fails(extension): function test_sanity_check_passes (line 29) | async def test_sanity_check_passes(extension): function test_calculate_geometry (line 37) | async def test_calculate_geometry(extension): function test_change_focus_next (line 55) | async def test_change_focus_next(extension): function test_change_focus_prev_wrap (line 70) | async def test_change_focus_prev_wrap(extension): FILE: tests/test_plugin_lost_windows.py function extension (line 7) | def extension(): function test_contains (line 11) | def test_contains(): function test_run_attract_lost (line 27) | async def test_run_attract_lost(extension): FILE: tests/test_plugin_magnify.py function magnify_config (line 9) | async def magnify_config(monkeypatch): function test_magnify (line 16) | async def test_magnify(magnify_config, server_fixture): FILE: tests/test_plugin_menubar.py function test_get_pid_from_layers_hyprland (line 7) | def test_get_pid_from_layers_hyprland(): function test_is_bar_in_layers_niri (line 34) | def test_is_bar_in_layers_niri(): function test_is_bar_alive_hyprland (line 54) | async def test_is_bar_alive_hyprland(): function test_is_bar_alive_niri (line 76) | async def test_is_bar_alive_niri(): function extension (line 99) | def extension(): function test_get_best_monitor_hyprland (line 114) | async def test_get_best_monitor_hyprland(extension): function test_get_best_monitor_niri (line 141) | async def test_get_best_monitor_niri(extension): function test_set_best_monitor (line 174) | async def test_set_best_monitor(extension): function test_event_monitoradded (line 187) | async def test_event_monitoradded(extension): function test_run_bar (line 203) | async def test_run_bar(extension): FILE: tests/test_plugin_monitor.py function shapeL_config (line 10) | async def shapeL_config(monkeypatch): function flipped_shapeL_config (line 29) | async def flipped_shapeL_config(monkeypatch): function descr_config (line 48) | async def descr_config(monkeypatch): function topdown_config (line 67) | async def topdown_config(monkeypatch): function bottomup_config (line 86) | async def bottomup_config(monkeypatch): function get_xrandr_calls (line 104) | def get_xrandr_calls(mock): function reversed_config (line 109) | async def reversed_config(monkeypatch): function assert_modes (line 127) | def assert_modes(call_list, expected=None, allow_empty=False): function test_relayout (line 140) | async def test_relayout(): function test_3screens_relayout (line 154) | async def test_3screens_relayout(): function test_3screens_relayout_b (line 169) | async def test_3screens_relayout_b(): function test_shape_l (line 184) | async def test_shape_l(): function test_flipped_shape_l (line 199) | async def test_flipped_shape_l(): function test_3screens_rev_relayout (line 214) | async def test_3screens_rev_relayout(): function test_events (line 229) | async def test_events(): function test_events_d (line 243) | async def test_events_d(): function test_events2 (line 258) | async def test_events2(): function test_events3 (line 274) | async def test_events3(): function test_events3b (line 290) | async def test_events3b(): function test_events4 (line 306) | async def test_events4(): function test_nothing (line 322) | async def test_nothing(): function disables_config (line 339) | async def disables_config(monkeypatch): function disables_list_config (line 358) | async def disables_list_config(monkeypatch): function assert_modes (line 376) | def assert_modes(call_list, expected=None, allow_empty=False): function test_disables_monitor (line 389) | async def test_disables_monitor(): function test_disables_monitor_list (line 404) | async def test_disables_monitor_list(): FILE: tests/test_plugin_scratchpads.py function scratchpads (line 13) | def scratchpads(monkeypatch, mocker): function animated_scratchpads (line 27) | def animated_scratchpads(request, monkeypatch, mocker): function no_proc_scratchpads (line 44) | def no_proc_scratchpads(request, monkeypatch, mocker): function test_not_found (line 61) | async def test_not_found(scratchpads, subprocess_shell_mock, server_fixt... function gen_call_set (line 74) | def gen_call_set(call_list: list) -> set[str]: function _send_window_events (line 85) | async def _send_window_events(address="12345677890", klass="kitty-dropte... function test_std (line 92) | async def test_std(scratchpads, subprocess_shell_mock, server_fixture): function test_animated (line 130) | async def test_animated(animated_scratchpads, subprocess_shell_mock, ser... function test_no_proc (line 166) | async def test_no_proc(no_proc_scratchpads, subprocess_shell_mock, serve... function test_attach_sanity_checks (line 190) | async def test_attach_sanity_checks(scratchpads, subprocess_shell_mock, ... function test_attach_workspace_sanity (line 233) | async def test_attach_workspace_sanity(scratchpads, subprocess_shell_moc... function exclude_scratchpads (line 330) | def exclude_scratchpads(monkeypatch, mocker): function test_excluded_scratches_isolation (line 353) | async def test_excluded_scratches_isolation(exclude_scratchpads, subproc... function exclude_wildcard_scratchpads (line 389) | def exclude_wildcard_scratchpads(monkeypatch, mocker): function test_excluded_wildcard_list (line 412) | async def test_excluded_wildcard_list(exclude_wildcard_scratchpads, subp... function test_command_serialization (line 446) | async def test_command_serialization(scratchpads, subprocess_shell_mock,... FILE: tests/test_plugin_shift_monitors.py function extension (line 10) | def extension(): function test_init (line 18) | async def test_init(extension): function test_shift_positive (line 28) | async def test_shift_positive(extension): function test_shift_negative (line 41) | async def test_shift_negative(extension): function test_monitor_events (line 53) | async def test_monitor_events(extension): FILE: tests/test_plugin_shortcuts_menu.py function extension (line 9) | def extension(test_logger): function test_run_menu_simple_command (line 27) | async def test_run_menu_simple_command(extension): function test_run_menu_nested (line 43) | async def test_run_menu_nested(extension): function test_run_menu_cancellation (line 60) | async def test_run_menu_cancellation(extension): function test_run_menu_with_skip_single (line 70) | async def test_run_menu_with_skip_single(extension): function test_run_menu_formatting (line 94) | async def test_run_menu_formatting(extension): FILE: tests/test_plugin_stash.py function extension (line 9) | def extension(): function styled_extension (line 14) | def styled_extension(): function test_stash_moves_window_to_special_workspace (line 22) | async def test_stash_moves_window_to_special_workspace(extension): function test_stash_custom_name (line 38) | async def test_stash_custom_name(extension): function test_stash_already_floating_no_toggle (line 52) | async def test_stash_already_floating_no_toggle(extension): function test_unstash_moves_window_back (line 71) | async def test_unstash_moves_window_back(extension): function test_unstash_from_different_stash (line 88) | async def test_unstash_from_different_stash(extension): function test_unstash_originally_floating_stays_floating (line 104) | async def test_unstash_originally_floating_stays_floating(extension): function test_stash_no_active_window (line 122) | async def test_stash_no_active_window(extension): function test_stash_on_shown_window_removes_from_stash (line 136) | async def test_stash_on_shown_window_removes_from_stash(extension): function test_stash_on_shown_window_originally_floating_no_toggle (line 167) | async def test_stash_on_shown_window_originally_floating_no_toggle(exten... function test_stash_on_last_shown_window_clears_visibility (line 188) | async def test_stash_on_last_shown_window_clears_visibility(extension): function test_stash_toggle_show_moves_windows_to_active_workspace (line 213) | async def test_stash_toggle_show_moves_windows_to_active_workspace(exten... function test_stash_toggle_show_all_moves_are_silent (line 228) | async def test_stash_toggle_show_all_moves_are_silent(extension): function test_stash_toggle_show_does_not_toggle_floating (line 246) | async def test_stash_toggle_show_does_not_toggle_floating(extension): function test_stash_toggle_show_no_windows_is_noop (line 258) | async def test_stash_toggle_show_no_windows_is_noop(extension): function test_stash_toggle_show_custom_name (line 268) | async def test_stash_toggle_show_custom_name(extension): function test_stash_toggle_hide_moves_windows_back (line 281) | async def test_stash_toggle_hide_moves_windows_back(extension): function test_stash_toggle_hide_clears_tracking (line 300) | async def test_stash_toggle_hide_clears_tracking(extension): function test_on_reload_clears_old_rules_and_registers_new (line 318) | async def test_on_reload_clears_old_rules_and_registers_new(styled_exten... function test_on_reload_clears_rules_even_when_style_empty (line 329) | async def test_on_reload_clears_rules_even_when_style_empty(extension): function test_stash_tags_window_when_style_configured (line 338) | async def test_stash_tags_window_when_style_configured(styled_extension): function test_stash_does_not_tag_without_style (line 353) | async def test_stash_does_not_tag_without_style(extension): function test_unstash_untags_window_when_style_configured (line 368) | async def test_unstash_untags_window_when_style_configured(styled_extens... function test_stash_on_shown_window_untags_when_style_configured (line 382) | async def test_stash_on_shown_window_untags_when_style_configured(styled... function test_closewindow_removes_from_was_floating (line 406) | async def test_closewindow_removes_from_was_floating(extension): function test_closewindow_removes_from_shown_addresses (line 416) | async def test_closewindow_removes_from_shown_addresses(extension): function test_closewindow_clears_group_when_last_shown_window_closed (line 429) | async def test_closewindow_clears_group_when_last_shown_window_closed(ex... function test_closewindow_noop_for_unknown_window (line 441) | async def test_closewindow_noop_for_unknown_window(extension): function test_closewindow_cleans_both_was_floating_and_shown (line 455) | async def test_closewindow_cleans_both_was_floating_and_shown(extension): FILE: tests/test_plugin_system_notifier.py function extension (line 10) | async def extension(): function test_initialization (line 20) | async def test_initialization(extension): function test_on_reload_builtin_parser (line 27) | async def test_on_reload_builtin_parser(extension): function test_on_reload_custom_parser (line 35) | async def test_on_reload_custom_parser(extension): function test_parser_matching (line 43) | async def test_parser_matching(extension): function test_notify_send_option (line 79) | async def test_notify_send_option(extension): function test_exit_cleanup (line 113) | async def test_exit_cleanup(extension): FILE: tests/test_plugin_toggle_dpms.py function extension (line 10) | def extension(): function test_run_toggle_dpms_off (line 18) | async def test_run_toggle_dpms_off(extension): function test_run_toggle_dpms_on (line 26) | async def test_run_toggle_dpms_on(extension): FILE: tests/test_plugin_toggle_special.py function extension (line 9) | def extension(): function test_run_toggle_special_minimize (line 14) | async def test_run_toggle_special_minimize(extension): function test_run_toggle_special_restore (line 25) | async def test_run_toggle_special_restore(extension): FILE: tests/test_plugin_wallpapers.py function extension (line 14) | def extension(mocker, test_logger): function test_on_reload (line 26) | async def test_on_reload(extension, mocker): function test_select_next_image (line 50) | async def test_select_next_image(extension): function test_run_wall_next (line 66) | async def test_run_wall_next(extension): function test_detect_theme (line 77) | async def test_detect_theme(mocker, test_logger): function test_material_palette_generation (line 92) | async def test_material_palette_generation(): function test_run_palette_terminal (line 118) | async def test_run_palette_terminal(extension, mocker): function test_run_palette_json (line 141) | async def test_run_palette_json(extension, mocker): function test_run_palette_default_color (line 165) | async def test_run_palette_default_color(extension, mocker): function test_run_color (line 191) | async def test_run_color(extension, mocker): function test_run_color_with_scheme (line 202) | async def test_run_color_with_scheme(extension, mocker): function online_extension (line 217) | def online_extension(mocker, test_logger): function test_fetch_online_image_uses_prefetched (line 242) | async def test_fetch_online_image_uses_prefetched(online_extension, mock... function test_fetch_online_image_prefetched_missing (line 260) | async def test_fetch_online_image_prefetched_missing(online_extension, m... function test_prefetch_online_image_success (line 282) | async def test_prefetch_online_image_success(online_extension, mocker): function test_prefetch_online_image_retry (line 302) | async def test_prefetch_online_image_retry(online_extension, mocker): FILE: tests/test_plugin_workspaces_follow_focus.py function layout_config (line 72) | async def layout_config(monkeypatch): function test_layout_center (line 81) | async def test_layout_center(): FILE: tests/test_process.py class TestManagedProcess (line 10) | class TestManagedProcess: method test_start_and_stop (line 14) | async def test_start_and_stop(self): method test_stop_not_started (line 30) | async def test_stop_not_started(self): method test_stop_already_exited (line 37) | async def test_stop_already_exited(self): method test_start_stops_existing (line 47) | async def test_start_stops_existing(self): method test_restart (line 60) | async def test_restart(self): method test_restart_without_start_raises (line 74) | async def test_restart_without_start_raises(self): method test_wait (line 81) | async def test_wait(self): method test_wait_without_start_raises (line 91) | async def test_wait_without_start_raises(self): method test_returncode (line 98) | async def test_returncode(self): method test_iter_lines (line 108) | async def test_iter_lines(self): method test_iter_lines_no_stdout_raises (line 117) | async def test_iter_lines_no_stdout_raises(self): method test_iter_lines_not_started_raises (line 129) | async def test_iter_lines_not_started_raises(self): method test_graceful_timeout (line 137) | async def test_graceful_timeout(self): method test_process_property (line 149) | async def test_process_property(self): class TestSupervisedProcess (line 161) | class TestSupervisedProcess: method test_start_and_stop (line 165) | async def test_start_and_stop(self): method test_auto_restart (line 181) | async def test_auto_restart(self): method test_cooldown (line 207) | async def test_cooldown(self): method test_on_crash_receives_returncode (line 233) | async def test_on_crash_receives_returncode(self): method test_stop_cancels_supervision (line 257) | async def test_stop_cancels_supervision(self): method test_start_stops_previous (line 271) | async def test_start_stops_previous(self): method test_no_on_crash_callback (line 286) | async def test_no_on_crash_callback(self): FILE: tests/test_pyprland.py function test_reload (line 15) | async def test_reload(monkeypatch): FILE: tests/test_scratchpad_vulnerabilities.py function multi_scratchpads (line 11) | def multi_scratchpads(monkeypatch, mocker): function subprocess_shell_mock (line 33) | def subprocess_shell_mock(mocker): function mock_aioops (line 61) | def mock_aioops(mocker): function gen_call_set (line 113) | def gen_call_set(call_list: list) -> set[str]: function _send_window_events (line 124) | async def _send_window_events(address="12345677890", klass="scratch-term... function test_shared_custody_conflict (line 177) | async def test_shared_custody_conflict(multi_scratchpads, subprocess_she... function test_zombie_process_recovery (line 281) | async def test_zombie_process_recovery(multi_scratchpads, subprocess_she... FILE: tests/test_string_template.py function test_templates (line 1) | def test_templates(): FILE: tests/test_wallpapers_cache.py function test_cache_get_path (line 11) | def test_cache_get_path(tmp_path): function test_cache_get_path_different_keys (line 20) | def test_cache_get_path_different_keys(tmp_path): function test_cache_is_valid_no_ttl (line 28) | def test_cache_is_valid_no_ttl(tmp_path): function test_cache_is_valid_nonexistent (line 36) | def test_cache_is_valid_nonexistent(tmp_path): function test_cache_is_valid_with_ttl_fresh (line 43) | def test_cache_is_valid_with_ttl_fresh(tmp_path): function test_cache_is_valid_with_ttl_expired (line 51) | def test_cache_is_valid_with_ttl_expired(tmp_path): function test_cache_get_hit (line 61) | def test_cache_get_hit(tmp_path): function test_cache_get_miss (line 69) | def test_cache_get_miss(tmp_path): function test_cache_get_expired (line 75) | def test_cache_get_expired(tmp_path): function test_cache_store (line 86) | async def test_cache_store(tmp_path): function test_cache_store_overwrite (line 95) | async def test_cache_store_overwrite(tmp_path): function test_cache_cleanup_with_ttl (line 104) | def test_cache_cleanup_with_ttl(tmp_path): function test_cache_cleanup_no_ttl (line 122) | def test_cache_cleanup_no_ttl(tmp_path): function test_cache_cleanup_with_custom_max_age (line 135) | def test_cache_cleanup_with_custom_max_age(tmp_path): function test_cache_auto_cleanup_max_size (line 149) | def test_cache_auto_cleanup_max_size(tmp_path): function test_cache_auto_cleanup_max_count (line 169) | def test_cache_auto_cleanup_max_count(tmp_path): function test_cache_auto_cleanup_under_limits (line 187) | def test_cache_auto_cleanup_under_limits(tmp_path): function test_cache_auto_cleanup_no_limits (line 204) | def test_cache_auto_cleanup_no_limits(tmp_path): function test_cache_clear (line 216) | def test_cache_clear(tmp_path): function test_cache_clear_empty (line 232) | def test_cache_clear_empty(tmp_path): function test_cache_hash_key (line 239) | def test_cache_hash_key(tmp_path): function test_cache_get_cache_size (line 256) | def test_cache_get_cache_size(tmp_path): function test_cache_get_cache_count (line 267) | def test_cache_get_cache_count(tmp_path): FILE: tests/test_wallpapers_colors.py function test_build_hue_histogram (line 33) | def test_build_hue_histogram(): function test_smooth_histogram (line 57) | def test_smooth_histogram(): function test_find_peaks (line 80) | def test_find_peaks(): function test_calculate_hue_diff (line 98) | def test_calculate_hue_diff(): function test_get_best_pixel_for_hue (line 113) | def test_get_best_pixel_for_hue(): function test_select_colors_from_peaks (line 136) | def test_select_colors_from_peaks(): function test_get_dominant_colors_integration (line 156) | def test_get_dominant_colors_integration(): function test_nicify_oklab (line 194) | def test_nicify_oklab(): function _oklab_hue (line 217) | def _oklab_hue(rgb: tuple[int, int, int]) -> float: function _hls_saturation (line 243) | def _hls_saturation(rgb: tuple[int, int, int]) -> float: function _hue_distance (line 249) | def _hue_distance(h1: float, h2: float) -> float: function test_nicify_oklab_hue_preservation (line 255) | def test_nicify_oklab_hue_preservation(): function test_nicify_oklab_distinct_outputs_for_distinct_inputs (line 282) | def test_nicify_oklab_distinct_outputs_for_distinct_inputs(): function test_nicify_oklab_muted_input_not_oversaturated (line 301) | def test_nicify_oklab_muted_input_not_oversaturated(): function test_nicify_oklab_saturation_params_are_effective (line 315) | def test_nicify_oklab_saturation_params_are_effective(): function test_nicify_oklab_chroma_not_always_capped (line 337) | def test_nicify_oklab_chroma_not_always_capped(): function test_nicify_oklab_user_reported_bug (line 359) | def test_nicify_oklab_user_reported_bug(): function wallpaper_plugin (line 387) | def wallpaper_plugin(): function test_color_scheme_props (line 391) | def test_color_scheme_props(wallpaper_plugin): function test_color_scheme_props_default (line 442) | def test_color_scheme_props_default(wallpaper_plugin): function test_generate_palette_basic (line 447) | def test_generate_palette_basic(wallpaper_plugin): function test_generate_palette_islands (line 462) | def test_generate_palette_islands(wallpaper_plugin): function test_set_alpha (line 493) | def test_set_alpha(wallpaper_plugin): function test_set_lightness (line 502) | def test_set_lightness(wallpaper_plugin): function test_apply_filters (line 517) | async def test_apply_filters(wallpaper_plugin): function test_color_scheme_effect_on_saturation (line 546) | def test_color_scheme_effect_on_saturation(wallpaper_plugin): function test_hex_to_rgb (line 591) | def test_hex_to_rgb(): function test_generate_sample_palette (line 607) | def test_generate_sample_palette(): function test_generate_sample_palette_light_theme (line 636) | def test_generate_sample_palette_light_theme(): function test_categorize_palette (line 646) | def test_categorize_palette(): function test_palette_to_json (line 669) | def test_palette_to_json(): function test_palette_to_terminal (line 703) | def test_palette_to_terminal(): FILE: tests/test_wallpapers_imageutils.py function test_expand_path (line 21) | def test_expand_path(): function test_get_files_with_ext (line 34) | async def test_get_files_with_ext(): function test_color_conversions (line 74) | def test_color_conversions(): function test_get_variant_color (line 83) | def test_get_variant_color(): function test_rounded_image_manager_paths (line 99) | def test_rounded_image_manager_paths(tmp_path): function test_get_effective_dimensions_no_rotation (line 123) | def test_get_effective_dimensions_no_rotation(): function test_get_effective_dimensions_rotated (line 131) | def test_get_effective_dimensions_rotated(): function test_rounded_image_manager_processing (line 139) | def test_rounded_image_manager_processing(tmp_path): FILE: tests/testtools.py function wait_called (line 5) | async def wait_called(fn, timeout=1.0, count=1): function get_executed_commands (line 18) | def get_executed_commands(mock): class MockReader (line 41) | class MockReader: method __init__ (line 44) | def __init__(self): method readline (line 47) | async def readline(self, *a): class MockWriter (line 53) | class MockWriter: method __init__ (line 56) | def __init__(self): FILE: tests/vreg/01_client_id_change.py function show_window (line 10) | def show_window():