Din*_*san 10 indicator partitioning disk-usage tools
我找不到合适的实用程序来仅在面板上指示文件系统使用情况(分区可用空间百分比)。
而且我不期待安装任何糟糕的桌面管理工具,而是一个简单的指示器。
我感谢您的所有建议。
Jac*_*ijm 19
虽然可以使用此答案底部的答案(请参阅参考资料[2.]),但它会导致一个ppa带有附加选项的-version,可在首选项窗口中进行设置。
选项包括:
此外,指示器现在包括为其他发行版(如 xfce)设置的较小(宽度)图标,它将根据窗口管理器自动应用。
安装:
sudo add-apt-repository ppa:vlijm/spaceview
sudo apt-get update
sudo apt-get install spaceview
Run Code Online (Sandbox Code Playgroud)
下面的脚本是一个指标,列出您的设备并显示它们的使用情况。信息每十秒更新一次(如有必要)。
此外
在指示器运行时,您可以选择要在图标中表示的设备。下次运行指标时将记住该设备:
对于一个或多个(或所有)设备,您可以设置替代名称(“自定义名称”),以在脚本的头部设置
举个例子,这个:
sudo add-apt-repository ppa:vlijm/spaceview
sudo apt-get update
sudo apt-get install spaceview
Run Code Online (Sandbox Code Playgroud)
将会呈现:
您可以设置一个阈值;如果您的任一设备的可用空间低于此值,您将收到警告:
插入/拔出的设备将在 10 秒内从菜单列表中添加/删除。
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"],
]
Run Code Online (Sandbox Code Playgroud)
设置很简单:
showusage.py在脚本的头部,设置(可能的)替代名称 ( aliasses)。下面是一个例子:
#!/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()
Run Code Online (Sandbox Code Playgroud)
如果要显示设备不变,请使用:
alias = [
["sda2", "root"],
["sdb1", "External"]
]
Run Code Online (Sandbox Code Playgroud)
...如果需要,请更改阈值以显示警告:
alias = []
Run Code Online (Sandbox Code Playgroud)
就是这样
要使用指标,请运行以下命令:
python3 /path/to/showusage.py
Run Code Online (Sandbox Code Playgroud)
要将其添加到启动应用程序,请使用以下命令:
/bin/bash -c "sleep 10 && python3 /path/to/showusage.py"
Run Code Online (Sandbox Code Playgroud)
选择应用程序:Dash > 启动应用程序 > 添加,添加上面的命令。
Ser*_*nyy 16
免责声明:我是这个指标的作者,它是为这个特定问题而写的
该指标现在支持 列出网络共享。感谢mihaigalos
该指示器现在具有卸载功能,并且通过引用每个分区的 UUID 而不是块设备名称(例如sda1. 查看相关的错误报告
该指标现在是 2.0 版,添加了一些功能并拥有自己的 PPA。
要从 PPA 安装,请在终端中使用以下步骤:
sudo apt-add-repository ppa:udisks-indicator-team/ppasudo bash -c 'apt-get update && apt-get install udisks-indicator'如发行说明中所述,这些功能包括:
优麒麟图标主题
关闭所有可选字段
在制作这个指标时,我希望实现一个既适合高级用户也适合普通用户的实用程序。我试图解决一些我注意到的新用户在处理命令行工具时可能遇到的问题。此外,该实用程序力求实现多用途。
首选项对话框允许根据用户的需要使指标变得复杂和/或简单。避免在顶部面板中放置标签也是一个特定的设计决策,这样它就不会占用太多用户的顶部面板空间。此外,该指标力求成为多用途实用程序,允许安装分区以及打开它们各自的目录。这不仅可以用作磁盘使用实用程序,还可以用作快速打开目录的导航实用程序。
用户还可以方便地知道哪个分区位于哪个磁盘,从而避免与通过命令行实用程序(如mount. 相反,它udisksctl用于该目的(以及从UDisks2守护进程获取信息,因此命名)。它不执行的唯一任务是 unmounting ,或者这个原因包括Open Disks Utility菜单项。
虽然最初我努力使其与 iStat menulet 类似,但该项目偏离了这一目标 - 该指标在其设计和目的方面是独一无二的。我希望它对许多用户有用,并使他们的 Ubuntu 体验更加愉快。
带有 Unity 桌面的 Ubuntu 指示器,用于显示磁盘使用情况

带有 Unity 的 Ubuntu 指示器可以轻松查看有关已安装分区的信息。它力求在视觉上与 OS X 的 iStat Menu 3 menulet 相似。
条目按顺序排列:
单击每个分区条目将在默认文件管理器中打开分区的挂载点
“Unmounted Partitions”菜单列出了系统当前未安装的所有分区。单击该子菜单中的任何条目将自动挂载该分区,通常挂载到/media/username/drive-id文件夹
该指标使用系统提供的默认图标,因此当您使用 Unity Tweak Tool 或其他方法更改图标主题时,图标应该会发生变化
注意:如果您想同时添加多个别名,而不是通过“Make Alias”选项一个一个地添加,您可以通过编辑~/.partition_aliases.json配置文件来实现。格式如下:
{
"sda1": "Alias 1",
"sda2": "Alias 2",
"sdb1": "Alias 3"
}
Run Code Online (Sandbox Code Playgroud)
易于安装的 PPA 即将推出。. .
同时,以下是替代步骤:
cd /tmpwget https://github.com/SergKolo/udisks-indicator/archive/master.zipunzip master.zipsudo install udisks-indicator-master/udisks-indicator /usr/bin/udisks-indicatorsudo install udisks-indicator-master/udisks-indicator.desktop /usr/share/applications/udisks-indicator.desktop所有这些步骤都可以放在一个漂亮的小安装脚本中:
#!/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
Run Code Online (Sandbox Code Playgroud)
可以在下面找到具有该指标基本功能的原始源代码(版本 v1.0)。有关最新功能,请查看此项目的 GitHub 存储库。请在 GitHub 上报告任何功能请求和错误。
的/usr/bin/udisks-indicator:
{
"sda1": "Alias 1",
"sda2": "Alias 2",
"sdb1": "Alias 3"
}
Run Code Online (Sandbox Code Playgroud)
这 /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
Run Code Online (Sandbox Code Playgroud)
Ubuntu Mate 16.04 测试:
Gnome 用户需要一个扩展(KStatusNotifierItem/AppIndicator Support)来使指标正常运行:
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |