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

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

如何进行?

12.04(和11.10)

简短的回答是: hibernate是最好的选择,因为gnome-session-savefunction在11.04之后被删除,因为它是错误的,并且手动重新启用此function的官方调整似乎不起作用。 本答案的B部分描述了如何使用替代hibernate方法TuxOnIce ,它现在比内置hibernate更兼容和可靠。

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

  • 注意:如最后所述,此官方调整似乎不起作用 – 您可能希望直接跳到B.使用TuxOnIcehibernate
  • 此Launchpad错误讨论了恢复“保存会话”function。 它目前标记为“已修复”,因为2012年4月在gnome-session软件包中引入了一个补丁,允许用户手动重新启用此function。 该补丁将自身描述为:

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

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

    • 在此处输入图像描述

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

    • 现在重新启动(注销也应该工作,但只是为了安全)
  • 修补程序( 源 )执行的操作是禁用“启动应用程序”中的“ 选项”选项卡,该选项卡用于包含“ 注销时记住正在运行的应用程序”选项。 它检查GNOME_SESSION_SAVE变量,如果设置(非空),它应该启用会话保存,就像记住…框已存在并被选中一样。 这就是为什么这个bug被标记为“固定”的原因
    •   if(g_getenv(“GNOME_SESSION_SAVE”)!= NULL)
                       maybe_load_saved_session_apps(经理); 
    • 不幸的是,它似乎没有用,正如错误跟踪器中的评论32所证实的那样。
    • 我甚至尝试禁用补丁并从源代码重建gnome-session 。 这会使“ 选项”复选框再次显示,但它不执行任何操作。
    • 但是,嘿,它可能以某种方式为你工作! 🙂

B.现在有用 :使用TuxOnIce增强hibernate

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

    更兼容的替代方案: TuxOnIce

  • TuxOnIce ( wiki | 主页 )是内核内置hibernate技术的替代品,应该更兼容,更可靠,更灵活。

  • 它很容易安装,如果它不适合你,就像容易删除。
  • 它确实需要安装TuxOnIce的自定义内核,但是后面的说明应该很容易。 如果您之前从未打开过终端,您现在可能想要:-)

    0.要求

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

  • 使用Ctrl + Alt + T启动终端

  • 键入free -m ,你应该看到这样的东西:

     缓存的总使用的免费共享缓冲区
    纪录:1024 731 260 0 0 190
     -  / + buffers / cache:540 451
    交换:1536 6 1530
    
  • Swap:后的数字Swap:例如1536)应该大于Mem:之后的数字Mem:例如1024)

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

    1.安装TuxOnIce内核

  • 使用Ctrl + Alt + T启动终端

  • 将以下内容复制并粘贴到终端中。 这会添加TuxOnIce PPA并安装自定义内核和标头。
    •  sudo apt-add-repository ppa:tuxonice / ppa -y 

      一旦加入ppa:

    •   sudo apt-get update
       sudo apt-get install tuxonice-userui linux-generic-tuxonice -y 
       sudo apt-get install linux-headers-generic-tuxonice -y 
  • 现在重启。
  • Ubuntu现在应该启动TuxOnIce内核。 如果有任何问题,请在启动时按住Shift键,您将获得Grub菜单。 使用箭头键转到Previous Linux Versions ,按Enter键,然后再次按Enter键返回工作内核。

    2.测试hibernatefunction。

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

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

    在此处输入图像描述

    • 如果TuxOnIce工作,您的计算机将关闭。
    • 再次启动,等待。 TuxOnIce应该从您hibernate的点恢复,包括您在打开的位置打开的所有窗口。
  • 如果这一切都有效,请转到步骤3,它允许您从仪表板启用Hibernate。

    3.从仪表板启用hibernate

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

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

      [默认情况下重新启用hibernate]
    身份= UNIX用户:*
    行动= org.freedesktop.upower.hibernate
     ResultActive = YES 

    在此处输入图像描述

  • 重启,您应该看到Hibernate选项,如下所示:

    在此处输入图像描述

    4.删除TuxOnIce

    • 如果TuxOnIce不适合您,或者您只是希望将其删除,请启动终端并输入:

        sudo apt-get remove tuxonice-userui linux-generic-tuxonice linux-headers-generic-tuxonice -y 
    • 并记得在菜单中禁用Hibernate选项:

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

11.04及更早版本

试试这个

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

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

  1. 下载并安装DConf-Editor。

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

DASH-IMG

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

然后选择gnome-session

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

APP-IMG

DONE!

现在,当您关闭计算机时,当前会话将自动保存。 下次你转动它就像你离开时一样。

似乎不可能让所有应用程序记住它们的最后窗口位置和大小。 这种行为似乎很久以前就被删除了。 我的理解是应用程序负责记住自己的位置和大小。 这就是谎言。

通过错误跟踪器进行搜索会产生许多报告,这些报告在某种程度上与此问题相关。

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

注意:请编辑并填写您已针对此function测试的Ubuntu的应用程序和版本。 即应用程序记住窗口位置和/或大小。

请指定您测试过的Ubuntu版本,以及是否记住一个或两个窗口的post和大小。

13.04

窗口位置| 尺寸

  • Y,Y – 鹦鹉螺
  • N,Y – Firefox 不稳定的多显示器位置
  • N,N – 终端 终端具有自定义设置,以便每次都记住特定大小,但它不会记住最后一个位置
  • N,Y –
  • Y,Y – 女
  • N, – – 计算器 不可resize *
  • N,Y – Gedit

