Add shebangs to all examples for direct execution from anywhere

ober

41106d41b49d93a159eef2296c7741e4e0a9323e

diff --git a/README.md b/README.md
index 09d8e47..46d8695 100644
--- a/README.md
+++ b/README.md
@@ -96,48 +96,39 @@ Tests run headless using Qt's offscreen platform plugin (`QT_QPA_PLATFORM=offscr
 
 ### Running Examples
 
-All examples are standalone Chez Scheme scripts. Run them with:
+All examples are self-contained executables with shebangs. Just run them directly from anywhere:
 
-From the chez-qt directory:
+```sh
+./examples/hello.ss
+./examples/counter.ss
+./examples/form.ss
+./examples/editor.ss
+./examples/dashboard.ss
+```
+
+The shebang automatically resolves library paths relative to the script location, so examples work from any working directory:
+
+```sh
+cd /tmp
+/path/to/chez-qt/examples/hello.ss
+```
+
+Run headless (no display required):
 
 ```sh
-# Run any example (LD_LIBRARY_PATH is set by the Makefile's rpath, but set it if needed)
-scheme --libdirs . --script examples/hello.ss
-scheme --libdirs . --script examples/counter.ss
-scheme --libdirs . --script examples/form.ss
-scheme --libdirs . --script examples/editor.ss
-scheme --libdirs . --script examples/dashboard.ss
-scheme --libdirs . --script examples/filebrowser.ss
-scheme --libdirs . --script examples/styled.ss
-scheme --libdirs . --script examples/settings.ss
-scheme --libdirs . --script examples/painter.ss
-scheme --libdirs . --script examples/datainput.ss
-scheme --libdirs . --script examples/planner.ss
-scheme --libdirs . --script examples/autocomplete.ss
-scheme --libdirs . --script examples/modelviewer.ss
-scheme --libdirs . --script examples/polished.ss
-scheme --libdirs . --script examples/diagram.ss
-scheme --libdirs . --script examples/terminal.ss
-scheme --libdirs . --script examples/widgets.ss
-scheme --libdirs . --script examples/filemanager.ss
-scheme --libdirs . --script examples/wizard.ss
-scheme --libdirs . --script examples/mdi.ss
-scheme --libdirs . --script examples/dockable.ss
-scheme --libdirs . --script examples/trayapp.ss
-scheme --libdirs . --script examples/dragdrop.ss
-scheme --libdirs . --script examples/keyboard.ss
-scheme --libdirs . --script examples/dialogs.ss
-scheme --libdirs . --script examples/richtext.ss
+QT_QPA_PLATFORM=offscreen ./examples/hello.ss
 ```
 
-Or run headless (no display required):
+Or invoke manually without the shebang:
 
 ```sh
-QT_QPA_PLATFORM=offscreen scheme --libdirs . --script examples/hello.ss
+scheme --libdirs /path/to/chez-qt --script examples/hello.ss
 ```
 
 ### Using from the REPL
 
+From the chez-qt directory:
+
 ```sh
 scheme --libdirs .
 ```
diff --git a/examples/autocomplete.ss b/examples/autocomplete.ss
old mode 100644
new mode 100755
index 1beb1ab..b548620
--- a/examples/autocomplete.ss
+++ b/examples/autocomplete.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; autocomplete.ss — QSettings, QCompleter, QToolTip demo
 ;;; Search with history, auto-complete from past searches
 
diff --git a/examples/counter.ss b/examples/counter.ss
old mode 100644
new mode 100755
index 9626f92..5085c86
--- a/examples/counter.ss
+++ b/examples/counter.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; Counter example: button click increments a label
 
 (import (chez-qt qt))
diff --git a/examples/dashboard.ss b/examples/dashboard.ss
old mode 100644
new mode 100755
index f146856..30d3dff
--- a/examples/dashboard.ss
+++ b/examples/dashboard.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; dashboard.ss — Dashboard demo showcasing tabs, lists, tables, sliders
 
 (import (chez-qt qt))
