我无法找到一个适当的实用程序来指示面板上文件系统的使用情况(分区可用的%空间)。
我并不期待安装任何不好的桌面管理工具,而是一个简单的指示器。
我感谢你所有的建议。
发布于 2016-09-26 18:17:09
虽然可以使用这个选项的底部的答案(请参见[2.]),但它会导致一个带有附加选项的ppa -version,该选项将在preferences窗口中设置。


备选方案包括:





此外,该指示器现在包括一个较小(宽度)图标设置为其他发行版(如xfce),它将自动应用,取决于窗口管理器。

安装:
sudo add-apt-repository ppa:vlijm/spaceview
sudo apt-get update
sudo apt-get install spaceview下面的脚本是一个指示器,它列出了您的设备并显示了它们的使用情况。信息每10秒更新一次(如果必要的话)。






#!/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()
0.png

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png
设置很简单:
showusage.pyaliasses)。下面的示例:别名=[ “sda2”,“根”,“sdb1”、“外部 ]如果您想不改变显示设备,请使用:别名= [] ...and (如果需要),更改阈值以显示警告:#--将阈值设置为在以下显示警告(%空闲,步骤为10%) #--设置为0以没有警告阈值= 10 --就这样运行它的
若要使用该指示符,请运行以下命令:
python3 /path/to/showusage.py若要将其添加到启动应用程序中,请使用以下命令:
/bin/bash -c "sleep 10 && python3 /path/to/showusage.py"选择应用程序:破折号>启动应用程序>添加,添加上面的命令。
发布于 2016-09-26 12:56:52
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor它还有“文件系统中的可用空间”选项。
https://askubuntu.com/questions/829707
复制相似问题