En cours Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Installation, configuration et utilisation des logiciels que vous souhaitez installer.
Avatar du membre
6ril
Messages : 12
Enregistré le : jeu. 4 janv. 2018 14:54
Localisation : Balaruc les bains France

Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par 6ril »

Bonjour à tous et toutes. Je souhaiterais changer quelques lignes de code dans le fichier 'applet.js' de l'applet 'removable-drives@cinnamon.org' de façon à ce que la fenêtre contextuelle qui s'ouvre quand on clique sur l'icône dans le tableau de bord me propose non pas d'ouvrir le dossier personnel mais plutôt le poste de travail, ce qui me paraît être plus pertinent, en tous cas en ce qui me concerne. J'ai bien essayé mais je ne connais pas assez toutes les subtilités du java script et ça ne marche pas... En gros j'ai remplacé les 'homeFile' par 'computerFile' mais sans succès. Est-ce que quelqu'un de la communauté pourrait m'aider? Il ne me semble pas que cela soit tellement difficile pour qui connaît bien ce langage. Je suis sur Linux Mint Cinnamon 19.3 et le fichier se situe dans:

[ /usr/share/cinnamon/applets/removable-drives@cinnamon.org/applet.js ] et à ce qu'il me semble les lignes concernées sont: 57; 58; 59; 60.

Comme vous pouvez l'imaginer je "bidouille" (personnalise) beaucoup mon système et c'est cette grande liberté qui me fait être, entre autres avantages, un inconditionnel de linux et de Mint en particulier.

En vous remerciant chaleureusement, en vous souhaitant bon courage en ces temps vraiment pas très cool et en espérant un été un peu plus festif. On en a vraiment bien besoin! ;)
6ril
System: Kernel: 5.4.0-42-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia Machine: Type: Laptop System: Dell product: Latitude E7440 date: 10/09/2018 CPU: Dual Core: Intel Core i7-4600U type: MT MCP speed: 1189 MHz min/max: 800/3300 MHz Graphics: Device-1: Intel Haswell-ULT Integrated Graphics Info: Processes: 250 Uptime: 1h 32m Memory: 7.68 GiB used: 2.48 GiB (32.2%) Shell: bash inxi: 3.0.32

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par cyrille »

Hi
Hello tu peux poster le contenu de ce fichier ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
6ril
Messages : 12
Enregistré le : jeu. 4 janv. 2018 14:54
Localisation : Balaruc les bains France

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par 6ril »

Hello Cyrille, merci pour ta réponse. Par contre je ne sais pas comment l'envoyer correctement, le voici en texte brut, en le copiant et en l'ouvrant dans Xed, on retrouve l'implémentation (si elle est activée) pour retrouver les lignes concernées 57; 58; 59; 60 :

Code : Tout sélectionner

const Lang = imports.lang;
const St = imports.gi.St;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;

const PANEL_EDIT_MODE_KEY = "panel-edit-mode";

class DriveMenuItem extends PopupMenu.PopupBaseMenuItem {
    constructor(place) {
        super();

        this.place = place;

        this.label = new St.Label({ text: place.name });
        this.addActor(this.label);

        let ejectIcon = new St.Icon({ icon_name: 'media-eject',
                      icon_type: St.IconType.SYMBOLIC,
                      style_class: 'popup-menu-icon ' });
        let ejectButton = new St.Button({ child: ejectIcon });
        ejectButton.connect('clicked', Lang.bind(this, this._eject));
        this.addActor(ejectButton);
    }

    _eject() {
        this.place.remove();
    }

    activate(event) {
        this.place.launch({ timestamp: event.get_time() });
        super.activate(event);
    }
}

