如何保存/记住应用程序的上次使用窗口位置和大小?


58

当我登录Ubuntu时,希望在上一个会话中打开的所有窗口(主要是终端和Firefox)以相同的大小和位置自动重新打开。

如何进行?


1
如您在这里所读此功能已被删除。我建议更改您的问题,并要求采取等效的解决方法来提供赏金。
雅各布2012年

2
为什么?自从您提供了赏金后,您是否无法编辑问题?否则,我会问类似“是否有解决方法的主意?”的问题。因为这是一个有趣的问题!
雅各布2012年

2
“我想要一个答案,而不是链接。请指定我应该做的所有事情,以解决我面临的问题。” 如果您需要一种达到此目的的方法,则必须弄脏手指:+
Rinzwind'5

2
错误报告:此处(2007-07-06)此处此处(2008-03-21)此处,其他应用程序:此处此处此处。还有更多!
杰拉德·罗氏

1
可能会给出适当的12.04答案的重复项?-或将欺骗合并到这里:askubuntu.com/questions/129339/…–
fossfreedom

Answers:


18

对于12.04(和11.10)

简短的答案是:休眠是最好的选择,因为gnome-session-save功能在11.04之后被删除,因为它有故障,并且手动重新启用此功能的官方调整似乎不起作用。该答案的B部分描述了如何使用替代的休眠方法TuxOnIce,该方法现在比内置的休眠方法更加兼容和可靠。

A.尝试启用旧的Gnome会话保存功能

  • 注意:如最后所述,此官方调整似乎无效-您可能需要直接跳至B。使用TuxOnIce进行休眠
  • 启动板错误讨论了如何恢复“保存会话”功能。由于gnome-session2012年4月在软件包中引入了补丁,因此用户可以手动重新启用此功能,因此当前标记为“已修复” 。该补丁将自己描述为:

    • 为想要添加代码的人添加GNOME_SESSION_SAVE环境变量
      仍然可以使用保存会话,因为它会破坏系统
      如果使用不当(LP:#771896)
  • 您可以通过将GNOME_SESSION_SAVE变量设置为非空值来启用此功能。这是如何做:

    • Alt+F2,键入gedit ~/.pam_environment,然后按Enter。
    • GNOME_SESSION_SAVE=1在文件末尾添加一行,如下所示:

    • 在此处输入图片说明

    • Ctrl+S保存,然后Ctrl+Q退出编辑器。

    • 现在重启(退出也应该可以,但为了安全起见)
  • 修补程序()的作用是禁用“ 启动应用程序”中的“ 选项”选项卡,该选项卡用于包含“ 注销时记住正在运行的应用程序”选项。但是它会检查GNOME_SESSION_SAVE变量,如果设置了该变量(非null),则应启用会话保存功能,就像“ 记住...”框已存在并已被选中一样。这就是该错误被标记为“已修复”的原因
    • 如果(g_getenv(“ GNOME_SESSION_SAVE”)!= NULL)
                      may_load_saved_session_apps(经理);
    • 不幸的是,正如错误跟踪程序中的注释32所证实的那样,它似乎不起作用。
    • 我什至尝试禁用补丁并gnome-session从源代码重建。这会使“ 选项”复选框再次出现,但是它什么也没做。
    • 但是,嘿,它可能会以某种方式为您服务!:)