diff --git a/examples/datainput.ss b/examples/datainput.ss
old mode 100644
new mode 100755
index d49ee5b..ff8234b
--- a/examples/datainput.ss
+++ b/examples/datainput.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; datainput.ss — Data input widgets demo
 ;;; Demonstrates QDoubleSpinBox, QDateEdit, QTimeEdit, QFrame,
 ;;; QProgressDialog, and QInputDialog.
diff --git a/examples/diagram.ss b/examples/diagram.ss
old mode 100644
new mode 100755
index 4e05144..951a758
--- a/examples/diagram.ss
+++ b/examples/diagram.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)
diff --git a/examples/dialogs.ss b/examples/dialogs.ss
old mode 100644
new mode 100755
index ed6766b..2cab482
--- a/examples/dialogs.ss
+++ b/examples/dialogs.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; dialogs.ss — Showcase of all dialog types.
 ;;;
 ;;; Demonstrates: QProgressDialog, QInputDialog (get-text, get-int,
diff --git a/examples/dockable.ss b/examples/dockable.ss
old mode 100644
new mode 100755
index b6424c4..3f79771
--- a/examples/dockable.ss
+++ b/examples/dockable.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)
diff --git a/examples/dragdrop.ss b/examples/dragdrop.ss
old mode 100644
new mode 100755
index 34c4da4..5b6273e
--- a/examples/dragdrop.ss
+++ b/examples/dragdrop.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)
diff --git a/examples/editor.ss b/examples/editor.ss
old mode 100644
new mode 100755
index 50e5972..cc52b80
--- a/examples/editor.ss
+++ b/examples/editor.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; editor.ss — Simple text editor with menus, toolbar, keyboard shortcuts
 
 (import (chez-qt qt))
diff --git a/examples/filebrowser.ss b/examples/filebrowser.ss
old mode 100644
new mode 100755
index fb688ea..55c3a97
--- a/examples/filebrowser.ss
+++ b/examples/filebrowser.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; File Browser — demonstrates QTreeWidget, QGridLayout, QTimer, clipboard
 
 (import (chez-qt qt))
diff --git a/examples/filemanager.ss b/examples/filemanager.ss
old mode 100644
new mode 100755
index 317fec9..82065fa
--- a/examples/filemanager.ss
+++ b/examples/filemanager.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; filemanager.ss — File system browser using QFileSystemModel + QTreeView
 
 (import (chez-qt qt))
diff --git a/examples/form.ss b/examples/form.ss
old mode 100644
new mode 100755
index 56e1335..917c816
--- a/examples/form.ss
+++ b/examples/form.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; Form example: exercises Phase 2 widgets
 ;;; QLineEdit, QCheckBox, QComboBox, QSpinBox, QPushButton + QMessageBox
 
diff --git a/examples/hello.ss b/examples/hello.ss
old mode 100644
new mode 100755
index 5aa2f37..af2b34f
--- a/examples/hello.ss
+++ b/examples/hello.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; Minimal Chez-Qt example: window with a label
 
 (import (chez-qt qt))
diff --git a/examples/keyboard.ss b/examples/keyboard.ss
old mode 100644
new mode 100755
index 4dcab5d..86198af
--- a/examples/keyboard.ss
+++ b/examples/keyboard.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; keyboard.ss — Key event viewer and shortcut demo.
 ;;;
 ;;; Demonstrates: qt-on-key-press!, qt-last-key-code, qt-last-key-modifiers,
diff --git a/examples/mdi.ss b/examples/mdi.ss
old mode 100644
new mode 100755
index d087511..7fe1175
--- a/examples/mdi.ss
+++ b/examples/mdi.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)
diff --git a/examples/modelviewer.ss b/examples/modelviewer.ss
old mode 100644
new mode 100755
index c96c2c2..c13e4cc
--- a/examples/modelviewer.ss
+++ b/examples/modelviewer.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; modelviewer.ss — Model/View demo
 ;;; QStandardItemModel in QTableView with sorting/filtering,
 ;;; and a QTreeView with hierarchical data.