错误报告示例

以下是来自错误跟踪器中的一些简单搜索的一些随机错误报告,例如“记住窗口位置” 。

2013

  • thunderbird不记得窗口 1208647的位置

2012

  • debconf gtk +对话框不记得ubuntu上的窗口大小。 1097089
  • 更新管理器不记得它在屏幕 928434 上的位置
  • 系统(GIMP)窗口不记得它的大小 998030

2011

  • Firefox不记得关闭和重启 876862 之间的窗口大小和位置
  • 窗口管理 – 当应用程序启动时,窗口应该在之前的确切位置 767232 重新打开

2009年

  • Firefox不记得窗口 349740 的大小和位置
  • Thunderbird不记得GNOME中的窗口位置。 330779

2008年

  • 在开始 204480 之间不记住窗口位置
  • 使用Compiz时; Firefox总是从左上角 198328开始

  • 侏儒窗的定位有时不稳定 204372

2007年

  • 记住+使用WM_WINDOW_ROLE或窗口标题设置 124315 恢复应用程序的窗口位置
    • ubuntu不记得窗口位置 1100924
    • 通过插件和重启 409539 忘记显示切换的大胆窗口位置
    • 应用程序窗口不会恢复到上一个​​已知位置 391533
    • Gtk应用程序始终显示在屏幕的右上角 387700 开始
    • metacity不记得会话恢复 354674 上的窗口位置
  • 天气小程序的窗口应该记住它的屏幕位置 108952

12.04

作为一种解决方法,您可以在12.04 重新启用hibernate ,并使用它关闭您的电脑,然后将所有应用程序仍在使用中将其唤醒。

输入终端:

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

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

[重新启用hibernate]
Identity = unix-user:* Action = org.freedesktop.upower.hibernate
ResultActive = YES

这条路 :

在此处输入图像描述

然后在关机菜单上再次显示hibernate选项:

在此处输入图像描述

希望它会有所帮助。

目前认为正确的会话保存/恢复function是使用suspend或hibernate。 我同意,如果他们没有开箱即用,那么hibernate和暂停可能会让他们感到痛苦……

但看看……

CryoPID

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

CryoPID是在软件暂停邮件列表的讨论中产生的,该列表涉及暂停和恢复单个进程的复杂性。

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

特征

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

虽然最近发布的DEB是针对Heron而且该网站最后一次更新于2005年所以它可能没用。 这是tarball:

  • i386 tarball
  • x86_64 tarball

还看看Tuxonice

TuxOnIce最容易被描述为Linux的等效于Windows的hibernatefunction,但更好。 它将内存的内容保存到磁盘并关闭。 当计算机再次启动时,它会重新加载内容,用户可以从中断的位置继续。 不需要重新加载文档或重新打开应用程序,并且该过程比正常关闭和启动快得多。

 ppa:tuxonice/ppa 

PPA已经预编译了Ubuntu内核,其中已经编译了TuxOnIce,userui二进制文件和hibernate脚本。 所以它可能不适合胆小的人。


有一个可能值得关注的解决方法:

  • 创建一个包含您打算打开的所有程序的脚本。 或者创建这些脚本中的2,3,4,5,6并将密钥绑定到此脚本。 喜欢控制+ alt + 1 | 2 | 3 | 4 | 5 | 6或者如果使用其他东西。 点击密钥,让脚本打开该脚本中的所有程序。

  • 你可以使用这样的东西如何将应用程序从工作区1转移到2,使用命令将它们扔到另一个工作区,如果你想将它们分组。

不是你要求的,但似乎我们被认为是寻找变通方法:)

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

IMG

您需要启用以查看startup-aplication上的所有应用程序。 在终端上运行此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获取此提示,也许它会引起您的兴趣。

对不起我的英语!

Saludos!

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

1。

CryoPID但是它没有很好的记录,最后发布的DEB是针对Heron的,该网站最后一次更新于2005年,因此它可能毫无用处。

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

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

特征

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

这是tarball:

  • i386 tarball
  • x86_64 tarball

2。

Tuxonice可能这是你更好的选择,可能会奏效。

TuxOnIce最容易被描述为Linux的等效于Windows的hibernatefunction,但更好。 它将内存的内容保存到磁盘并关闭。 当计算机再次启动时,它会重新加载内容,用户可以从中断的位置继续。 不需要重新加载文档或重新打开应用程序,并且该过程比正常关闭和启动快得多。

 sudo add-apt-repository ppa:tuxonice/ppa 

PPA已经预编译了Ubuntu内核,其中已经编译了TuxOnIce,userui二进制文件和hibernate脚本。 所以它可能不适合胆小的人。


有一个可能值得关注的解决方法:

  • 创建一个包含您打算打开的所有程序的脚本。 或者创建这些脚本中的2,3,4,5,6并将密钥绑定到此脚本。 喜欢控制+ alt + 1 | 2 | 3 | 4 | 5 | 6或者如果使用其他东西。 点击密钥,让脚本打开该脚本中的所有程序。

  • 你可以使用这样的东西如何将应用程序从工作区1转移到2,使用命令将它们扔到另一个工作区,如果你想将它们分组。

我不被允许复制某人的答案,所以来源 。