ต้องสร้างไฟล์ .desktop ในโฟลเดอร์ autostart ของ user:
~/.config/autostart/firefox_cctv.desktop
โดยให้ Exec ชี้ไปที่สคริปต์:
[Desktop Entry]
Type=Application
Exec=/home/mill/start_firefox_cctv.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Firefox CCTV Home88
Comment=Start Firefox with CCTV page (clear old tabs first)
กรณีอยากใช้ได้ทุก user
วางสคริปต์ไว้ที่ /usr/local/bin/ (เหมาะกับไฟล์ custom script ที่ต้องใช้ system-wide):
/usr/local/bin/start_firefox_cctv.sh
แล้วทำให้รันได้:
sudo chmod +x /usr/local/bin/start_firefox_cctv.sh
จากนั้นทุก user จะสามารถพิมพ์:
start_firefox_cctv.sh
ได้เลย (เพราะ /usr/local/bin อยู่ใน $PATH แล้ว)
โค้ดใน start_firefox_cctv.sh
#!/bin/bash
# ====== หาโฟลเดอร์โปรไฟล์ Firefox ======
PROFILE_DIR=$(grep -E '^Path=' ~/.mozilla/firefox/profiles.ini | head -n 1 | cut -d= -f2)
# ====== ลบไฟล์ session เก่า ======
rm -f ~/.mozilla/firefox/$PROFILE_DIR/sessionstore.jsonlz4
rm -f ~/.mozilla/firefox/$PROFILE_DIR/sessionCheckpoints.json
rm -f ~/.mozilla/firefox/$PROFILE_DIR/recovery.jsonlz4
rm -f ~/.mozilla/firefox/$PROFILE_DIR/recovery.baklz4
# ====== เปิด Firefox แบบไม่ใช้ session เดิม ======
nohup firefox --new-instance --no-remote \
http://test.com/1.html \
http://test.com/2.html \
http://test.com/3.html \
>/dev/null 2>&1 &
อธิบายโค้ดสคริปต์นี้ทีละบรรทัด
#!/bin/bash
บอกระบบว่าไฟล์นี้เป็น สคริปต์ bash
# ====== หาโฟลเดอร์โปรไฟล์ Firefox ======
PROFILE_DIR=$(grep -E '^Path=' ~/.mozilla/firefox/profiles.ini | head -n 1 | cut -d= -f2)
- Firefox จะเก็บ session/tab เก่าไว้ใน โฟลเดอร์โปรไฟล์
- คำสั่งนี้ใช้
grepหาแถวที่ขึ้นต้นด้วยPath=ในไฟล์profiles.ini(ซึ่งบอกตำแหน่งโปรไฟล์) head -n 1→ เอาเฉพาะบรรทัดแรก (กรณีมีหลายโปรไฟล์)cut -d= -f2→ ตัดเอาค่า path หลังเครื่องหมาย=- ผลลัพธ์เก็บในตัวแปร
$PROFILE_DIRเช่นabcd1234.default-release
# ====== ลบไฟล์ session เก่า ======
rm -f ~/.mozilla/firefox/$PROFILE_DIR/sessionstore.jsonlz4
rm -f ~/.mozilla/firefox/$PROFILE_DIR/sessionCheckpoints.json
rm -f ~/.mozilla/firefox/$PROFILE_DIR/recovery.jsonlz4
rm -f ~/.mozilla/firefox/$PROFILE_DIR/recovery.baklz4
Firefox จะจำแท็บที่เปิดล่าสุดไว้ในไฟล์พวกนี้
sessionstore.jsonlz4→ เก็บแท็บที่เปิดล่าสุดsessionCheckpoints.json→ เก็บ checkpoint ของ sessionrecovery.jsonlz4และrecovery.baklz4→ เก็บข้อมูลกู้คืน session เผื่อโปรแกรม crash
การลบไฟล์เหล่านี้ทิ้ง = เคลียร์ประวัติแท็บที่เปิดไว้ → ทำให้ Firefox เริ่มแบบ “หน้าใหม่”
# ====== เปิด Firefox แบบไม่ใช้ session เดิม ======
nohup firefox --new-instance --no-remote \
http://test.com/1.html \
http://test.com/2.html \
http://test.com/3.html \
>/dev/null 2>&1 &
nohup→ รันโปรแกรมโดยไม่ผูกกับ terminal (ไม่ถูก kill ตอน logout/autostart)firefox --new-instance --no-remote--new-instance→ บังคับเปิด Firefox ใหม่ แม้มี instance เดิมอยู่--no-remote→ ป้องกันไม่ให้ไป reuse session เดิม
- ด้านหลังเป็น URL ที่ต้องการเปิดในแท็บใหม่
>/dev/null 2>&1→ ซ่อนข้อความที่ Firefox ส่งออกมา (ทั้ง stdout และ stderr)&→ รัน Firefox เป็น background process ทำให้สคริปต์ไม่ต้องรอ
สรุป:
- สคริปต์หาตำแหน่งโฟลเดอร์โปรไฟล์ Firefox
- ลบไฟล์ session เดิมออก เพื่อไม่ให้เปิดแท็บเก่า
- สั่ง Firefox เปิดใหม่ด้วย URL ที่ต้องการ โดยรันแบบ background ไม่ถูก kill ทิ้ง