class CinnamonRemovableDrivesApplet extends Applet.IconApplet {
    constructor(orientation, panel_height, instance_id) {
        super(orientation, panel_height, instance_id);

        this.set_applet_icon_symbolic_name("drive-harddisk");
        this.set_applet_tooltip(_("Removable drives"));

        global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));

        this.menuManager = new PopupMenu.PopupMenuManager(this);
        this.menu = new Applet.AppletPopupMenu(this, orientation);
        this.menuManager.addMenu(this.menu);

        this._contentSection = new PopupMenu.PopupMenuSection();
        this.menu.addMenuItem(this._contentSection);

        this._update();

        this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
        this.menu.addAction(_("Open file manager"), function(event) {
            let homeFile = Gio.file_new_for_path(GLib.get_home_dir());
            let homeUri = homeFile.get_uri();
            Gio.app_info_launch_default_for_uri(homeUri, null);
        });

        Main.placesManager.connect('mounts-updated', Lang.bind(this, this._update));
        this._onPanelEditModeChanged();
    }

    _onPanelEditModeChanged() {
        if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
            this.actor.show();
        }
        else {
            this._update();
        }
    }

    on_applet_clicked(event) {
        this.menu.toggle();
    }

    _update() {
        this._contentSection.removeAll();

        let mounts = Main.placesManager.getMounts();
        let any = false;
        for (let i = 0; i < mounts.length; i++) {
            if (mounts[i].isRemovable()) {
                this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
                any = true;
            }
        }

        this.actor.visible = any;
    }
}

function main(metadata, orientation, panel_height, instance_id) {
    return new CinnamonRemovableDrivesApplet(orientation, panel_height, instance_id);
}
Modifié en dernier par arghlub le ven. 16 avr. 2021 10:24, modifié 1 fois.
Raison : ajout de balises [code]
System: Kernel: 5.4.0-42-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia Machine: Type: Laptop System: Dell product: Latitude E7440 date: 10/09/2018 CPU: Dual Core: Intel Core i7-4600U type: MT MCP speed: 1189 MHz min/max: 800/3300 MHz Graphics: Device-1: Intel Haswell-ULT Integrated Graphics Info: Processes: 250 Uptime: 1h 32m Memory: 7.68 GiB used: 2.48 GiB (32.2%) Shell: bash inxi: 3.0.32

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par cyrille »

Et comment as tu modifié ce fichier ?
Je n'utilise pas cette application ni cinnamon, mais à mon avis, même si au niveau du code ce n'est pas très propre tu dois avoir moyen de passer le path du répertoire que tu veux ouvrir en absolu
cf
https://developer.gnome.org/gio/stable/ ... w-for-path
https://valadoc.org/glib-2.0/GLib.Envir ... e_dir.html
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par cyrille »

Code : Tout sélectionner

        this.menu.addAction(_("Open file manager"), function(event) {
            let homeFile = Gio.file_new_for_path(GLib.get_home_dir());
            let homeUri = homeFile.get_uri();
            Gio.app_info_launch_default_for_uri(homeUri, null);
        });
Ce qu'il faut mondifier c'est
Gio.file_new_for_path(GLib.get_home_dir());
En adaptant GLib.get_home_dir() par le chemin absolu de la localisation de ton nouveau dossier
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par cyrille »

Essayé

Code : Tout sélectionner

            let homeFile = Gio.file_new_for_path(GLib.get_home_dir());
en tentant de remplacer par

Code : Tout sélectionner

            let homeFile = Gio.file_new_for_path("/home/your/user");
En adaptant à ta conf .
Ensuite, je ne sais pas si les modifications sont instantanées (je dirais oui) ou s'il faut relancer quelque chose
(fais un test avec n'importe quoi et vois s'il génère ou non une erreur, tu en auras le coeur net)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
6ril
Messages : 12
Enregistré le : jeu. 4 janv. 2018 14:54
Localisation : Balaruc les bains France

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par 6ril »

Hi Cyrille, merci beaucoup pour ta réponse. J'ai donc essayé de mettre le chemin absolu comme tu me la proposé, cela ne fonctionne pas et contrairement à ce que moi j'avais tenté c.à.d :

Code : Tout sélectionner

