Je ne parviens pas à trouver un utilitaire approprié pour simplement indiquer l'utilisation du système de fichiers (% d'espace disponible pour les partitions) sur le panneau.
Et je ne suis pas impatient d'installer n'importe quel mauvais outil de gestion de bureau, mais un simple indicateur.
J'apprécie toutes vos suggestions.
Bien que la réponse au bas de celle-ci puisse être utilisée (voir [2.]
]), elle conduit à une version ppa
avec des options supplémentaires, à définir dans une fenêtre de préférences.
Les options comprennent:
Définition des couleurs de thème pour l’icône de panneau:
Afficher les informations sur les volumes nouvellement montés/connectés dans une notification:
Exécuter au démarrage
De plus, l'indicateur inclut désormais un jeu d'icônes plus petit (largeur) pour les autres distributions (comme xfce), qui sera automatiquement appliqué en fonction du gestionnaire de fenêtres.
À installer:
Sudo add-apt-repository ppa:vlijm/spaceview
Sudo apt-get update
Sudo apt-get install spaceview
Le script ci-dessous est un indicateur qui répertorie vos périphériques et indique leur utilisation. Les informations sont mises à jour (si nécessaire) toutes les dix secondes.
En outre
Pendant que l'indicateur est en cours d'exécution, vous pouvez choisir un périphérique à représenter dans l'icône. L'appareil sera mémorisé lors de la prochaine utilisation de l'indicateur:
Pour un ou plusieurs périphériques (ou tous), vous pouvez définir un autre nom ("nom personnalisé"), à définir dans l'en-tête du script.
A titre d'exemple, ceci:
alias = [
["sdc1", "stick"],
["sdb1", "External"],
["sda2", "root"],
["sda4", "ntfs1"],
["sda5", "ntfs2"],
["//192.168.0.104/media", "netwerk media"],
["//192.168.0.104/werkmap_documenten", "netwerk docs"],
]
Montrera:
Vous pouvez définir un threshhold ; Si l'espace libre de l'un de vos appareils est inférieur à cette valeur, vous recevrez un avertissement:
Les appareils branchés/débranchés seront ajoutés/retirés du menu dans les 10 secondes.
#!/usr/bin/env python3
import subprocess
import os
import time
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3, GObject
from threading import Thread
#--- set alias names below in the format [[device1, alias1], [device2, alias2]]
#--- just set alias = [] to have no custom naming
alias = []
#--- set the threshold to show a warning below
#--- set to 0 to have no warning
threshold = 17
#---
currpath = os.path.dirname(os.path.realpath(__file__))
prefsfile = os.path.join(currpath, "showpreferred")
class ShowDevs():
def __init__(self):
self.default_dev = self.get_showfromfile()
self.app = 'show_dev'
iconpath = currpath+"/0.png"
self.indicator = AppIndicator3.Indicator.new(
self.app, iconpath,
AppIndicator3.IndicatorCategory.OTHER)
self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
self.indicator.set_menu(self.create_menu())
self.indicator.set_label("Starting up...", self.app)
self.update = Thread(target=self.check_changes)
self.update.setDaemon(True)
self.update.start()
def check_changes(self):
state1 = None
while True:
self.state2 = self.read_devices()
if self.state2 != state1:
self.update_interface(self.state2)
state1 = self.state2
time.sleep(10)
def update_interface(self, state):
warning = False; self.newmenu = []
for dev in state:
mention = self.create_mention(dev)
name = mention[0]; deci = mention[2]; n = mention[1]
if n <= threshold:
warning = True
try:
if self.default_dev in name:
newlabel = mention[3]
newicon = currpath+"/"+str(10-deci)+".png"
except TypeError:
pass
self.newmenu.append(name+" "+str(n)+"% free")
if warning:
newlabel = "Check your disks!"
newicon = currpath+"/10.png"
try:
self.update_indicator(newlabel, newicon)
except UnboundLocalError:
labeldata = self.create_mention(state[0])
newlabel = labeldata[3]
newicon = currpath+"/"+str(10-labeldata[2])+".png"
self.update_indicator(newlabel, newicon)
GObject.idle_add(self.set_new,
priority=GObject.PRIORITY_DEFAULT)
def update_indicator(self, newlabel, newicon):
GObject.idle_add(self.indicator.set_label,
newlabel, self.app,
priority=GObject.PRIORITY_DEFAULT)
GObject.idle_add(self.indicator.set_icon,
newicon,
priority=GObject.PRIORITY_DEFAULT)
def set_new(self):
for i in self.initmenu.get_children():
self.initmenu.remove(i)
for item in self.newmenu:
add = Gtk.MenuItem(item)
add.connect('activate', self.change_show)
self.initmenu.append(add)
menu_sep = Gtk.SeparatorMenuItem()
self.initmenu.append(menu_sep)
self.item_quit = Gtk.MenuItem('Quit')
self.item_quit.connect('activate', self.stop)
self.initmenu.append(self.item_quit)
self.initmenu.show_all()
def change_show(self, *args):
index = self.initmenu.get_children().index(self.initmenu.get_active())
self.default_dev = self.newmenu[index].split()[0]
open(prefsfile, "wt").write(self.default_dev)
self.update_interface(self.read_devices())
def create_mention(self, dev):
name = dev[1] if dev[1] else dev[0]
n = dev[2]; deci = round(dev[2]/10)
newlabel = name+" "+str(n)+"% free"
return (name, n, deci, newlabel)
def create_menu(self):
# create initial basic menu
self.initmenu = Gtk.Menu()
self.item_quit = Gtk.MenuItem('Quit')
self.item_quit.connect('activate', self.stop)
self.initmenu.append(self.item_quit)
self.initmenu.show_all()
return self.initmenu
def read_devices(self):
# read the devices, look up their alias and the free sapace
devdata = []
data = subprocess.check_output(["df", "-h"]).decode("utf-8").splitlines()
relevant = [l for l in data if all([
any([l.startswith("/dev/"), l.startswith("//")]),
not "/loop" in l])
]
for dev in relevant:
data = dev.split(); name = data[0]; pseudo = None
free = 100-int([s.strip("%") for s in data if "%" in s][0])
for al in alias:
if al[0] in name:
pseudo = al[1]
break
devdata.append((name, pseudo, free))
return devdata
def get_showfromfile(self):
# read the preferred default device from file
try:
defdev = open(prefsfile).read().strip()
except FileNotFoundError:
defdev = None
return defdev
def stop(self, source):
Gtk.main_quit()
ShowDevs()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()
La mise en place est simple:
showusage.py
Dans la section de tête du script, définissez (plusieurs) noms alternatifs possibles (aliasses
). Ci-dessous un exemple:
alias = [
["sda2", "root"],
["sdb1", "External"]
]
Si vous souhaitez afficher les périphériques sans modification, utilisez:
alias = []
... et si vous le souhaitez, modifiez le seuil pour afficher un avertissement:
#--- set the threshold to show a warning below (% free, in steps of 10%)
#--- set to 0 to have no warning
threshold = 10
C'est tout
Pour utiliser l'indicateur, exécutez la commande:
python3 /path/to/showusage.py
Pour l'ajouter aux applications de démarrage, utilisez la commande:
/bin/bash -c "sleep 10 && python3 /path/to/showusage.py"
Choisissez Applications: Dash> Applications de démarrage> Ajouter, ajoutez la commande ci-dessus.
disclaimer: je suis l'auteur de cet indicateur et il est écrit pour cette question spécifique
L'indicateur prend désormais en charge liste des partages résea . Merci à mihaigalos
L'indicateur a maintenant une fonctionnalité de démontage et les alias ont été rendus uniques en faisant référence à l'UUID de chaque partition au lieu du nom de périphérique en bloc, tel que sda1
. Voir le rapport de bug lié
L'indicateur est maintenant dans la version 2.0, a ajouté quelques fonctionnalités et possède son propre PPA.
Pour installer à partir de PPA, utilisez les étapes suivantes dans le terminal:
Sudo apt-add-repository ppa:udisks-indicator-team/ppa
Sudo bash -c 'apt-get update && apt-get install udisks-indicator'
Comme mentionné dans le notes de version , les fonctionnalités incluent:
Ci-dessous, la capture d'écran avec le thème d'icônes Ubuntu par défaut:
Thème d'icônes Ubuntu Kylin
Avec tous les champs optionnels désactivés
En élaborant cet indicateur, j’espérais obtenir un utilitaire qui conviendrait à la fois aux utilisateurs avancés et occasionnels. J'ai essayé de résoudre certains des problèmes que j'ai remarqués des nouveaux utilisateurs avec le traitement des outils en ligne de commande. En outre, l'utilitaire s'efforce d'être polyvalent.
La boîte de dialogue Préférences permet de rendre l'indicateur aussi complexe et/ou aussi simple que l'utilisateur le souhaite. Éviter d’avoir une étiquette sur le panneau supérieur afin de ne pas occuper trop d’espace sur le panneau supérieur était également une décision de conception particulière. En outre, cet indicateur vise à être un utilitaire polyvalent permettant de monter des partitions et d'ouvrir leurs répertoires respectifs. Ceci peut être utilisé non seulement comme utilitaire d’utilisation du disque, mais aussi comme utilitaire de navigation pour une ouverture rapide des répertoires.
Il est également pratique pour les utilisateurs de savoir quelle partition habite sur quel disque, évitant ainsi une confusion fréquente avec le montage via des utilitaires de ligne de commande tels que mount
. À la place, il utilise udisksctl
à cette fin (en plus d'obtenir les informations du démon UDisks2
, d'où le nommage). La seule tâche qu'il n'effectue pas est le démontage. C'est pourquoi l'entrée de menu Open Disks Utility
est incluse.
Alors qu'au départ je m'efforçais de le rendre similaire à iStat menulet, le projet s'écartait de cet objectif - l'indicateur est unique par sa conception et son objectif. J'espère que cela sera utile pour de nombreux utilisateurs et rendra leur expérience Ubuntu bien plus agréable.
Indicateur pour Ubuntu avec le bureau Unity pour montrer l’utilisation du disque
Cet indicateur pour Ubuntu avec Unity permet de visualiser facilement des informations sur vos partitions montées. Son objectif visuel est celui du menu iStat Menu 3 d’OS X.
Les entrées sont organisées dans l'ordre:
En cliquant sur chaque entrée de partition, vous ouvrez le point de montage de la partition dans le gestionnaire de fichiers par défaut.
Le menu "Partitions non montées" répertorie toutes les partitions non actuellement montées par le système. En cliquant sur une entrée de ce sous-menu, cette partition sera montée automatiquement, généralement dans le dossier /media/username/drive-id
L'indicateur utilise les icônes par défaut fournies avec le système. L'icône doit donc changer lorsque vous changez de thème d'icône à l'aide de Unity Tweak Tool ou d'autres méthodes.
NOTE: si vous souhaitez ajouter plusieurs alias en même temps, au lieu d'un par un via l'option "Créer un alias", vous pouvez le faire en modifiant le fichier de configuration ~/.partition_aliases.json
. Le format est le suivant:
{
"sda1": "Alias 1",
"sda2": "Alias 2",
"sdb1": "Alias 3"
}
PPA pour une installation facile arrive bientôt. . .
En attendant, voici les étapes alternatives:
cd /tmp
wget https://github.com/SergKolo/udisks-indicator/archive/master.Zip
unzip master.Zip
Sudo install udisks-indicator-master/udisks-indicator /usr/bin/udisks-indicator
Sudo install udisks-indicator-master/udisks-indicator.desktop /usr/share/applications/udisks-indicator.desktop
Toutes ces étapes peuvent être placées dans un petit script d'installation gentil:
#!/bin/bash
cd /tmp
rm master.Zip*
wget https://github.com/SergKolo/udisks-indicator/archive/master.Zip
unzip master.Zip
install udisks-indicator-master/udisks-indicator /usr/bin/udisks-indicator
install udisks-indicator-master/udisks-indicator.desktop /usr/share/applications/udisks-indicator.desktop
Le code source original (version v1.0) avec les fonctionnalités de base de cet indicateur est disponible ci-dessous. Pour les dernières fonctionnalités, consultez référentiel GitHub pour ce projet . Veuillez signaler toute demande de fonctionnalité ainsi que les erreurs sur GitHub.
Le /usr/bin/udisks-indicator
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Author: Serg Kolo , contact: [email protected]
# Date: September 27 , 2016
# Purpose: appindicator for displaying mounted filesystem usage
# Tested on: Ubuntu 16.04 LTS
#
#
# Licensed under The MIT License (MIT).
# See included LICENSE file or the notice below.
#
# Copyright © 2016 Sergiy Kolodyazhnyy
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import gi
gi.require_version('AppIndicator3', '0.1')
from gi.repository import GLib as glib
from gi.repository import AppIndicator3 as appindicator
from gi.repository import Gtk as gtk
from os import statvfs
#from collections import OrderedDict
import subprocess
import shutil
import dbus
import json
import os
class UdisksIndicator(object):
def __init__(self):
self.app = appindicator.Indicator.new(
'udisks-indicator', "drive-harddisk-symbolic.svg",
appindicator.IndicatorCategory.HARDWARE
)
if not self.app.get_icon():
self.app.set_icon("drive-harddisk-symbolic")
self.app.set_status(appindicator.IndicatorStatus.ACTIVE)
filename = '.partition_aliases.json'
user_home = os.path.expanduser('~')
self.config_file = os.path.join(user_home,filename)
self.cache = self.get_partitions()
self.make_menu()
self.update()
def update(self):
timeout = 5
glib.timeout_add_seconds(timeout,self.callback)
def callback(self):
if self.cache != self.get_partitions():
self.make_menu()
self.update()
def make_menu(self,*args):
""" generates entries in the indicator"""
if hasattr(self, 'app_menu'):
for item in self.app_menu.get_children():
self.app_menu.remove(item)
self.app_menu = gtk.Menu()
partitions = self.get_partitions()
for i in partitions:
part = "Partition: " + i[0]
alias = self.find_alias(i[0])
drive = "\nDrive: " + i[1]
mount = "\nMountPoint: " + i[2]
usage = "\n%Usage: " + i[3]
item = part + drive + mount + usage
if alias:
alias = "\nAlias: " + alias
item = part + alias + drive + mount + usage
self.menu_item = gtk.MenuItem(item)
self.menu_item.connect('activate',self.open_mountpoint,i[2])
self.app_menu.append(self.menu_item)
self.menu_item.show()
self.separator = gtk.SeparatorMenuItem()
self.app_menu.append(self.separator)
self.separator.show()
self.unmounted = gtk.MenuItem('Unmounted Partitions')
self.unmounted_submenu = gtk.Menu()
self.unmounted.set_submenu(self.unmounted_submenu)
for i in self.get_unmounted_partitions():
# TODO: add type checking, prevent swap
part = "Partition: " + i[0]
alias = self.find_alias(i[0])
drive = "\nDrive: " + i[1]
label = part + drive
if alias:
alias = "\nAlias: " + alias
label = part + alias + drive
self.menu_item = gtk.MenuItem(label)
self.menu_item.connect('activate',self.mount_partition,i[0])
self.unmounted_submenu.append(self.menu_item)
self.menu_item.show()
self.separator = gtk.SeparatorMenuItem()
self.unmounted_submenu.append(self.separator)
self.separator.show()
self.app_menu.append(self.unmounted)
self.unmounted.show()
self.separator = gtk.SeparatorMenuItem()
self.app_menu.append(self.separator)
self.separator.show()
self.make_part_alias = gtk.MenuItem('Make Alias')
self.make_part_alias.connect('activate',self.make_alias)
self.app_menu.append(self.make_part_alias)
self.make_part_alias.show()
user_home = os.path.expanduser('~')
desktop_file = '.config/autostart/udisks-indicator.desktop'
full_path = os.path.join(user_home,desktop_file)
label = 'Start Automatically'
if os.path.exists(full_path):
label = label + ' \u2714'
self.autostart = gtk.MenuItem(label)
self.autostart.connect('activate',self.toggle_auto_startup)
self.app_menu.append(self.autostart)
self.autostart.show()
self.open_gnome_disks = gtk.MenuItem('Open Disks Utility')
self.open_gnome_disks.connect('activate',self.open_disks_utility)
self.app_menu.append(self.open_gnome_disks)
self.open_gnome_disks.show()
self.quit_app = gtk.MenuItem('Quit')
self.quit_app.connect('activate', self.quit)
self.app_menu.append(self.quit_app)
self.quit_app.show()
self.app.set_menu(self.app_menu)
def mount_partition(self,*args):
# TODO: implement error checking for mounting
return self.run_cmd(['udisksctl','mount','-b','/dev/' + args[-1]])
def get_mountpoint_usage(self,mountpoint):
fs = statvfs(mountpoint)
usage = 100*(float(fs.f_blocks)-float(fs.f_bfree))/float(fs.f_blocks)
return str("{0:.2f}".format(usage))
def get_partitions(self):
objects = self.get_dbus('system',
'org.freedesktop.UDisks2',
'/org/freedesktop/UDisks2',
'org.freedesktop.DBus.ObjectManager',
'GetManagedObjects',
None)
partitions = []
for item in objects:
try:
if 'block_devices' in str(item):
drive = self.get_dbus_property('system',
'org.freedesktop.UDisks2',
item,
'org.freedesktop.UDisks2.Block',
'Drive')
if drive == '/': continue
mountpoint = self.get_mountpoint(item)
if not mountpoint: continue
mountpoint = mountpoint.replace('\x00','')
drive = str(drive).split('/')[-1]
usage = self.get_mountpoint_usage(mountpoint)
part = str(item.split('/')[-1])
partitions.append((part,drive,mountpoint,usage))
except Exception as e:
#print(e)
pass
# returning list of tuples
partitions.sort()
return partitions
def get_mountpoint(self,dev_path):
try:
data = self.get_dbus_property(
'system',
'org.freedesktop.UDisks2',
dev_path,
'org.freedesktop.UDisks2.Filesystem',
'MountPoints')[0]
except Exception as e:
#print(e)
return None
else:
if len(data) > 0:
return ''.join([ chr(byte) for byte in data])
def get_unmounted_partitions(self):
objects = self.get_dbus('system',
'org.freedesktop.UDisks2',
'/org/freedesktop/UDisks2',
'org.freedesktop.DBus.ObjectManager',
'GetManagedObjects',
None)
partitions = []
for item in objects:
try:
if 'block_devices' in str(item):
drive = self.get_dbus_property('system',
'org.freedesktop.UDisks2',
item,
'org.freedesktop.UDisks2.Block',
'Drive')
if drive == '/': continue
mountpoint = self.get_mountpoint(item)
if mountpoint: continue
drive = str(drive).split('/')[-1]
part = str(item.split('/')[-1])
if not part[-1].isdigit(): continue
partitions.append((part,drive))
#print(partitions)
except Exception as e:
#print(e)
pass
partitions.sort()
return partitions
def get_dbus(self,bus_type,obj,path,interface,method,arg):
if bus_type == "session":
bus = dbus.SessionBus()
if bus_type == "system":
bus = dbus.SystemBus()
proxy = bus.get_object(obj,path)
method = proxy.get_dbus_method(method,interface)
if arg:
return method(arg)
else:
return method()
def get_dbus_property(self,bus_type,obj,path,iface,prop):
if bus_type == "session":
bus = dbus.SessionBus()
if bus_type == "system":
bus = dbus.SystemBus()
proxy = bus.get_object(obj,path)
aux = 'org.freedesktop.DBus.Properties'
props_iface = dbus.Interface(proxy,aux)
props = props_iface.Get(iface,prop)
return props
def make_alias(self,*args):
partitions = [ i[0] for i in self.get_partitions() ]
combo_values = '|'.join(partitions)
#print(combo_values)
command=[ 'zenity','--forms','--title','Make Alias',
'--add-combo','Partition','--combo-values',
combo_values,'--add-entry','Alias' ]
user_input = self.run_cmd(command)
if not user_input: return
alias = user_input.decode().strip().split('|')
existing_values = None
if os.path.isfile(self.config_file):
with open(self.config_file) as conf_file:
try:
existing_values = json.load(conf_file)
except ValueError:
pass
with open(self.config_file,'w') as conf_file:
if existing_values:
existing_values[alias[0]] = alias[1]
else:
existing_values = {alias[0]:alias[1]}
#print(existing_values)
json.dump(existing_values,conf_file,indent=4,sort_keys=True)
def find_alias(self,part):
if os.path.isfile(self.config_file):
with open(self.config_file) as conf_file:
try:
aliases = json.load(conf_file)
except ValueError:
pass
else:
if part in aliases:
return aliases[part]
else:
return None
def toggle_auto_startup(self,*args):
user_home = os.path.expanduser('~')
desktop_file = '.config/autostart/udisks-indicator.desktop'
full_path = os.path.join(user_home,desktop_file)
if os.path.exists(full_path):
os.unlink(full_path)
else:
original = '/usr/share/applications/udisks-indicator.desktop'
if os.path.exists(original):
shutil.copyfile(original,full_path)
self.make_menu()
def open_mountpoint(self,*args):
pid = subprocess.Popen(['xdg-open',args[-1]]).pid
def open_disks_utility(self,*args):
pid = subprocess.Popen(['gnome-disks']).pid
def run_cmd(self, cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
def run(self):
""" Launches the indicator """
try:
gtk.main()
except KeyboardInterrupt:
pass
def quit(self, data=None):
""" closes indicator """
gtk.main_quit()
def main():
""" defines program entry point """
indicator = UdisksIndicator()
indicator.run()
if __== '__main__':
main()
Le /usr/share/applications/udisks-indicator.desktop
[Desktop Entry]
Version=1.0
Name=Udisks Indicator
Comment=Indicator for reporting partition information
Exec=udisks-indicator
Type=Application
Icon=drive-harddisk-symbolic.svg
Terminal=false
Test Ubuntu Mate 16.04:
Les utilisateurs de gnome ont besoin d'une extension (support KStatusNotifierItem/AppIndicator) pour que l'indicateur se comporte correctement:
Installer indicateur Sysmonitor :
Sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
Sudo apt-get update
Sudo apt-get install indicator-sysmonitor
et il a l'option "Espace disponible dans le système de fichiers".
Il existe une autre réponse qui utilise basic indicateur Sysmonitor mais vous pouvez créer votre propre panneau personnalisé avec autant d’informations que vous le souhaitez.
La première étape consiste à comprendre comment calculer le pourcentage d'utilisation de la partition :
$ percentage=($(df -k --output=pcent /dev/sda1))
$ echo "${percentage[1]}"
13%
Voici un script bash à utiliser comme option "personnalisée" dans Indicateur Sysmonitor . Il montrera le pourcentage utilisé sur les trois premières partitions sur /dev/sda
:
#!/bin/bash
echo "sda1: "
percentage=($(df -k --output=pcent /dev/sda1))
echo "${percentage[1]}"
echo " | sda2: "
percentage=($(df -k --output=pcent /dev/sda2))
echo "${percentage[1]}"
echo " | sda3: "
percentage=($(df -k --output=pcent /dev/sda3))
echo "${percentage[1]}"
En cours d'exécution, il ressemblera à ceci:
Pour des instructions détaillées sur l’installation de l’indicateur Sysmonitor et l’attribution d’un script personnalisé, voir la réponse suivante: BASH peut-il afficher dans la barre des tâches en tant qu’indicateur d’application?