diff --git a/common/.config/lf/preview b/common/.config/lf/preview
index 81ff1b30..269bfb97 100755
--- a/common/.config/lf/preview
+++ b/common/.config/lf/preview
@@ -30,6 +30,7 @@ archive() {
 }
 
 csv() {
+    f=${1:-$f}
     mlr --icsv --omd cat "$f" |
         CLICOLOR_FORCE=1 COLORTERM=truecolor \
             glow -w "$w" -s tokyo-night
@@ -73,11 +74,12 @@ word() {
 }
 
 ods() {
-    ssconvert \
-        --export-type=Gnumeric_stf:stf_assistant \
-        -O separator="$rs" \
-        "$f" "fd://1" |
-        column -t -s "$rs"
+    td=$(mktemp -d)
+
+    libreoffice --headless --convert-to csv "$f" --outdir "$td"
+    csv "${td}/${f%.*}.csv"
+
+    rm -rf "$td"
 }
 
 odt() {
@@ -126,6 +128,14 @@ yaml() {
     $BAT --language=yaml "$f"
 }
 
+gz_compressed() {
+    gzip -l "$f"
+}
+
+xz_compressed() {
+    xz -l "$f"
+}
+
 run() {
     if [ "$1" = "-s" ]; then
         cache="${CACHE_DIR}/$(
@@ -154,9 +164,11 @@ run() {
 preview() {
     mimetype=$1
     case "$mimetype" in
-        */vnd.openxmlformats-officedocument.spreadsheetml.sheet | */vnd.oasis.opendocument.spreadsheet) run ods ;;
+        */vnd.openxmlformats-officedocument.spreadsheetml.sheet | */vnd.oasis.opendocument.spreadsheet) run -s ods ;;
         */vnd.sqlite3) run sqlite ;;
-        */x-7z-compressed | */vnd.rar | */x-tar | */zip | */x-java-archive | */x-xz | */gzip | */x-bzip-compressed-tar | */x-compressed-tar | */x-xz-compressed-tar) run archive ;;
+        */gzip) run gz_compressed ;;
+        */x-xz) run xz_compressed ;;
+        */x-7z-compressed | */vnd.rar | */x-tar | */zip | */x-java-archive | */x-bzip-compressed-tar | */x-compressed-tar | */x-xz-compressed-tar) run archive ;;
         */epub+zip) run -s epub ;;
         image/svg+xml) run -s svg ;;
         image/*) run -s image ;;