B.目前有效的方法:使用TuxOnIce增强休眠功能

  • 休眠会将您当前的系统状态(包括会话,打开的应用程序等)保存到硬盘上,然后关闭计算机。再次启动它时,它会读取保存的状态并还原它,就像从未关闭过计算机一样。笔记本电脑用户通常使用这项技术来节省电池电量,但是没有理由也不能在台式机上使用它。
  • 休眠支持在Ubuntu / Linux中可用,但是在12.04中已禁用,因为它在许多系统上均无法正常工作。如果您需要更多信息,请参阅此问题此错误报告。

    更具兼容性的替代方法:TuxOnIce

  • TuxOnIcewiki | 主页)是内核内置的休眠技术的替代方法,它应具有更高的兼容性,更可靠的灵活性。

  • 它易于安装,如果对您不起作用,也可以轻松移除。
  • 它确实需要安装TuxOnIce的自定义内核,但是遵循以下说明应该很容易。如果您以前从未打开过终端,则可能现在要:-)

    0.要求

    TuxOnIce的唯一要求是交换分区的大小至少应与您拥有的内存(RAM)大小一样大。您可以通过以下方式进行检查:

  • Ctrl+ Alt+ 启动终端T

  • 输入free -m,您应该会看到类似以下内容:

                 已使用的可用共享缓冲区总数
    内存:1024731260 0 0190
    -/ +缓冲区/缓存:540451
    掉期:1536 6 1530
    
  • 后面的数字Swap:(例如,1536)应后比数Mem:(例如1024)

  • 如果不是这种情况,并且交换小于内存,则必须调整交换分区的大小并增加其大小,或者将TuxOnIce配置为使用特殊的交换文件。这超出了此答案的范围,但是如果您提出其他问题并在评论中提及,我将回答并解释如何做。

    1.安装TuxOnIce内核

  • Ctrl+ Alt+ 启动终端T

  • 将以下内容复制并粘贴到终端中。这将添加TuxOnIce PPA并安装自定义内核和标头。
    • 须藤apt-add-repository ppa:tuxonice / ppa -y
      然后添加了ppa:
    • sudo apt-get更新
      须藤apt-get install tuxonice-userui linux-generic-tuxonice -y 
      须藤apt-get install linux-headers-generic-tuxonice -y
  • 现在重启。
  • Ubuntu现在应该以TuxOnIce内核启动。如果有任何问题,请Shift在启动时保持按下状态,您将获得Grub菜单。使用箭头键转到Previous Linux Versions,按Enter,然后再次按Enter返回工作的内核。

    2.测试休眠功能。

  • 打开一些您通常使用的应用程序,例如Firefox,Thunderbird,LibreOffice等。

  • 使用Ctrl+ Alt+ 再次打开终端T
  • 键入sudo pm-hibernate,按Enter键,输入密码。
  • 您应该看到锁定屏幕一秒钟,然后看到TuxOnIce休眠进度屏幕,如下所示:

    在此处输入图片说明

    • 如果TuxOnIce工作正常,您的计算机将关闭。
    • 重新启动,然后等待。TuxOnIce应该从休眠点恢复,包括在打开位置打开的所有窗口。
  • 如果所有这些都起作用,请转到步骤3,该步骤可让您从仪表板上启用休眠。

    3.从仪表板启用休眠模式

  • Alt+ F2,输入以下内容,然后按Enter:

    gksudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
  • 粘贴以下内容,按Ctrl+ S保存并按Ctrl+ Q退出编辑器:

    [默认情况下重新启用休眠]
    身份= unix用户:*
    Action = org.freedesktop.upower.hibernate
    ResultActive =是

    在此处输入图片说明

  • 重新启动,您应该看到休眠选项,如下所示:

    在此处输入图片说明

    4.删除TuxOnIce

    • 如果TuxOnIce对您不起作用,或者您只想删除它,请启动终端并输入:

       sudo apt-get删除tuxonice-userui linux-generic-tuxonice linux-headers-generic-tuxonice -y
    • 并记住使用以下命令禁用菜单中的“休眠”选项:

      须藤rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
    • 然后重新启动。


3
这是一个非常彻底的答案,但我认为问题是“如何使应用程序记住其窗口大小和位置”,甚至在重新启动之间仍然存在。也许这甚至不是应用程序设置,也许不是窗口管理器?例如,所有当前的解决方案(包括devispie)对Firefox均无效。无论如何,它都会为我打开右上方。很好的答案。如果我的理解是正确的,则该问题可能需要再次编辑。
汤姆·布鲁斯曼