[this.menu.addAction(_("Poste de travail"), function(event) {
            let computerFile = Gio.file_new_for_path(GLib.get_home_dir());
            let computerUri = computerFile.get_uri();
            Gio.app_info_launch_default_for_uri(computerUri, null);]
qui ne fonctionne pas mais qui ne plantait pas l'applet, avec ta solution, j'ai un message d'erreur " Cinnamon n'a pu démarrer certaines applets...etc" Il me parais logique que cela n'est pas du code J.s mais plutôt du bash... À savoir que la commande pour le poste de travail est : ' nemo ou caja (pour la partie gestionnaire de fenêtres) suivit d'un espace et computer:/// ' tout comme la corbeille par exemple ' caja trash:/// ' . Toujours est-il que c'est bien cette unique ligne qui assure l'adressage puisqu'en changeant seulement cette dernière pour l'originale, l'applet re-fonctionne normalement, sauf que quand je clique dans la fenêtre contextuelle sur "Poste de travail" c'est "Dossier personnel" qui s'ouvre !
Pour répondre à ta question comment accèdes-tu à ce fichier?, et bien c'est graphiquement que je procède. J'utilise le terminal (niveau moyen-bon) pour pas mal de choses, mais pour aller dans les fichiers systèmes non, car je suis un visuel et c'est d'ailleurs comme cela que j'ai fait connaissance en autodidacte de l'arborescence des fichiers Linux.
Bon si tu as une autre piste je suis preneur, sinon; tans pis, je laisserais tomber. Je m'étonne juste que tu sois le seul à avoir répondu à ma requête. Merci encore à toi. 6ril
Modifié en dernier par arghlub le sam. 17 avr. 2021 22:00, modifié 1 fois.
Raison : ajout de balises [code]
System: Kernel: 5.4.0-42-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia Machine: Type: Laptop System: Dell product: Latitude E7440 date: 10/09/2018 CPU: Dual Core: Intel Core i7-4600U type: MT MCP speed: 1189 MHz min/max: 800/3300 MHz Graphics: Device-1: Intel Haswell-ULT Integrated Graphics Info: Processes: 250 Uptime: 1h 32m Memory: 7.68 GiB used: 2.48 GiB (32.2%) Shell: bash inxi: 3.0.32

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par arghlub »

Salut 6ril,

Merci de mettre entre balises “Code” tout ce qui concerne du code (Bash, Python, Perl, etc...)
Il faut utiliser ces balises (sélectionner le code et cliquer sur Image lors de la rédaction de ton message) pour tout ce qui concerne le terminal ou de la programmation/dev (commandes, retours de commandes, scripts, etc…), cela améliore grandement la lisibilité.
Voir tuto Barre d'outils des messages.

J'ai modifié 2 de tes précédents messages. Pense-y lors de tes prochains posts. ;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par arghlub »

Re,
Il me semble qu'il y a un souci avec des "brackets" (crochets [ ]) qui ne devrait pas y être (une supposition) ...
Vérifie et redonne-nous ton code intégral.
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
6ril
Messages : 12
Enregistré le : jeu. 4 janv. 2018 14:54
Localisation : Balaruc les bains France

Re: Modifier 'applet.js' de 'removable-drives@cinnamon.org'

Message par 6ril »

Salut Harghlub et merci pour contrib. Les crochets dont tu parles sont ceux que j'ai mis moi-même dans mon message en pensant isoler la partie du code dans mon message. Il ne font pas partie du code lui-même!
Voici donc le fichier original et celui que j'ai modifié (sans les crochets):
contenu de l'applet.js original: (à savoir qu'en ouvrant les codes qui suivent dans Xed (ou autres) avec l'incrémentation activée, les lignes concernées sont 57; 58; 59 et 60)

Code : Tout sélectionner

const Lang = imports.lang;
const St = imports.gi.St;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;

const PANEL_EDIT_MODE_KEY = "panel-edit-mode";

class DriveMenuItem extends PopupMenu.PopupBaseMenuItem {
    constructor(place) {
        super();

        this.place = place;

        this.label = new St.Label({ text: place.name });
        this.addActor(this.label);

        let ejectIcon = new St.Icon({ icon_name: 'media-eject',
                      icon_type: St.IconType.SYMBOLIC,
                      style_class: 'popup-menu-icon ' });
        let ejectButton = new St.Button({ child: ejectIcon });
        ejectButton.connect('clicked', Lang.bind(this, this._eject));
        this.addActor(ejectButton);
    }

    _eject() {
        this.place.remove();
    }

    activate(event) {
        this.place.launch({ timestamp: event.get_time() });
        super.activate(event);
    }
}

class CinnamonRemovableDrivesApplet extends Applet.IconApplet {
    constructor(orientation, panel_height, instance_id) {
        super(orientation, panel_height, instance_id);

        this.set_applet_icon_symbolic_name("drive-harddisk");
        this.set_applet_tooltip(_("Removable drives"));

        global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));

        this.menuManager = new PopupMenu.PopupMenuManager(this);
        this.menu = new Applet.AppletPopupMenu(this, orientation);
        this.menuManager.addMenu(this.menu);

        this._contentSection = new PopupMenu.PopupMenuSection();
        this.menu.addMenuItem(this._contentSection);

        this._update();

        this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
        this.menu.addAction(_("Open file manager"), function(event) {
            let homeFile = Gio.file_new_for_path(GLib.get_home_dir());
            let homeUri = homeFile.get_uri();
            Gio.app_info_launch_default_for_uri(homeUri, null);
        });

        Main.placesManager.connect('mounts-updated', Lang.bind(this, this._update));
        this._onPanelEditModeChanged();
    }

    _onPanelEditModeChanged() {
        if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
            this.actor.show();
        }
        else {
            this._update();
        }
    }

    on_applet_clicked(event) {
        this.menu.toggle();
    }

    _update() {
        this._contentSection.removeAll();

        let mounts = Main.placesManager.getMounts();
        let any = false;
        for (let i = 0; i < mounts.length; i++) {
            if (mounts[i].isRemovable()) {
                this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
                any = true;
            }
        }

        this.actor.visible = any;
    }
}

