想象一下你正在自学的情况,你突然想起你明天需要提交作业,所以你现在需要做这些事情。现在,您关闭选项卡并打开有关您工作的新网站。处理完所有事情后,您需要旧选项卡,这些选项卡已经关闭。现在你在历史中到处寻找它们,浪费了很多时间。
我想运行一个脚本来转储当前在 Firefox 中打开的所有 URL,从中我可以使用xargs
类似的方法恢复旧会话。添加书签似乎不是一个解决方案,因为我在需要时从未找到它们。
我认为这可能有帮助
lsof -ai
但这没有用。这可以通过一些 bash 脚本来解决吗?如果不可能的话我会尝试使用xdotool
答案1
题外话,我会尽力向您展示书签并没有那么糟糕。您所需要的只是为您保存的会话起一个好名字。
当您右键单击选项卡时,您可以选择Bookmark All Tabs
。然后会出现一个弹出窗口,您可以命名将包含所有选项卡的文件夹。
恢复会话也如此简单。在书签中找到会话文件夹,右键单击并选择Open All in Tabs
。
答案2
这OneTab 扩展正是这样做的。它也适用于 Chromium/Chrome。
答案3
我正在使用 Firefox 69 和建议的方法 https://support.mozilla.org/en-US/questions/1221836对我有用。
不久,当前打开的选项卡列表将存储在
<fx_profile>/sessionstore-backups/recovery.jsonlz4
.顾名思义,它是一个使用 LZ4 压缩的 JSON 文件。
对其进行备份并使用此在线工具转储打开的选项卡列表:https://www.jeffersonscher.com/ffu/scrounger.html。
答案4
Arkadiusz 的回答非常好,但问题是该recovery.jsonlz4
文件包含太多我不知道如何处理的数据。https://support.mozilla.org/en-US/questions/1221836给出了一个很好的提示如何去做。
我编写了一个dmenu
包装器 bash 脚本,该脚本将文件recovery.jsonlz4
本身复制到具有给定名称的某个位置,并在需要时进行恢复。
#!/bin/bash
SESSIONS="$HOME/.netsessions/"
PROFILE="$HOME/.mozilla/firefox/<use-your-profile>.default/"
[[ ! -d $PROFILE ]] && notify-send Firefox "Profile was not found" && exit 0
[[ ! -d $SESSIONS ]] && mkdir -p $SESSIONS
fireicon=/usr/share/icons/Paper/512x512/apps/firefox.png
subs=`ls "$SESSIONS"`
opt=$(echo -e "Create\nOpen\nDelete"| dmenu -fn "Droid Sans Mono-20" -i -p "firefox session:")
[[ "$opt" = "" ]] && exit 1
if [ "$opt" = "Create" ]; then
(! pidof firefox > /dev/null ) && notify-send -t 1000 -i $fireicon Firefox "Firefox is not running" && exit 1
opt1=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-20' -i -p "Name it to create")
if [ -z "$opt1" ]; then
exit 0
fi
cp $PROFILE/sessionstore-backups/recovery.jsonlz4 $SESSIONS/$opt1 > /dev/null && notify-send -t 1000 -i $fireicon Firefox "Session created" && exit 0
elif [ "$opt" = "Open" ]; then
opt2=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-20' -i -p "Name it to open")
if [ -z "$opt2" ]; then
exit 0
fi
killall firefox >/dev/null 2>&1
cp $SESSIONS/$opt2 $PROFILE/sessionstore.jsonlz4 > /dev/null
setsid firefox >/dev/null 2>&1 &
elif [ "$opt" = "Delete" ]; then
opt3=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-15' -i -p "Name it to delete")
if [ -z "$opt3" ]; then
exit 0
fi
rm "$SESSIONS"/"$opt3" > /dev/null && notify-send -t 1000 -i $fireicon group "Session deleted" && exit 0
elif [ -z "$opt" ]; then
exit 0
fi
我使用键绑定来调用此脚本。如果可以进行任何改进,请告诉我。
附:我使用的是火狐浏览器69