@ TomBrossman,IMO有点细微差别:OP希望在登录/启动时恢复注销/关机时桌面的“状态”,从技术上讲,它与记住实例化之间的最后大小/位置的应用程序有所不同。共识是,窗口管理器和应用程序开发社区之间的联系已经有一段时间了:每个人都认为确保保留应用程序窗口参数是另一方的责任。您提到的唯一真正的解决方法可能是每个保存/恢复位置的应用程序都有某种包装器脚本。
ish 2012年

1
对于我所见过的一个简单问题,这是最残酷的过度杀伤力,可能不值得换掉休眠位,并且我不会对我的任何计算机执行此操作,但是要彻底完成工作,则需要+150!
豪尔赫·卡斯特罗

我输入了“ free -m”,发现交换编号(255)小于内存交换编号(3841),所以我没有继续。如何解决此问题?谢谢。
led-Zepp

这个答案的对话框虽然很有趣,但分散了这个实际问题的细节。这个问题已经问了很多遍了。答案很少解决实际问题。OP并未尝试保存会话。他希望把他们从上次的大小和位置开始... Not remember & start same session...当开始使用应用程序(一个新的会话terminalfirefox),即使在相同的登录,Remember the last-used window size and position。这样可以节省很多时间,每次运行时尝试在每个会话上重新定位和调整应用程序大小……。
LD詹姆斯

11

对于11.04及更早版本

尝试这个

系统>启动应用程序>选项,然后选中注销后自动记住正在运行的应用程序,然后单击记住当前应用程序。


3
没有“选项”标签,v11.10?
Gerard Roche

7

似乎不可能让所有应用程序都记住其最后一个窗口的位置和大小。这种现象似乎已在很久以前消除了。我的理解是,记住自己的位置和大小是应用程序的责任。而这就是谎言。

通过错误跟踪器进行搜索会产生许多与该问题相关的报告。

那么,哪些应用程序会记住位置和大小,以及哪些版本的Ubuntu具有此功能?

注意:请编辑并填充已为此功能测试的Ubuntu应用程序和版本。也就是说,应用程序会记住窗口的位置和/或大小。

区分测试过的Ubuntu版本,并记住一个或两个窗口位置和大小。

13.04

窗口位置| 尺寸

  • Y,Y- 鹦鹉螺
  • N,Y- Firefox 不稳定的多监视器位置
  • N,N- 终端 终端具有自定义设置,可以每次记住特定的尺寸,但不会记住最后的位置
  • N,Y-
  • Y,Y-女
  • N,-- 计算器 不可调整大小 *
  • N,Y- Gedit

错误报告示例

这是一些通过错误跟踪器中的简单搜索(例如“记住窗口位置”)随机生成的错误报告。

2013年 2012年 2011年 2009年 2008年 2007年

您将Bullfrogblues钉在钉子上。您可能会添加ccsm中存在Ubuntu中for的实际功能。它的Place Windows详细信息位于:askubuntu.com/a/708984/29012
LD詹姆斯

Firefox在哪里保存其窗口大小和位置数据?
罗伊

5

如何在Ubuntu 11.04或更高版本上保存会话:

  1. 下载并安装DConf-Editor。

  2. dconf在破折号上键入并运行它。

达世币

按顺序打开下一个标签:org->gnome

然后选择 gnome-session

现在您应该看到auto-save-session如下图所示的选项,将其激活

应用程式

完成!

现在,当您关闭计算机时,当前会话将自动保存。下次转动时,将完全离开。


2
对于记住大小和位置的应用程序窗口,这似乎没有任何作用。
Gerard Roche

我不明白你在说什么。
卢西奥

1
在askubuntu.com上多次询问了这个问题。许多答案均未解决特定问题的具体问题。这与休眠无关,而是与打开启动terminal firefox应用程序,调整窗口大小和位置有关,然后在再次启动它时,大小和位置就是您刚刚设置的值。他没有试图撤回上一届会议。他只想将terminalfirefox应用从最后的大小和位置开始。来自同一应用的新会话/相同大小和位置。
LD詹姆斯

3

当前认为正确的会话保存/还原功能是使用暂停还是休眠。我同意,尽管休眠和挂起如果不开箱即用,可能会使工作变得很痛苦...