function main(metadata, orientation, panel_height, instance_id) {
    return new CinnamonRemovableDrivesApplet(orientation, panel_height, instance_id);
}

contenu de l'applet modifié (mais qui ne plante l'applet, mais ne donne pas de résultat:

const Lang = imports.lang;
const St = imports.gi.St;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;

const PANEL_EDIT_MODE_KEY = "panel-edit-mode";

class DriveMenuItem extends PopupMenu.PopupBaseMenuItem {
    constructor(place) {
        super();

        this.place = place;

        this.label = new St.Label({ text: place.name });
        this.addActor(this.label);

        let ejectIcon = new St.Icon({ icon_name: 'media-eject',
                      icon_type: St.IconType.SYMBOLIC,
                      style_class: 'popup-menu-icon ' });
        let ejectButton = new St.Button({ child: ejectIcon });
        ejectButton.connect('clicked', Lang.bind(this, this._eject));
        this.addActor(ejectButton);
    }

    _eject() {
        this.place.remove();
    }

    activate(event) {
        this.place.launch({ timestamp: event.get_time() });
        super.activate(event);
    }
}

class CinnamonRemovableDrivesApplet extends Applet.IconApplet {
    constructor(orientation, panel_height, instance_id) {
        super(orientation, panel_height, instance_id);

        this.set_applet_icon_symbolic_name("drive-harddisk");
        this.set_applet_tooltip(_("Removable drives"));

        global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));

        this.menuManager = new PopupMenu.PopupMenuManager(this);
        this.menu = new Applet.AppletPopupMenu(this, orientation);
        this.menuManager.addMenu(this.menu);

        this._contentSection = new PopupMenu.PopupMenuSection();
        this.menu.addMenuItem(this._contentSection);

        this._update();

        this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
        this.menu.addAction(_("Poste de travail"), function(event) {
            let computerFile = Gio.file_new_for_path(GLib.get_computer_dir());
            let computerUri = computerFile.get_uri();
            Gio.app_info_launch_default_for_uri(computerUri, null);
        });

        Main.placesManager.connect('mounts-updated', Lang.bind(this, this._update));
        this._onPanelEditModeChanged();
    }

    _onPanelEditModeChanged() {
        if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
            this.actor.show();
        }
        else {
            this._update();
        }
    }

    on_applet_clicked(event) {
        this.menu.toggle();
    }

    _update() {
        this._contentSection.removeAll();

        let mounts = Main.placesManager.getMounts();
        let any = false;
        for (let i = 0; i < mounts.length; i++) {
            if (mounts[i].isRemovable()) {
                this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
                any = true;
            }
        }

        this.actor.visible = any;
    }
}

function main(metadata, orientation, panel_height, instance_id) {
    return new CinnamonRemovableDrivesApplet(orientation, panel_height, instance_id);
}
Merci encore, 6ril
Modifié en dernier par thyam le dim. 18 avr. 2021 15:44, modifié 1 fois.
Raison : mis en balise code
System: Kernel: 5.4.0-42-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia Machine: Type: Laptop System: Dell product: Latitude E7440 date: 10/09/2018 CPU: Dual Core: Intel Core i7-4600U type: MT MCP speed: 1189 MHz min/max: 800/3300 MHz Graphics: Device-1: Intel Haswell-ULT Integrated Graphics Info: Processes: 250 Uptime: 1h 32m Memory: 7.68 GiB used: 2.48 GiB (32.2%) Shell: bash inxi: 3.0.32

Répondre