mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: swap memory in the popup view (#227)
This commit is contained in:
@@ -25,6 +25,7 @@ public struct RAM_Usage: value_t {
|
||||
var free: Double
|
||||
|
||||
var pressureLevel: Int
|
||||
var swap: Swap
|
||||
|
||||
public var widget_value: Double {
|
||||
get {
|
||||
@@ -33,6 +34,12 @@ public struct RAM_Usage: value_t {
|
||||
}
|
||||
}
|
||||
|
||||
public struct Swap {
|
||||
var total: Double
|
||||
var used: Double
|
||||
var free: Double
|
||||
}
|
||||
|
||||
public class Memory: Module {
|
||||
private var settingsView: Settings
|
||||
private let popupView: Popup
|
||||
|
||||
@@ -21,10 +21,9 @@ internal class Popup: NSView, Popup_p {
|
||||
|
||||
private let dashboardHeight: CGFloat = 90
|
||||
private let chartHeight: CGFloat = 90 + Constants.Popup.separatorHeight
|
||||
private let detailsHeight: CGFloat = (22*4) + Constants.Popup.separatorHeight
|
||||
private let detailsHeight: CGFloat = (22*6) + Constants.Popup.separatorHeight
|
||||
private let processHeight: CGFloat = 22
|
||||
|
||||
private var totalField: NSTextField? = nil
|
||||
private var usedField: NSTextField? = nil
|
||||
private var freeField: NSTextField? = nil
|
||||
|
||||
@@ -32,6 +31,7 @@ internal class Popup: NSView, Popup_p {
|
||||
private var inactiveField: NSTextField? = nil
|
||||
private var wiredField: NSTextField? = nil
|
||||
private var compressedField: NSTextField? = nil
|
||||
private var swapField: NSTextField? = nil
|
||||
|
||||
private var chart: LineChartView? = nil
|
||||
private var circle: PieChartView? = nil
|
||||
@@ -159,10 +159,12 @@ internal class Popup: NSView, Popup_p {
|
||||
let separator = SeparatorView(LocalizedString("Details"), origin: NSPoint(x: 0, y: self.detailsHeight-Constants.Popup.separatorHeight), width: self.frame.width)
|
||||
let container: NSView = NSView(frame: NSRect(x: 0, y: 0, width: self.frame.width, height: separator.frame.origin.y))
|
||||
|
||||
self.activeField = PopupWithColorRow(container, color: NSColor.systemBlue, n: 3, title: "\(LocalizedString("App")):", value: "")
|
||||
self.wiredField = PopupWithColorRow(container, color: NSColor.systemOrange, n: 2, title: "\(LocalizedString("Wired")):", value: "")
|
||||
self.compressedField = PopupWithColorRow(container, color: NSColor.systemPink, n: 1, title: "\(LocalizedString("Compressed")):", value: "")
|
||||
self.freeField = PopupWithColorRow(container, color: NSColor.lightGray.withAlphaComponent(0.5), n: 0, title: "\(LocalizedString("Free")):", value: "")
|
||||
self.usedField = PopupRow(container, n: 5, title: "\(LocalizedString("Used")):", value: "").1
|
||||
self.activeField = PopupWithColorRow(container, color: NSColor.systemBlue, n: 4, title: "\(LocalizedString("App")):", value: "")
|
||||
self.wiredField = PopupWithColorRow(container, color: NSColor.systemOrange, n: 3, title: "\(LocalizedString("Wired")):", value: "")
|
||||
self.compressedField = PopupWithColorRow(container, color: NSColor.systemPink, n: 2, title: "\(LocalizedString("Compressed")):", value: "")
|
||||
self.freeField = PopupWithColorRow(container, color: NSColor.lightGray.withAlphaComponent(0.5), n: 1, title: "\(LocalizedString("Free")):", value: "")
|
||||
self.swapField = PopupRow(container, n: 0, title: "\(LocalizedString("Swap")):", value: "").1
|
||||
|
||||
view.addSubview(separator)
|
||||
view.addSubview(container)
|
||||
@@ -215,8 +217,8 @@ internal class Popup: NSView, Popup_p {
|
||||
self.inactiveField?.stringValue = Units(bytes: Int64(value.inactive)).getReadableMemory()
|
||||
self.wiredField?.stringValue = Units(bytes: Int64(value.wired)).getReadableMemory()
|
||||
self.compressedField?.stringValue = Units(bytes: Int64(value.compressed)).getReadableMemory()
|
||||
self.swapField?.stringValue = Units(bytes: Int64(value.swap.free)).getReadableMemory()
|
||||
|
||||
self.totalField?.stringValue = Units(bytes: Int64(value.total)).getReadableMemory()
|
||||
self.usedField?.stringValue = Units(bytes: Int64(value.used)).getReadableMemory()
|
||||
self.freeField?.stringValue = Units(bytes: Int64(value.free)).getReadableMemory()
|
||||
|
||||
|
||||
@@ -55,9 +55,13 @@ internal class UsageReader: Reader<RAM_Usage> {
|
||||
let used = active + wired + compressed
|
||||
let free = self.totalSize - used
|
||||
|
||||
var size: size_t = MemoryLayout<uint>.size
|
||||
var int_size: size_t = MemoryLayout<uint>.size
|
||||
var pressureLevel: Int = 0
|
||||
sysctlbyname("kern.memorystatus_vm_pressure_level", &pressureLevel, &size, nil, 0)
|
||||
sysctlbyname("kern.memorystatus_vm_pressure_level", &pressureLevel, &int_size, nil, 0)
|
||||
|
||||
var string_size: size_t = MemoryLayout<xsw_usage>.size
|
||||
var swap: xsw_usage = xsw_usage()
|
||||
sysctlbyname("vm.swapusage", &swap, &string_size, nil, 0)
|
||||
|
||||
self.callback(RAM_Usage(
|
||||
active: active,
|
||||
@@ -70,7 +74,13 @@ internal class UsageReader: Reader<RAM_Usage> {
|
||||
used: Double(used),
|
||||
free: Double(free),
|
||||
|
||||
pressureLevel: pressureLevel
|
||||
pressureLevel: pressureLevel,
|
||||
|
||||
swap: Swap(
|
||||
total: Double(swap.xsu_total),
|
||||
used: Double(swap.xsu_used),
|
||||
free: Double(swap.xsu_avail)
|
||||
)
|
||||
))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Reserviert";
|
||||
"Compressed" = "Komprimiert";
|
||||
"Free" = "Frei";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Wechseldatenträger anzeigen";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Wired";
|
||||
"Compressed" = "Compressed";
|
||||
"Free" = "Free";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Show removable disks";
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
"Wired" = "Física";
|
||||
"Compressed" = "Comprimida";
|
||||
"Free" = "Libre";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Mostrar los discos extraíbles";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Réservée";
|
||||
"Compressed" = "Compressée";
|
||||
"Free" = "Libre";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Afficher les disques amovibles";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Wired";
|
||||
"Compressed" = "Compressa";
|
||||
"Free" = "Libera";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Mostra dischi rimovibili";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "예약됨";
|
||||
"Compressed" = "압축됨";
|
||||
"Free" = "여유";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "이동식 디스크 표시";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Opptatt";
|
||||
"Compressed" = "Komprimert";
|
||||
"Free" = "Ledig";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Vis utløsbare disker";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Układowa";
|
||||
"Compressed" = "Skompresowana";
|
||||
"Free" = "Wolna";
|
||||
"Swap" = "Pamięć wymiany";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Pokaż dyski wymienne";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Com fio";
|
||||
"Compressed" = "Comprimido";
|
||||
"Free" = "Livre";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Mostrar discos removíveis";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Зарезервированная";
|
||||
"Compressed" = "Сжатая";
|
||||
"Free" = "Свободная";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Показать съемные диски";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Bağlı";
|
||||
"Compressed" = "Sıkıştırılmış";
|
||||
"Free" = "Boş";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Çıkarılabilir diskleri göster";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Постійна";
|
||||
"Compressed" = "Стисненна";
|
||||
"Free" = "Вільна";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Показати зйомні диски";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "Tính toán (hệ thống)";
|
||||
"Compressed" = "Đã nén";
|
||||
"Free" = "Còn Trống";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "Hiển thị các đĩa rời";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "联动内存";
|
||||
"Compressed" = "被压缩";
|
||||
"Free" = "可用";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "显示可移动磁盘";
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
"Wired" = "固定";
|
||||
"Compressed" = "已壓縮";
|
||||
"Free" = "可使用";
|
||||
"Swap" = "Swap";
|
||||
|
||||
// Disk
|
||||
"Show removable disks" = "顯示卸除式磁碟";
|
||||
|
||||
Reference in New Issue
Block a user