From d82480a49d9eb546888584dcd7f4fcac5549cdf9 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Fri, 18 Dec 2020 16:25:43 +0100 Subject: [PATCH] feat: swap memory in the popup view (#227) --- Modules/Memory/main.swift | 7 +++++++ Modules/Memory/popup.swift | 16 +++++++++------- Modules/Memory/readers.swift | 16 +++++++++++++--- .../de.lproj/Localizable.strings | 1 + .../en.lproj/Localizable.strings | 1 + .../es.lproj/Localizable.strings | 1 + .../fr.lproj/Localizable.strings | 1 + .../it.lproj/Localizable.strings | 1 + .../ko.lproj/Localizable.strings | 1 + .../nb.lproj/Localizable.strings | 1 + .../pl.lproj/Localizable.strings | 1 + .../pt-BR.lproj/Localizable.strings | 1 + .../ru.lproj/Localizable.strings | 1 + .../tr.lproj/Localizable.strings | 1 + .../uk.lproj/Localizable.strings | 1 + .../vi.lproj/Localizable.strings | 1 + .../zh-Hans.lproj/Localizable.strings | 1 + .../zh-Hant.lproj/Localizable.strings | 1 + 18 files changed, 44 insertions(+), 10 deletions(-) diff --git a/Modules/Memory/main.swift b/Modules/Memory/main.swift index 1d888eab..49ec371c 100644 --- a/Modules/Memory/main.swift +++ b/Modules/Memory/main.swift @@ -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 diff --git a/Modules/Memory/popup.swift b/Modules/Memory/popup.swift index 76db4a6a..64181e20 100644 --- a/Modules/Memory/popup.swift +++ b/Modules/Memory/popup.swift @@ -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() diff --git a/Modules/Memory/readers.swift b/Modules/Memory/readers.swift index c1bf0b78..bc5b443e 100644 --- a/Modules/Memory/readers.swift +++ b/Modules/Memory/readers.swift @@ -55,9 +55,13 @@ internal class UsageReader: Reader { let used = active + wired + compressed let free = self.totalSize - used - var size: size_t = MemoryLayout.size + var int_size: size_t = MemoryLayout.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.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 { 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 } diff --git a/Stats/Supporting Files/de.lproj/Localizable.strings b/Stats/Supporting Files/de.lproj/Localizable.strings index 4f12a318..f9d4cacb 100644 --- a/Stats/Supporting Files/de.lproj/Localizable.strings +++ b/Stats/Supporting Files/de.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Reserviert"; "Compressed" = "Komprimiert"; "Free" = "Frei"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Wechseldatenträger anzeigen"; diff --git a/Stats/Supporting Files/en.lproj/Localizable.strings b/Stats/Supporting Files/en.lproj/Localizable.strings index 99c99556..02a97595 100644 --- a/Stats/Supporting Files/en.lproj/Localizable.strings +++ b/Stats/Supporting Files/en.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Wired"; "Compressed" = "Compressed"; "Free" = "Free"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Show removable disks"; diff --git a/Stats/Supporting Files/es.lproj/Localizable.strings b/Stats/Supporting Files/es.lproj/Localizable.strings index 9fc0a7d3..5eef395f 100644 --- a/Stats/Supporting Files/es.lproj/Localizable.strings +++ b/Stats/Supporting Files/es.lproj/Localizable.strings @@ -110,6 +110,7 @@ "Wired" = "Física"; "Compressed" = "Comprimida"; "Free" = "Libre"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Mostrar los discos extraíbles"; diff --git a/Stats/Supporting Files/fr.lproj/Localizable.strings b/Stats/Supporting Files/fr.lproj/Localizable.strings index c3a7c7d9..a0d6e9e9 100644 --- a/Stats/Supporting Files/fr.lproj/Localizable.strings +++ b/Stats/Supporting Files/fr.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Réservée"; "Compressed" = "Compressée"; "Free" = "Libre"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Afficher les disques amovibles"; diff --git a/Stats/Supporting Files/it.lproj/Localizable.strings b/Stats/Supporting Files/it.lproj/Localizable.strings index 6f6dcc6f..4ec735ff 100644 --- a/Stats/Supporting Files/it.lproj/Localizable.strings +++ b/Stats/Supporting Files/it.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Wired"; "Compressed" = "Compressa"; "Free" = "Libera"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Mostra dischi rimovibili"; diff --git a/Stats/Supporting Files/ko.lproj/Localizable.strings b/Stats/Supporting Files/ko.lproj/Localizable.strings index 3743a833..8fa201e1 100644 --- a/Stats/Supporting Files/ko.lproj/Localizable.strings +++ b/Stats/Supporting Files/ko.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "예약됨"; "Compressed" = "압축됨"; "Free" = "여유"; +"Swap" = "Swap"; // Disk "Show removable disks" = "이동식 디스크 표시"; diff --git a/Stats/Supporting Files/nb.lproj/Localizable.strings b/Stats/Supporting Files/nb.lproj/Localizable.strings index a65da344..6590a5f5 100644 --- a/Stats/Supporting Files/nb.lproj/Localizable.strings +++ b/Stats/Supporting Files/nb.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Opptatt"; "Compressed" = "Komprimert"; "Free" = "Ledig"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Vis utløsbare disker"; diff --git a/Stats/Supporting Files/pl.lproj/Localizable.strings b/Stats/Supporting Files/pl.lproj/Localizable.strings index ffd8b0a5..6698c0f8 100644 --- a/Stats/Supporting Files/pl.lproj/Localizable.strings +++ b/Stats/Supporting Files/pl.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Układowa"; "Compressed" = "Skompresowana"; "Free" = "Wolna"; +"Swap" = "Pamięć wymiany"; // Disk "Show removable disks" = "Pokaż dyski wymienne"; diff --git a/Stats/Supporting Files/pt-BR.lproj/Localizable.strings b/Stats/Supporting Files/pt-BR.lproj/Localizable.strings index 6508bd65..fb027b57 100644 --- a/Stats/Supporting Files/pt-BR.lproj/Localizable.strings +++ b/Stats/Supporting Files/pt-BR.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Com fio"; "Compressed" = "Comprimido"; "Free" = "Livre"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Mostrar discos removíveis"; diff --git a/Stats/Supporting Files/ru.lproj/Localizable.strings b/Stats/Supporting Files/ru.lproj/Localizable.strings index 7d46f8c1..e8f127d9 100644 --- a/Stats/Supporting Files/ru.lproj/Localizable.strings +++ b/Stats/Supporting Files/ru.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Зарезервированная"; "Compressed" = "Сжатая"; "Free" = "Свободная"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Показать съемные диски"; diff --git a/Stats/Supporting Files/tr.lproj/Localizable.strings b/Stats/Supporting Files/tr.lproj/Localizable.strings index a8e96523..465e9961 100644 --- a/Stats/Supporting Files/tr.lproj/Localizable.strings +++ b/Stats/Supporting Files/tr.lproj/Localizable.strings @@ -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"; diff --git a/Stats/Supporting Files/uk.lproj/Localizable.strings b/Stats/Supporting Files/uk.lproj/Localizable.strings index fac0d547..ec858dbf 100644 --- a/Stats/Supporting Files/uk.lproj/Localizable.strings +++ b/Stats/Supporting Files/uk.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "Постійна"; "Compressed" = "Стисненна"; "Free" = "Вільна"; +"Swap" = "Swap"; // Disk "Show removable disks" = "Показати зйомні диски"; diff --git a/Stats/Supporting Files/vi.lproj/Localizable.strings b/Stats/Supporting Files/vi.lproj/Localizable.strings index 67bb2a79..23e6de51 100644 --- a/Stats/Supporting Files/vi.lproj/Localizable.strings +++ b/Stats/Supporting Files/vi.lproj/Localizable.strings @@ -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"; diff --git a/Stats/Supporting Files/zh-Hans.lproj/Localizable.strings b/Stats/Supporting Files/zh-Hans.lproj/Localizable.strings index f43eea88..1c89f373 100644 --- a/Stats/Supporting Files/zh-Hans.lproj/Localizable.strings +++ b/Stats/Supporting Files/zh-Hans.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "联动内存"; "Compressed" = "被压缩"; "Free" = "可用"; +"Swap" = "Swap"; // Disk "Show removable disks" = "显示可移动磁盘"; diff --git a/Stats/Supporting Files/zh-Hant.lproj/Localizable.strings b/Stats/Supporting Files/zh-Hant.lproj/Localizable.strings index f6ee7417..ee879cc9 100644 --- a/Stats/Supporting Files/zh-Hant.lproj/Localizable.strings +++ b/Stats/Supporting Files/zh-Hant.lproj/Localizable.strings @@ -109,6 +109,7 @@ "Wired" = "固定"; "Compressed" = "已壓縮"; "Free" = "可使用"; +"Swap" = "Swap"; // Disk "Show removable disks" = "顯示卸除式磁碟";