diff --git a/Cargo.lock b/Cargo.lock
index abbaeea716dbeb905e2b3bf2cf7cd44278f08cbf..e0cc8b619343bcfe5a851e2e2b34925891696220 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -863,6 +863,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"ashpd",
+ "futures-channel",
"gettext-rs",
"gtk-macros",
"gtk4",
diff --git a/Cargo.toml b/Cargo.toml
index 0babf778c9265a23130f1bde3ca651681ad86cb2..f0a26a2d9bb6dcc5791c87129fc4f54fa0996c25 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,6 +9,7 @@ gtk-macros = "0.3.0"
log = "0.4.11"
once_cell = "1.9.0"
pretty_env_logger = "0.4.0"
+futures-channel = "0.3.19"
[dependencies.ashpd]
version = "0.2.2"
diff --git a/data/gtk/image_page.ui b/data/gtk/image_page.ui
new file mode 100644
index 0000000000000000000000000000000000000000..815b2494860d6f37def7f31d9b8bbc2c5938e49a
--- /dev/null
+++ b/data/gtk/image_page.ui
@@ -0,0 +1,76 @@
+
+
+
+ True
+ True
+
+
+
+
+
+
diff --git a/data/gtk/image_view.ui b/data/gtk/image_view.ui
index 7dcb506aed1c1352f51c3990d3c5df9766e71960..88af8a38f36d11f00ec08b1e64010e0e511d0237 100644
--- a/data/gtk/image_view.ui
+++ b/data/gtk/image_view.ui
@@ -8,61 +8,42 @@
True
-
- center
+
+ True
+ False
+ False
+
+
+
+
+
+ start
center
+ 18
+ 18
+ go-previous-symbolic
+ iv.previous
+ Previous Image
+
-
- True
-
-
- start
- center
- 18
- 18
- go-previous-symbolic
- iv.previous
- Previous Image
-
-
-
-
-
- True
- end
- center
- 18
- 18
- go-next-symbolic
- iv.next
- Next Image
-
-
-
-
-
- 3
-
-
-
-
- True
-
-
-
-
-
+
+ True
+ end
+ center
+ 18
+ 18
+ go-next-symbolic
+ iv.next
+ Next Image
+
@@ -87,32 +68,4 @@
-
diff --git a/data/gtk/window.ui b/data/gtk/window.ui
index 7feb7f5aa358376bf319bd38d03401bed4d46c45..bf803d3f7ad80499f634fd75c7507714bf12b4f7 100644
--- a/data/gtk/window.ui
+++ b/data/gtk/window.ui
@@ -16,11 +16,6 @@