1. 05 Aug, 2020 1 commit
  2. 13 Jun, 2020 1 commit
  3. 27 Apr, 2020 1 commit
  4. 17 Apr, 2020 1 commit
  5. 19 Mar, 2020 1 commit
  6. 24 Jun, 2019 1 commit
  7. 18 Dec, 2018 1 commit
    • Eike Hein's avatar
      Implement support for virtual desktops on Wayland · 52d760c5
      Eike Hein authored
      Summary:
      Includes, among other things:
      * A refactoring towards supporting more than one desktop per window,
        for an eventual virtual desktops / activities merge
      * A scheme for process-internal window ids on Wayland as DND payload
        so DND in and to the Pager works in the shell
      * Implemented various previously missing behavior in WaylandTasksModel
        such as implicit moves of windows to the current desktop on various
        actions
      * Expanded VirtualDesktopInfo API so the Pager can better abstract
        over windowing systems
      * Implicit internal sharing of VirtualDesktopInfo since there are many
        more instances now
      * Various cleanups
      
      Still missing:
      * Fixing the VirtualDesktops data role in the grouping proxy
      * The protocol doesn't have desktop creation/destruction yet, so some
        of the related logic is still missing
      * Some FIXME TODOs in the code when I was unhappy with the current
        KWayland API
      
      This code is largely untested and subject to change.
      
      Depends on D12820 and relates to T4457.
      
      Reviewers: mart, mvourlakos, davidedmundson
      
      Reviewed By: davidedmundson
      
      Subscribers: alexde, anthonyfieroni, zzag, ngraham, abetts, plasma-devel
      
      Tags: #plasma
      
      Maniphest Tasks: T4457
      
      Differential Revision: https://phabricator.kde.org/D13745
      52d760c5
  8. 12 Sep, 2018 1 commit
    • Eike Hein's avatar
      Handle clients which change window metadata during early startup · b15eaf38
      Eike Hein authored
      Summary:
      Some apps initially show their window with bogus/useless window
      metadata and then update to useful metadata during early startup.
      For example, LibreOffice sets WM_CLASS to soffice/Soffice and
      then updates to libreoffice-writer/libreoffice. This leads to
      a poor user experience on particular the Icons-only Task Manager,
      but also the regular Task Manager depending on settings.
      
      Depending on its configuration (and Icons-only Task Manager is
      a particular set of configuration options, as far as the model
      is concerned), TasksModel will try to sort a new window task
      adjacent to its launcher task. The appearance of a new window
      task also causes matching (in terms of identification) launcher
      or startup tasks to be filtered out. To the user, this forms a
      lifecycle of the launcher being replaced by the window in-place
      (and a startup state inbetween, optionally but by default).
      
      Prior to this patch, this sorting decision was only done once,
      when a new window enters the source model stack. This meant the
      LibreOffice window would initially be sorted into the "wrong"
      spot (the bogus metadata doesn't allow us to relate it to its
      launcher) and then, following the metadata change, stick to the
      wrong position.
      
      Simply changing the code to sort things again on any metadata
      change would not have been good enough: Metadata changes can
      occur at any time, and things should not just move around on
      the user - this sort mode is called "Manual" for a reason. Also,
      the visual result would still be poor: The window would initially
      appear at the wrong position, then move to the right one a bit
      later.
      
      This patch takes the following approach:
      * It adds a new config key to taskmanagerrulesrc for listing
        ids of matching tasks to completely hide, and of course the
        code needed to implement this.
      * It adds LibreOffice' bogus initial metadata to this key, so
        the tasks is initially hidden.
      * The sort code skips over hidden window tasks in the sort
        insert queue instead of moving them. The queue is marked as
        stale then, and cleared on unrelated windowing system changes.
      * It resorts when tasks are unhidden (i.e. once the metadata
        update has occured and the task no longer matches the above
        config key).
      
      The visual result is that the startup notification on the
      launcher spins a little bit longer than before, even though the
      window has already appeared (although LO lags in filling in its
      contents anyway), and then morphs into the window task
      representation once the client has completed the window metadata
      change. This happens in such a short order as to be more or less
      imperceptible.
      
      If startup notifications are turned off it's broadly the same,
      minus the spinning.
      
      BUG:396871
      
      Reviewers: davidedmundson, broulik, ngraham
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D15410
      b15eaf38
  9. 04 Feb, 2018 1 commit
  10. 23 Jun, 2017 1 commit
  11. 24 May, 2017 1 commit
    • Marco Martin's avatar
      wire up requestToggleKeepAbove/below · 2cdd97c6
      Marco Martin authored
      Summary: cobbect requestToggleKeepAbove and below with libtaskmanager
      
      Test Plan: setting keep above from taskbar works
      
      Reviewers: #plasma, hein, graesslin, #plasma_on_wayland
      
      Reviewed By: #plasma, hein, graesslin
      
      Subscribers: graesslin, plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D5758
      2cdd97c6
  12. 23 May, 2017 1 commit
  13. 16 May, 2017 1 commit
  14. 13 May, 2017 2 commits
    • Eike Hein's avatar
      Lift app identification heuristic out of XWindowTasksModel and share it with WaylandTasksModel. · a87f619a
      Eike Hein authored
      Summary:
      This factors the app identification heuristic out of XWindowTasksModel
      and turns it into generic code in TaskTools, producing a URL from a set
      of window metadata bits. The key metadata is the 'appId', which is the
      classClass part of WM_CLASS on X11 and PlasmaWindow::appId on Wayland -
      which KWin sets to the former for XWayland clients. The result is much
      improved support for XWayland clients in the Wayland session, with most
      X clients now identified correctly.
      
      As a side effect, the Wayland model gains access to the X model's much
      superior code for grabbing a suitable icon, with PlasmaWindow::icon now
      serving only as a fallback, similar to KWindowSystem::icon in the X
      model.
      
      Moving the code to TaskTools also means it now sports nice API docs.
      
      The heuristic has seen some work as well, namely adding two passes that
      try to parse the appId as a path to a desktop file, which we've never
      seen on X11 but is common on Wayland - this heuristic was previously in
      appDataFromAppId, which has been removed here since the shared heuristic
      now satisfies this case.
      
      Further, an old codepath handling kcmshell in a special way has been
      removed. This is no longer necessary as we have better ways to tell
      libtaskmanager about the KCM KService now, such as the .desktop file
      window hint on X11 and a reliable appId on Wayland.
      
      This patch also fixes some bugs around app data cache eviction and
      telling model clients about data changes when cache eviction happens.
      The X model didn't use to evict the cache and refresh when the
      taskmanagerrulesrc file was changed at runtime, and the refresh for
      sycoca changes didn't refresh the LauncherUrlWithoutIcon role. It does
      now, and the Wayland model - which has gained taskmanagerrulesrc support
      by way of the shared heuristic - now behaves in the same way.
      
      The combined changes achieve near behavior parity between the X
      and Wayland models when it comes to identifying apps by window meta
      data, with the only exception being XWayland clients that need to be
      identified by the (incorrectly used by the client developer) instance
      name part of the WM_CLASS window property, which we can't access (this
      case is so rare it's not worth handling at this time).
      
      Depends on D5747, D5755.
      
      Reviewers: #plasma, davidedmundson
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D5818
      a87f619a
    • Eike Hein's avatar
      Expose PlasmaWindow::pid through WaylandTasksModel. · 140c65f2
      Eike Hein authored
      Summary: Depends on D5747.
      
      Reviewers: #plasma, davidedmundson, sebas
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D5755
      140c65f2
  15. 09 Dec, 2016 1 commit
    • Eike Hein's avatar
      Refresh the ScreenGeometry data role whenever a screen is added or changes its geometry. · 0b0d1463
      Eike Hein authored
      Summary:
      As this happens the screen filtering higher up in the proxy chain
      culimating in TasksModel needs to be re-executed, as it compares
      ScreenGeometry against a property value set on the model. Without
      this update, tasks may disappear from views using TasksModel.
      
      Mapping the trigger conditions to affected rows is deliberately
      maximally coarse; see implementation comment in code.
      
      BUG:373075
      
      Reviewers: #plasma, davidedmundson
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D3628
      0b0d1463
  16. 14 Nov, 2016 1 commit
  17. 08 Nov, 2016 1 commit
    • Eike Hein's avatar
      Revamp Wayland application identification; align Wayland and X11 models · 273631af
      Eike Hein authored
      Summary:
      This adds support for app ids which are absolute paths to .desktop
      files to WaylandTasksModel, matching the heuristic in XWindowsTasksModel.
      
      Behavior between the two models is made more similar in various ways,
      such as matching codepaths for generating the ids inserted into the
      KActivities database in requestNewInstance/requestOpenUrls (also the
      X11 model was missing the notifyAccessed calls) and producing launcher
      URLs.
      
      Icons are still left to KWin however, instead of reading them from
      KService (which is what KWin does in any case on Wayland) or from the
      .desktop file. The latter might make sense, but to avoid duplicated
      code would then best be done in KWin.
      
      Reviewers: #plasma, graesslin, broulik
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D3292
      273631af
  18. 23 Sep, 2016 1 commit
  19. 06 Sep, 2016 1 commit
  20. 12 Aug, 2016 2 commits
  21. 04 Aug, 2016 1 commit
  22. 29 Jul, 2016 1 commit
  23. 12 Jul, 2016 2 commits
  24. 21 Jun, 2016 1 commit
  25. 17 Jun, 2016 2 commits
    • Eike Hein's avatar
      Add a LauncherUrlWithoutIcon data role as a speed optimization. · 7eff45a9
      Eike Hein authored
      Summary:
      Makes the API more complex, but it's worth it as it allows
      knowledgable users to opt into avoding costly work and/or
      data copies in very common use cases.
      
      Significantly speeds up a lot of work in the models in the
      presence of X apps that can't be identified and fall back to
      the window icon.
      
      Based on profiling by David.
      
      Reviewers: dfaure, davidedmundson
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D1920
      7eff45a9
    • Eike Hein's avatar
      Add a LauncherUrlWithoutIcon data role as a speed optimization. · d0f4c452
      Eike Hein authored
      Summary:
      Makes the API more complex, but it's worth it as it allows
      knowledgable users to opt into avoding costly work and/or
      data copies in very common use cases.
      
      Significantly speeds up a lot of work in the models in the
      presence of X apps that can't be identified and fall back to
      the window icon.
      
      Based on profiling by David.
      
      Reviewers: dfaure, davidedmundson
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D1920
      d0f4c452
  26. 06 Jun, 2016 2 commits