Opened 7 years ago
Last modified 4 days ago
#508 assigned enhancement
MS Windows taskbar integration
Reported by: | Antoine Martin | Owned by: | Antoine Martin |
---|---|---|---|
Priority: | major | Milestone: | 5.0 |
Component: | platforms | Version: | |
Keywords: | win32 taskbar | Cc: |
Description (last modified by )
Windows 7 onwards support customization of the taskbar entry for our application, we could do something with it:
- simply add the most common tray menu options there (since the tray is now also hidden by default..)
- use it for forwarding application menus if it has some (see #228 for Ubuntu's global menu)
Pointers:
- ICustomDestinationList AddUserTasks Specifies items to include in the Tasks category of a custom Jump List.
- Taskbar Extensions : Tasks Another built-in portion of a Jump List is the Tasks category..
See also #472
Attachments (1)
Change History (10)
comment:1 Changed 7 years ago by
Description: | modified (diff) |
---|---|
Owner: | changed from Antoine Martin to Antoine Martin |
Status: | new → assigned |
comment:2 Changed 6 years ago by
Milestone: | future → 0.15 |
---|
comment:4 Changed 5 years ago by
Best example code found so far:
- Using Windows 7 taskbar features in PyQt
- wxPython and windows 7 taskbar (implementation for the link above)
- taskbar support for scummvm (win32 and unity) (only used for showing progress bar and recent items?)
comment:5 Changed 5 years ago by
The examples in comment:4 work but this is not the interface we need. We could still use them to enhance the tray/menu classes with progress bar support, etc.
- make the tlb:
midl TaskbarLib.idl /tlb TaskbarLib.tlb
- use it with GTK: (requires comtypes)
import gtk window = gtk.Window() window.show() import comtypes.client as cc cc.GetModule("TaskbarLib.tlb") import comtypes.gen.TaskbarLib as tbl taskbar = cc.CreateObject("{56FDF344-FD6D-11d0-958A-006097C9A090}", interface=tbl.ITaskbarList3) taskbar.HrInit() taskbar.SetProgressValue(window.get_window().handle,40,100)
For the menus, what we want is Tasks and more specifically: AddUserTasks.
There is some support for it in pywin32 already:
> from win32com.shell import shell > shell.CLSID_DestinationList IID('{77F10CF0-3DB5-4966-B520-B7C54FD35ED6}')
comment:6 Changed 5 years ago by
Milestone: | 0.16 → future |
---|
By the looks of things, "tasks" is not it: present even when the application is not running. Maybe Jump Lists?
But even that is not a good fit...
The only workable solutions that I can think of are:
- Custom Window Frame Using DWM. (see Setting up a custom title bar on Vista/Windows 7 and Setting up a custom title bar – reprise)
- reserve some space at the top of the window for a regular gtk menu
Both of which would have all sorts of interesting interactions with window hints, size constraints, events, position...
Unrelated:
- along the way, found this useful com example: Accessing unregistered COM objects from python via a registered TLB.
- I can create "shell items" with:
import pythoncom pythoncom.CoCreateInstance(shell.CLSID_ShellItem, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellItem)
comment:7 Changed 3 years ago by
Milestone: | future → 4.0 |
---|
comment:9 Changed 4 days ago by
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/508
Scheduling for this release, together with #472 and #476.