Forum Linux.général Xfce panel

1
21
fév.
2017

Bonjour à tous,

J'utilise XFCE4 sur mon bureau et je ne rencontre pas de souci particulier, sauf que …
Sur mon tableau de bord je regroupe les applications, par exemple mes sessions ssh apparaissent toutes regroupées sous une seule icône dans la barre, seulement elles sont classées par ordre d'ouverture donc quand j'ai cinquante sessions ouvertes ça devient n’importe quoi.

Il y a moyen de classer par ordre alphabétique ? J'ai bien classer par nom dans "Boutons des fenêtres" mais ça ne classe que les groupes entre eux dans la barre mais pas leur contenu.

J'imagine que c'est possible, mais je n'arrive pas à trouver et c'était par défaut sur mon bureau gnome.
Du coup pour mon usage xfce est difficilement utilisable

  • # On dirait que non. )-:

    Posté par . Évalué à 3. Dernière modification le 21/02/17 à 15:44.

    Ça fait un moment que j’utilise xfce mais n’ai jamais groupé les fenêtres, préférant utiliser différents bureaux à la place, mais ton soucis m’a interpellé.
    Si trier dans la barre des tâches est facile, il ne semble pas possible de le faire dans les boutons regroupés, et la config du panel ne m’avance pas plus une fois tout testé, de même que sa configuration (~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml chez moi).

    Après un rapide coup d’œil sur le dépot xfce, il n’y a pas d’option spécifique pour ça.
    De plus, je n’ai rien vu semblant indiquer qu’une fonction classe les boutons groupés autrement que par leur id d’arrivée.

    Je me trompe peut-être, ne m’étant pas tapé toute la source en détail, m’enfin pour moi ce n’est pour le moment pas possible. )-:

    static void
    tasklist_plugin_construct (XfcePanelPlugin *panel_plugin)
    {
      TasklistPlugin      *plugin = XFCE_TASKLIST_PLUGIN (panel_plugin);
      const PanelProperty  properties[] =
      {
        { "show-labels", G_TYPE_BOOLEAN },
        { "grouping", G_TYPE_UINT },
        { "include-all-workspaces", G_TYPE_BOOLEAN },
        { "include-all-monitors", G_TYPE_BOOLEAN },
        { "flat-buttons", G_TYPE_BOOLEAN },
        { "switch-workspace-on-unminimize", G_TYPE_BOOLEAN },
        { "show-only-minimized", G_TYPE_BOOLEAN },
        { "show-wireframes", G_TYPE_BOOLEAN },
        { "show-handle", G_TYPE_BOOLEAN },
        { "sort-order", G_TYPE_UINT },
        { "window-scrolling", G_TYPE_BOOLEAN },
        { "wrap-windows", G_TYPE_BOOLEAN },
        { "include-all-blinking", G_TYPE_BOOLEAN },
        { "middle-click", G_TYPE_UINT },
        { NULL }
      };
    
    static void               xfce_tasklist_sort                             (XfceTasklist         *tasklist);
    
    /* tasklist group buttons */
    static void               xfce_tasklist_group_button_remove              (XfceTasklistChild    *group_child);
    static void               xfce_tasklist_group_button_add_window          (XfceTasklistChild    *group_child,
                                                                              XfceTasklistChild    *window_child);
    static XfceTasklistChild *xfce_tasklist_group_button_new                 (WnckClassGroup       *class_group,
                                                                              XfceTasklist         *tasklist);

    https://git.xfce.org/xfce/xfce4-panel/tree/plugins/tasklist/tasklist-widget.c

    • [^] # Le code reste à écrire, send a patch?

      Posté par (page perso) . Évalué à 3.

      En regardant rapidement le code, on s'aperçoit qu'il y a une itération qui est faite à plusieurs endroits sur la propriété windows :

        for (li = tasklist->windows; li != NULL; li = li->next)

      et variantes. Du coup, on parcourt une liste chaînée, sans tri. On pourrait trier sur place, mais il y a plusieurs telles boucles, donc autant trier lors de l'ajout dans la liste, non ? (Un retrait ne peut pas perturber une liste déjà triée.)

      Ça semble se passer dans xfce_tasklist_group_button_add_window() :

        /* add to internal list */
        group_child->windows = g_slist_prepend (group_child->windows, window_child);

      or un coup d'œil rapide côté GLib suggère l'utilisation de g_slist_insert_sorted() existe… J'ai l'impression qu'il te reste à utiliser la bonne fonction de comparaison pour avoir le résultat voulu plutôt que le résultat actuel, à savoir l'ajout en début de liste via g_slist_prepend().

      Ensuite, il te restera à proposer ça upstream. Reste à voir si cela vaut le coup de proposer une option XFCE_TASKLIST_GROUPING_ALWAYS_WITH_SORTING_ENABLED_INSIDE_EACH_GROUP (avec un meilleur nom) pour que XFCE_TASKLIST_GROUPING_ALWAYS garde le comportement actuel. Je présume que trier par défaut est un comportement plutôt sain, mais il y a peut-être des gens qui sont habitués à avoir la dernière fenêtre ajoutée en début de menu… #JeNeSuisPasUpstream ;-)

      Debian Consultant @ DEBAMAX

      • [^] # Re: Le code reste à écrire, send a patch?

        Posté par (page perso) . Évalué à 3.

        J'ai regardé ce que ça donne, et mon idée initiale est disponible ici : 0001-tasklist-Sort-grouped-windows-upon-insertion.patch

        Et bien évidemment, il y a une petite blague, à savoir les mises à jour de titre d'application, spécifiquement pour les terminaux… Il faudrait donc pouvoir détecter les changements de titre d'une part, mais aussi probablement réagencer les objets GTK déjà créés, en plus de maintenir la liste triée à jour. Donc il reste un peu de boulot. ;) Mais preuve de concept minimale validée avec evince et quelques devis (YYYY-NNNN) ouverts dans un ordre quelconque : le tri est bien effectué en fonction du titre initial.

        Debian Consultant @ DEBAMAX

  • # Dommage

    Posté par (page perso) . Évalué à 1.

    Merci les gars très intéressants, ce qui est fou c'est que c'est par défaut sous gnome ou Kde.
    Votre retour correspond à mes recherches il n'y a pas de menus permettant de choisir (je comprends parfaitement que ce ne soit pas le choix par défaut)

    Tant pis je vais changer de bureau, dommage j'aimais bien mais là franchement, pour moi, c'est inutilisable

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.