但是看看...

冷冻密码

CryoPID允许您捕获Linux中正在运行的进程的状态并将其保存到文件中。然后,此文件可用于稍后在重新启动后甚至在另一台计算机上恢复该过程。

CryoPID是在有关软件挂起邮件列表的讨论中产生的,有关挂起和恢复单个进程的复杂性。

CryoPID由称为冻结的程序组成,该程序捕获正在运行的进程的状态并将其写入文件。该文件是自执行和自解压缩的,因此要恢复进程,只需运行该文件。有关支持的内容的更多详细信息,请参见下表。

特征

  • 可以作为普通用户运行!(无需root权限)
  • 适用于2.4和2.6。
  • 适用于x86和AMD64。
  • 可以多次启动和停止流程
  • 可以在机器之间以及内核版本之间(在2.4到2.6和2.6到2.4之间测试)迁移进程。

但是,它的文档记录不是很好,上次发布的DEB是针对Heron的,并且该网站的最新更新时间是2005年,因此可能没有用。这是压缩包:

还可以看看Tuxonice

TuxOnIce最容易描述为Linux的Windows休眠功能的等同物,但更好。它将内存内容保存到磁盘并关闭电源。再次启动计算机时,它将重新加载内容,并且用户可以从上次停止的地方继续操作。无需重新加载文档或重新打开应用程序,此过程比正常的关机和启动要快得多。

ppa:tuxonice/ppa 

PPA已使用已经编译的TuxOnIce,userui二进制文件和休眠脚本预编译了Ubuntu内核。因此,可能不适合胆小的人。


有一种解决方法可能值得研究:

  • 创建一个脚本,其中包含您倾向于打开的所有程序。或创建这些脚本的2、3、4、5、6,然后将密钥绑定到该脚本。喜欢control + alt + 1|2|3|4|5|6或如果正在使用其他。按下键,然后让脚本打开该脚本中的所有程序。

  • 而且,您可以使用类似的方法将应用程序从工作区1转移到工作区2,并使用命令将它们扔到另一个工作区(如果您希望将它们分组)。

不是您的要求,但似乎我们被认为正在寻找解决方法:)


1
嗯..我想要对CryoPID进行足够的调整还需要一段时间,我们才能使其与3.0内核兼容。如果有什么捷径可以回答我的问题,那就是。谢谢林兹温德。
harisibrahimkv 2012年

看起来像是冷尸已经死在水中了。tuconice似乎充满希望。阅读有关它的一些积极反馈。没问题,@ harisibrahimkv在过去,我相当喜欢使用该选项(但也必须同意这是非常有问题的)。我确实有另一个选择,但实际上没有时间进一步研究:打开所有程序并将其发送到工作区的脚本怎么样?xdotool应该能够做到这一点吗?
Rinzwind

3

12.04

作为一种解决方法,您可以在12.04中重新启用休眠方式并使用它来关闭PC,然后在所有应用程序仍在使用的情况下将其唤醒。

输入终端:

须藤gedit /var/lib/polkit-1/localauthority/50-local.d/hibernate.pkla

然后将此字符串添加到文本文件:

[重新启用休眠]
Identity = unix用户:* Action = org.freedesktop.upower.hibernate
ResultActive = yes

这条路 :

在此处输入图片说明

然后,休眠选项将再次显示在关机菜单上:

在此处输入图片说明

希望它会有所帮助。


2
感谢您抽出宝贵的时间回答您的问题。但不幸的是,对于我的问题来说,休眠选项无法解决。
harisibrahimkv 2012年

1
该应用程序在桌面上运行什么?还是只是图标?(愤怒的小鸟/ firefox等),它很好...链接请:D:D:D:P
kernel_panic 2013年

我怀疑它只是墙纸,但我希望拥有一个像这样的图标主题
Openas 2014年

1

您可以启用与此类似的功能。您可以通过让Ubuntu记住位置并在注销/关闭时运行应用程序来实现。为此,请导航至系统>启动应用程序,然后在选项选项卡中选中“注销时自动记住正在运行的应用程序”,然后按“记住当前应用程序”按钮。