diff --git a/examples/painter.ss b/examples/painter.ss
old mode 100644
new mode 100755
index 440449c..0fd3ac8
--- a/examples/painter.ss
+++ b/examples/painter.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; painter.ss — QPainter demo: draw shapes, text, and composited images
 
 (import (chez-qt qt))
diff --git a/examples/planner.ss b/examples/planner.ss
old mode 100644
new mode 100755
index 1967a8d..c760db2
--- a/examples/planner.ss
+++ b/examples/planner.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; planner.ss — QFormLayout, QCalendarWidget, QTextBrowser,
 ;;;               QDialogButtonBox, QShortcut
 
diff --git a/examples/polished.ss b/examples/polished.ss
old mode 100644
new mode 100755
index 4a8e63b..3870e4e
--- a/examples/polished.ss
+++ b/examples/polished.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; polished.ss — Practical Polish demo
 ;;; QToolButton, validators, QPlainTextEdit, layout spacers, QSizePolicy
 
diff --git a/examples/richtext.ss b/examples/richtext.ss
old mode 100644
new mode 100755
index 8c0cd24..c4eee87
--- a/examples/richtext.ss
+++ b/examples/richtext.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; richtext.ss — HTML viewer with font/color customization
 ;;; Demonstrates: QTextBrowser, QFrame, QFont, QColor, QFontDialog, QColorDialog, QButtonBox
 
diff --git a/examples/settings.ss b/examples/settings.ss
old mode 100644
new mode 100755
index cb2150a..9bfe2a2
--- a/examples/settings.ss
+++ b/examples/settings.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; settings.ss — Radio buttons, button groups, group boxes
 ;;;
 ;;; Demonstrates:
diff --git a/examples/styled.ss b/examples/styled.ss
old mode 100644
new mode 100755
index edcd751..7f303ee
--- a/examples/styled.ss
+++ b/examples/styled.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; styled.ss — Dark-themed split-pane app with scroll area, key events
 ;;;
 ;;; Demonstrates:
diff --git a/examples/terminal.ss b/examples/terminal.ss
old mode 100644
new mode 100755
index fd2e2ad..0d7336b
--- a/examples/terminal.ss
+++ b/examples/terminal.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; terminal.ss — Simple terminal demonstrating QProcess with QPlainTextEdit
 
 (import (chez-qt qt))
diff --git a/examples/trayapp.ss b/examples/trayapp.ss
old mode 100644
new mode 100755
index 1ac640c..58976c5
--- a/examples/trayapp.ss
+++ b/examples/trayapp.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)
diff --git a/examples/widgets.ss b/examples/widgets.ss
old mode 100644
new mode 100755
index 185da1d..b2a42ee
--- a/examples/widgets.ss
+++ b/examples/widgets.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 ;;; widgets.ss — Niche widgets demo: QDial, QLCDNumber, QToolBox, QUndoStack
 
 (import (chez-qt qt))
diff --git a/examples/wizard.ss b/examples/wizard.ss
old mode 100644
new mode 100755
index 866bf83..9273c19
--- a/examples/wizard.ss
+++ b/examples/wizard.ss
@@ -1,3 +1,11 @@
+#!/bin/sh
+#|
+CHEZ_QT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+VENDOR_LIB="$(objdump -p "$CHEZ_QT_DIR/qt_chez_shim.so" 2>/dev/null | sed -n 's/.*RUNPATH *//p')"
+export LD_LIBRARY_PATH="${VENDOR_LIB:+$VENDOR_LIB:}$CHEZ_QT_DIR:$LD_LIBRARY_PATH"
+export CHEZ_QT_LIB="$CHEZ_QT_DIR"
+exec scheme --libdirs "$CHEZ_QT_DIR" --script "$0" "$@"
+|#
 (import (chez-qt qt))
 
 (define (main)