I want the app name to be displayed under the icon in Alt+Tab menu, but currently it only displays the className of the root, which by default is "Tk". So in Gnome3 all Tkinter apps show up as "Tk" in the panel and in the Alt+Tab menu. It is possible to override that to some extent by giving className attribute to Tk(), but I don't know what the side effects are and it doesn't preserve capitalization of the name - the first letter is capital, but all others are small. Moreover, default title of the window is taken from the className by making first letter small and leaving the rest as given, so at the end nothing is as intended. E.g., if I give calssName="APP", the app is called "App", but windows title is "aPP". There should be a way to give this information, but I don't see it exposed anywhere and it is not correctly inferred from args[0] either. Example program attached. |
|
|
No, it apears as "Toplevel". I'm not sure if the program.desktop file has something to do with that, but I didn't manage to get the application name from a desktop file to get used for Tkinter program. And I don't have any Tkinter or Tk app which would do what I'm trying to do. For example, Firefox shows up as "Mozilla Firefox", but I don't see any X property with that value for Firefox window.. it might be something Mutter is doing. Here is xprop for IDLE and Firefox: $ sleep 5; xprop XKLAVIER_STATE(INTEGER) = 0, 0 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 23, 2 _NET_WM_DESKTOP(CARDINAL) = 0 _NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW _NET_WM_STATE(ATOM) = WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified minimum size: 1 by 1 WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. _NET_WM_ICON_NAME(UTF8_STRING) = "Python Shell" WM_ICON_NAME(STRING) = "Python Shell" _NET_WM_NAME(UTF8_STRING) = "Python Shell" WM_NAME(STRING) = "Python Shell" WM_CLASS(STRING) = "42772672", "Toplevel" $ sleep 5; xprop XKLAVIER_STATE(INTEGER) = 0, 0 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 24, 0 _NET_WM_DESKTOP(CARDINAL) = 0 _NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW _NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. bitmap id # to use for icon: 0x1600094 bitmap id # of mask for icon: 0x1600095 window id # of group leader: 0x1600001 _NET_STARTUP_ID(UTF8_STRING) = "gnome-shell-17731-RD-OC-firefox-10_TIME71936264" WM_WINDOW_ROLE(STRING) = "browser" XdndAware(ATOM) = BITMAP _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0 _NET_WM_ICON(CARDINAL) = Icon (16 x 16): ░ ░▒▒▒▒░ ▒▒░▒▒▒ ░▒▒▒ ░▒░▒▒░▒ ░░▒░▒ ░░░░░░▒▒▓░░▒░░▒ ▒░░░░░▒▒▓░░▒░ ░░ ▒░░░░░░▒░░░▒▒ ░░ ▒░░░░░░▒░▒▒▒▒ ░▒ ▒░░▒▒▒▒▓▒▒▒▒▒ ░▒ ▒░░░▒▒▓▒▒▒▒▒▒ ░▒ ░▒░░▒▒▒▒▒▒▓▓░░░░ ▒▒░░▒▒▒▒▓▒░░░▒░ ▒▒░░░░▒▒▒▒░░▒▒ ▒▒░░░░░░░░░▒ ▒▒▒▒▒▒▒▒▒▒░ ▒▒▒▒▒▒▒▒░ ░░▒▒░░ Icon (32 x 32): ░▒▒▒▓▒▒▒░ ▒▒▒░ ░▒▒▒ ░▓▒░ ░▒▒░ ░ ▒▓▒░ ▒▒▒▒░ ▒▒░▒▓▒▒░░░░ ░▒▒░▒░ ▓▒▒▓▒▒▒▒▒▓░ ░░░▒▒ ▒▒ ▓▒░░░░░▒▒▒░ ░░░░▒░░░ ▒▒ ░▒░░░░░▒▒▓▒ ░░░░▓░ ░▒░ ▒▒░▒▒▒▒▒▒▒▒░░░ ░░░▒▒ ░░▒ ░▒░▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░▒▒▓░ ▒ ▒▒░▒▒▒▒▒▒▒▒░ ░▒░░░░░░░▒▒▓▒ ▒░ ▒▒▒▒▒▒▒▒▒▒░░▒▒▒░░░░▒▒▒▒▒▒▒░ ▒▒ ▓░▒▒▒▒▒▒▒░░░▒░░░░▒▒▒▒▒▒▓░▒░ ▒▓ ▓░▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▓▒ ▒▓ ▓░▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▓▓▓▓▒ ▒▓ ░▓▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒ ░ ░▒▓ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒ ░ ░░▒ ▒▒▒▒▒▒▒▒▒▒░░▒▒▒░░ ░▓▓▓▓▒░ ░░░░▒ ░▒▒▒▒▒▒▒▒▒▒░░░░░▒▒▒▓▓▓▓░░░░░░▒░ ▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓░░░░░░▒ ▒▓▒▒▒▒▒▒░░▒▓▓▓▓▓▓▓▓▓▓▒░░░░░▒▒ ░▓▓▓▒▒▒▒░░░▒▓▓▓▓▓▓▓▓▒░░░░░▒▓░ ▒▓▓▓▒▒▒▒░░░░▒▓▓▓▓▒░░░░░▒▒▓▒ ▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░▒░ ░▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒░ ▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒ ▒▓▓▓▓▒▒▒▒▒▒▒░░░░░▒▒▒▒ ░▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒░ ░▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒░░ ░░▒▒▒▓▓▓▓▓▓▒▒▒▒░░ ░░▒▒▒▒▒▒▒▒▒░░ Icon (48 x 48): ░▒▒▓▓▓▓▓▒▒░ ░▒▓▓▒░░ ░░▒▓▒░ ▒▓▓▒ ▒▓▓▒ ░▓▓▒░ ░░▒▓░ ▒▓▓▒░ ░░ ░▓▒ ░░ ░▓▓▓▒▒░░ ░▒ ▒▓░ ▒░ ░▓▓▓▒▒░░░░░░ ░░▒░ ░▒▒ ░░░░▓▓▓▓▒▒▒░▒▒▒░ ░░░▒▒░ ▒▒ ▒░▒▒▒▓▒▒▒▒▒▒▒▒░ ░░▒░░▒ ▒▒ ▒▒▒▒░░░░░░▒▒▒▒░ ░░░░░▒▒░ ░ ▒░ ▒▒▒░░▒▒▒░▒▒▒▒▒░ ░░░░░░▒▒ ░▒ ▒░░░▒▒▒▒▒▒▒▒▒▒░ ░░░░░░▒▒ ▒░ ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░ ░░░░▒▓░ ░ ░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ░░░░░░▒▒▒ ░ ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░░░░░░░░░░▒▒▒▒▓ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ ░▒░░░░░░░░░░▒▒▒▒▓░ ░░▒▒▒▒▒▒▒▒▒▒▒▒░░ ▒▒▒░░░░░▒▒▒░░▒▒▒▒▓░ ░ ░░▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒░░░░░░░▒▒▒▒▒▒▒▓▒▒▒░░ ░░ ░░▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒░░░░░░▒▒▒▒▒▒▒▒▒▓▒ ▒ ░░ ░▒░ ░▒▒▒▒▒▒▒▒▒▒░░░░░░▒░░░░░░▒▒▒▒▒▒▒▒▒▒▓▒ ░░ ░▒▒ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓ ░ ░▓▒ ░▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓ ░▓▒ ▒▒▒▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓ ░ ▒▒░ ░▒▒▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓░ ░ ░▒░░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓░ ░░ ░░░░░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒░░░░▒▒▓▓▓▓▓▓▒▒░ ░░░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒░░░░░ ▒▒▓▓▓▓▓▒░░ ░░░░░░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒░▒▓▓▓▓▓▓░░░ ░░░░░░░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▓▓▓▓▓▓▓▓▓░░░░░░░░░▒ ▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░▒░ ░▒▓▒▒▒▒▒▒▒▒▒▒░▒▒▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▒░ ▒▓▓▒▒▒▒▒▒▒░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░▒▒░ ▒▒▓▓▓▒▒▒▒▒▒░░░░░▒▒▓▓▓▓▓▓▓▓▓▓▒▒░░░░░░░░░▒▒ ▒▓▓▓▒▒▒▒▒▒▒░░░░░░▒▓▓▓▓▓▓▓▒░░░░░░░░░░░▒▓░ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▒░░░░░░░░░░░▒▒▒░ ▒▓▓▓▓▒▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒░░░░░░░▒▒░░ ░▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░░░░░░░░ ░▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░ ░▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░ ░▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░ ░▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒░░░░░░░░░▒▒▒▒ ░░▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▒░░ ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▒▒▒░░ ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░ ░░░░▒▒▒▒▒▒▒▒▒▒░░░░░ ░░░░░░░░░░░ _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 23068819 _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1600092 WM_CLIENT_LEADER(WINDOW): window id # 0x1600001 _NET_WM_PID(CARDINAL) = 24976 WM_LOCALE_NAME(STRING) = "lv_LV.utf8" WM_CLIENT_MACHINE(STRING) = "RD-OC" WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified minimum size: 0 by 0 window gravity: NorthWest WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST WM_CLASS(STRING) = "Navigator", "Firefox" WM_ICON_NAME(STRING) = "Issue 13553: Tkinter doesn't set proper application name - Python tracker - Mozilla Firefox" _NET_WM_ICON_NAME(UTF8_STRING) = "Issue 13553: Tkinter doesn't set proper application name - Python tracker - Mozilla Firefox" WM_NAME(STRING) = "Issue 13553: Tkinter doesn't set proper application name - Python tracker - Mozilla Firefox" _NET_WM_NAME(UTF8_STRING) = "Issue 13553: Tkinter doesn't set proper application name - Python tracker - Mozilla Firefox" |
|
|
The resolution of this issue should be to properly document the Tk class. The 3.4 docs currently say: "class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=1) The Tk class is instantiated without arguments. This creates a toplevel widget of Tk which usually is the main window of an application. Each instance has its own associated Tcl interpreter." The signature is incomplete -- see below. The first sentence is wrong; there are arguments, they just all happen to have defaults. The next sentence should be something like "Return a toplevel Tk widget, which is usually the main window of an application." Tk.__doc__ is 'Toplevel widget of Tk which represents mostly the main window\n of an application. It has an associated Tcl interpreter.' This is probably ok. Tk.__init__ signature and Tk,__init__.__doc__ are __init__(self, screenName=None, baseName=None, className='Tk', useTk=1, sync=0, use=None) "Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will be created. BASENAME will be used for the identification of the profile file (see readprofile). It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME is the name of the widget class." "Toplevel" should be "toplevel" as in : Tk is not a subclass of Toplevel. Rather Toplevel is similar to Tk but with the BaseWidget signature. The argument list needs to be completed and perhaps a bit more said about the one documented. Does 'screen' apply to anything other than X11? Could it be used on Windows to put the window on a secondary screen? Is Gnome the only user framework that uses classname? |
|
|