img


6
12.04在启动应用程序首选项中没有选项选项卡。
fragos 2012年

1

您需要启用以查看启动应用程序上的所有应用程序。在终端上运行以下bash命令: sudo sed -i's / NoDisplay = true / NoDisplay = false / g'/etc/xdg/autostart/*.desktop 之后,您将在启动应用程序中看到所有应用程序。

我从此链接http://www.webupd8.org/2012/04/things-to-tweak-after-installing-ubuntu.html中获得了提示,也许您会感兴趣。

对不起,我的英语!

礼炮!


3
感谢您提供的链接,因为我觉得它非常有用。但是我担心这不是我要找的答案。您所建议的内容将在启动应用程序菜单中显示在启动时实际运行的启动应用程序。
harisibrahimkv'5

0

在CCSM中,使用“放置Windows”和“调整大小窗口”插件。


1
出现“放置窗口”时,添加一些放置算法,或者要求您输入规则以匹配窗口并将其放置在特定位置。我无法简单地记住上次登录时放置窗口的位置。但是看起来很有用。
约翰·格鲁伯

2
您能否在答案中提供更多详细信息,如何使用这些插件来达到预期的效果?谢谢!
Christopher Kyle Horton 2012年

-1

1。

CryoPID 但是,它并没有得到很好的记录,上次发布的DEB是针对Heron的,该网站的最新更新时间是2005年,因此可能没有用。

CryoPID允许您捕获Linux中正在运行的进程的状态并将其保存到文件中。然后,此文件可用于稍后在重新启动后甚至在另一台计算机上恢复该过程。

CryoPID由称为冻结的程序组成,该程序捕获正在运行的进程的状态并将其写入文件。该文件是自执行和自解压缩的,因此要恢复进程,只需运行该文件。有关支持的内容的更多详细信息,请参见下表。

特征

  • 可以作为普通用户运行!(无需root权限)
  • 适用于2.4和2.6。
  • 适用于x86和AMD64。
  • 可以多次启动和停止流程
  • 可以在机器之间以及内核版本之间(在2.4到2.6和2.6到2.4之间测试)迁移进程。

这是压缩包:

2。

Tuxonice也许这是您的更好选择,并且可能会起作用。

TuxOnIce最容易描述为Linux的Windows休眠功能的等同物,但更好。它将内存内容保存到磁盘并关闭电源。再次启动计算机时,它将重新加载内容,并且用户可以从上次停止的地方继续操作。无需重新加载文档或重新打开应用程序,此过程比正常的关机和启动要快得多。

sudo add-apt-repository ppa:tuxonice/ppa

PPA已使用已经编译的TuxOnIce,userui二进制文件和休眠脚本预编译了Ubuntu内核。因此,可能不适合胆小的人。


有一种解决方法可能值得研究:

  • 创建一个脚本,其中包含您倾向于打开的所有程序。或创建这些脚本的2、3、4、5、6,然后将密钥绑定到该脚本。喜欢control + alt + 1|2|3|4|5|6或如果正在使用其他。按下键,然后让脚本打开该脚本中的所有程序。

  • 而且,您可以使用类似的方法将应用程序从工作区1转移到工作区2,并使用命令将它们扔到另一个工作区(如果您希望将它们分组)。

我不允许复制别人的答案,因此请注明出处


1
您已经从此处完全复制并粘贴了答案(askubuntu.com/questions/129339/…)。如果您将来要这样做-请添加引文来确认。
fossfreedom

@fossfreedom我可以发表某人的答案吗?我不会,如果不应该。
拉胡尔·维尔帕拉

@virpara:这可能是元数据,但是如果我要在答案中使用其中的任何部分,我会在开始时就认可源问题/ 答案
ish

1
如果它是某人答案的一部分,则在您的答案中使其明确。鉴于您复制了99%的答案,那么您应该仅链接到答案。请注意-我已经在问题的评论中链接了这个问题。在我看来,这两个Q非常相似,可能需要合并。
fossfreedom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.