diff --git a/README.md b/README.md
index f2b756b5..e44a2fcc 100644
--- a/README.md
+++ b/README.md
@@ -138,6 +138,7 @@ Parameters that are enabled by default have to be explicitly disabled. These (cu
| `core_load` | Displays load & frequency per core |
| `gpu_core_clock`
`gpu_mem_clock`| Displays GPU core/memory frequency |
| `ram`
`vram` | Displays system RAM/VRAM usage |
+| `swap` | Displays swap space usage next to system RAM usage |
| `full` | Enables most of the toggleable parameters (currently excludes `histogram`) |
| `font_size=` | Customizeable font size (default=24) |
| `font_size_text=` | Customizeable font size for other text like media metadata (default=24) |
diff --git a/bin/MangoHud.conf b/bin/MangoHud.conf
index 8f2af801..05c40171 100644
--- a/bin/MangoHud.conf
+++ b/bin/MangoHud.conf
@@ -104,8 +104,9 @@ position=top-left
# io_write
# io_stats
-### Display system ram / vram usage
+### Display system ram / swap space / vram usage
# ram
+# swap
# vram
### Display Wine version
diff --git a/src/hud_elements.cpp b/src/hud_elements.cpp
index b8d4b685..7d5974f0 100644
--- a/src/hud_elements.cpp
+++ b/src/hud_elements.cpp
@@ -329,6 +329,15 @@ void HudElements::ram(){
ImGui::Text("GiB");
ImGui::PopFont();
}
+
+ if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_ram] && HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_swap]){
+ ImGui::TableNextCell();
+ right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%.1f", swapused);
+ ImGui::SameLine(0,1.0f);
+ ImGui::PushFont(HUDElements.sw_stats->font1);
+ ImGui::Text("GiB");
+ ImGui::PopFont();
+ }
#endif
}
diff --git a/src/hud_elements.h b/src/hud_elements.h
index 93f39a8b..48f6ccc8 100644
--- a/src/hud_elements.h
+++ b/src/hud_elements.h
@@ -53,6 +53,7 @@ class HudElements{
gpu,
vram,
ram,
+ swap,
engine,
io,
frametime,
diff --git a/src/memory.cpp b/src/memory.cpp
index d4b73b48..63b0c5d9 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -6,7 +6,7 @@
#include
struct memory_information mem_info;
-float memused, memmax;
+float memused, memmax, swapused, swapmax;
FILE *open_file(const char *file, int *reported) {
FILE *fp = nullptr;
@@ -95,5 +95,8 @@ void update_meminfo(void) {
memused = (float(mem_info.memmax) - float(mem_info.memeasyfree)) / (1024 * 1024);
memmax = float(mem_info.memmax) / (1024 * 1024);
+ swapused = (float(mem_info.swapmax) - float(mem_info.swapfree)) / (1024 * 1024);
+ swapmax = float(mem_info.swapmax) / (1024 * 1024);
+
fclose(meminfo_fp);
}
diff --git a/src/memory.h b/src/memory.h
index 8afee519..469c14e8 100644
--- a/src/memory.h
+++ b/src/memory.h
@@ -5,7 +5,7 @@
#include
#include
-extern float memused, memmax;
+extern float memused, memmax, swapused, swapmax;
struct memory_information {
/* memory information in kilobytes */
diff --git a/src/overlay.cpp b/src/overlay.cpp
index 622a9349..c171c000 100644
--- a/src/overlay.cpp
+++ b/src/overlay.cpp
@@ -44,7 +44,7 @@ void update_hw_info(struct swapchain_stats& sw_stats, struct overlay_params& par
// get ram usage/max
#ifdef __gnu_linux__
- if (params.enabled[OVERLAY_PARAM_ENABLED_ram] || logger->is_active())
+ if (params.enabled[OVERLAY_PARAM_ENABLED_ram] || params.enabled[OVERLAY_PARAM_ENABLED_swap] || logger->is_active())
update_meminfo();
if (params.enabled[OVERLAY_PARAM_ENABLED_io_read] || params.enabled[OVERLAY_PARAM_ENABLED_io_write])
getIoStats(&sw_stats.io);
diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp
index 5e0229a7..91c05964 100644
--- a/src/overlay_params.cpp
+++ b/src/overlay_params.cpp
@@ -533,6 +533,7 @@ parse_overlay_config(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_cpu_stats] = true;
params->enabled[OVERLAY_PARAM_ENABLED_gpu_stats] = true;
params->enabled[OVERLAY_PARAM_ENABLED_ram] = false;
+ params->enabled[OVERLAY_PARAM_ENABLED_swap] = false;
params->enabled[OVERLAY_PARAM_ENABLED_vram] = false;
params->enabled[OVERLAY_PARAM_ENABLED_read_cfg] = false;
params->enabled[OVERLAY_PARAM_ENABLED_io_read] = false;
diff --git a/src/overlay_params.h b/src/overlay_params.h
index f378452b..0bd4e23c 100644
--- a/src/overlay_params.h
+++ b/src/overlay_params.h
@@ -34,6 +34,7 @@ typedef unsigned long KeySym;
OVERLAY_PARAM_BOOL(cpu_stats) \
OVERLAY_PARAM_BOOL(gpu_stats) \
OVERLAY_PARAM_BOOL(ram) \
+ OVERLAY_PARAM_BOOL(swap) \
OVERLAY_PARAM_BOOL(vram) \
OVERLAY_PARAM_BOOL(time) \
OVERLAY_PARAM_BOOL(full) \