J'aime le menu des indicateurs de Spotify qui s’agrandit chaque fois que l’application est ouverte. Je n'aime pas Rhythmbox qui affiche tous les boutons tout le temps.
J'aimerais masquer les boutons Rew/Play/FF de Rhythmbox lorsque l'application est inactive.
Merci de votre aide.
Indicateur sonore, sans lecteur actif (uniquement pour les lanceurs, sans boutons de commande)
Indicateur sonore, avec lecteur actif (boutons de commande complets)
Avoir les mêmes étapes de construction que 14.04.
Retirer le lecteur du menu après la fermeture
Modifiez le menu src/service.vala
pour desktop
en HIDE_INACTIVE_PLAYERS.
this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE|SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS));
Et modifiez src/sound-menu.vala
pour que la fonction add_player supprime remove_player_section si elle n’est pas en cours d’exécution et que le masquage inactif est défini.
public void add_player (MediaPlayer player) {
if (this.notify_handlers.contains (player))
return;
if (player.is_running || !this.hide_inactive)
this.insert_player_section (player);
else
this.remove_player_section (player);
this.update_playlists (player);
Masquer les commandes du lecteur (Prev/Play/Next) du menu après la fermeture, ne garder que son lanceur
Identique à 14.04, pas de changement.
Télécharger les dépendances de construction et le source
Sudo apt-get build-dep indicator-sound
apt-get source indicator-sound
Choisissez le comportement que vous voulez:
Retirer le lecteur du menu après la fermeture
Modifiez src/service.vala
pour le menu desktop
.
this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS));
J'ai ajouté | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS
, Vous pouvez supprimer SoundMenu.DisplayFlags.SHOW_MUTE |
si vous souhaitez masquer le contrôle du volume avec des lecteurs en mode sourdine.
Masquer les commandes du lecteur (Prev/Play/Next) du menu après la fermeture, ne garder que son lanceur
Modifier src/sound-menu.vala
Ajouter un nouvel indicateur HIDE_INACTIVE_PLAYERS_CONTROLS = 128
avec ,
à la fin de la ligne précédente.
public enum DisplayFlags {
NONE = 0,
SHOW_MUTE = 1,
HIDE_INACTIVE_PLAYERS = 2,
HIDE_PLAYERS = 4,
HIDE_INACTIVE_PLAYERS_CONTROLS = 128
}
Ajouter la variable bool hide_inactive_controls;
pour conserver le statut de l'indicateur
bool hide_inactive;
bool hide_inactive_controls;
bool hide_players = false;
Ajouter la ligne this.hide_inactive_controls =...
. passer le paramètre indicateur de constructeur SoundMenu à sa variable.
this.hide_inactive = (flags & DisplayFlags.HIDE_INACTIVE_PLAYERS) != 0;
this.hide_inactive_controls = (flags & DisplayFlags.HIDE_INACTIVE_PLAYERS_CONTROLS) != 0;
this.notify_handlers = new HashTable<MediaPlayer, ulong> (direct_hash, direct_equal);
Ajoutez if (player.is_running || !this.hide_inactive_controls) {
et }
. pour envelopper les instructions qui créent (prev/play/next) dans un élément de menu. Ainsi, ils ne sont pas créés uniquement si le joueur est en cours d’exécution ou si le drapeau est inactif.
if (player.is_running || !this.hide_inactive_controls) {
var playback_item = new MenuItem (null, null);
playback_item.set_attribute ("x-canonical-type", "s", "com.canonical.unity.playback-item");
playback_item.set_attribute ("x-canonical-play-action", "s", "indicator.play." + player.id);
playback_item.set_attribute ("x-canonical-next-action", "s", "indicator.next." + player.id);
playback_item.set_attribute ("x-canonical-previous-action", "s", "indicator.previous." + player.id);
section.append_item (playback_item);
}
Ajoutez if (this.hide_inactive_controls) {
au prochain }
. Pour forcer la récréation de la section du menu du lecteur lorsque le joueur is-running
change de statut.
var handler_id = player.notify["is-running"].connect ( () => {
if (this.hide_inactive) {
if (player.is_running) {
this.insert_player_section (player);
}
else {
this.remove_player_section (player);
}
}
if (this.hide_inactive_controls) {
this.remove_player_section (player);
this.insert_player_section (player);
}
this.update_playlists (player);
});
Enfin, modifiez src/service.vala
. Ajoutez notre nouveau drapeau créé | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS_CONTROLS
au menu desktop
.
this.menus.insert ("desktop", new SoundMenu ("indicator.desktop-settings", SoundMenu.DisplayFlags.SHOW_MUTE | SoundMenu.DisplayFlags.HIDE_INACTIVE_PLAYERS_CONTROLS));
Construire et installer
cd indicator-sound-12.10.2+14.04.20140313/
mkdir build
cd build/
cmake ..
make
Sudo make install
Maintenant, les joueurs vont disparaître après les avoir fermés.
Télécharger les dépendances de construction et le source
Sudo apt-get build-dep indicator-sound
apt-get source indicator-sound
Modifiez src/player-controller.vala
, remplacez "rhythmbox.desktop"
par "xrhythmbox.desktop"
dans les deux occurrences. (juste un nom différent)
Construire et installer
cd indicator-sound-0.8.5.0/
./configure
make
make install
Remarque: C'était une astuce, la bonne façon peut être:
Remplacer
this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE,
this.app_info.get_id() == "rhythmbox.desktop");
avec
this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE,
false);
et
if (this.app_info.get_id() == "rhythmbox.desktop"){
TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem;
transport.handle_cached_action();
}
else{
this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE,
true);
}
avec
this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE,
true);