From ad09ccb0f2dc64bf0f6b093e96468e38cfdbfd63 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 12 Jan 2021 04:49:45 +0530 Subject: [PATCH] Panel kitten: Allow setting WM_CLASS Fixes #3233 --- docs/changelog.rst | 2 ++ kittens/panel/main.py | 23 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 2ae02556b..643545892 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -25,6 +25,8 @@ To update |kitty|, :doc:`follow the instructions `. - Unicode input: Fix using index in select by name mode not working for indices larger than 16. Also using an index does not filter the list of matches. (:pull:`3219`) +- Panel kitten: Allow setting WM_CLASS (:iss:`3233`) + 0.19.3 [2020-12-19] ------------------- diff --git a/kittens/panel/main.py b/kittens/panel/main.py index 15e3755fa..559550aff 100644 --- a/kittens/panel/main.py +++ b/kittens/panel/main.py @@ -10,7 +10,7 @@ from typing import Callable, Dict, List, Tuple from kitty.cli import parse_args from kitty.cli_stub import PanelCLIOptions -from kitty.constants import is_macos +from kitty.constants import is_macos, appname from kitty.os_window_size import WindowSizeData OPTIONS = r''' @@ -42,7 +42,19 @@ Path to config file to use for kitty when drawing the panel. type=list Override individual kitty configuration options, can be specified multiple times. Syntax: :italic:`name=value`. For example: :option:`kitty +kitten panel -o` font_size=20 -'''.format + + +--class +dest=cls +default={appname}-panel +condition=not is_macos +Set the class part of the :italic:`WM_CLASS` window property. On Wayland, it sets the app id. + + +--name +condition=not is_macos +Set the name part of the :italic:`WM_CLASS` property (defaults to using the value from :option:`{appname} --class`) +'''.format(appname=appname).format args = PanelCLIOptions() @@ -138,9 +150,12 @@ def main(sys_args: List[str]) -> None: raise SystemExit('You must specify the program to run') sys.argv = ['kitty'] for config in args.config: - sys.argv.append('--config={}'.format(config)) + sys.argv.extend(('--config', config)) + sys.argv.extend(('--class', args.cls)) + if args.name: + sys.argv.extend(('--name', args.name)) for override in args.override: - sys.argv.append('--override={}'.format(override)) + sys.argv.extend(('--override', override)) sys.argv.extend(items) from kitty.main import run_app, main as real_main run_app.cached_values_name = 'panel'