我可以以不同方式设置我的xfce工作区吗?

我目前有四个工作区(’主’,’游戏’,’工作’,’溢出’)。 在完美的设置中,“游戏”工作区可以为Steam和个人游戏提供快捷方式(在桌面或面板中)。

切换到“工作”不应该与游戏相关,而是使用Google Docs链接和所有与工作相关的文件的快捷方式。

在xfce4中可以实现独特的自定义工作空间吗?

如果我们将设置限制为每台桌面有一组不同的启动器 ,那么它并不复杂。 我们需要的是一个脚本,在后台运行以跟踪当前工作空间并相应地自动更改启动器集。

1.每个工作区有一组发射器

假设我有四个工作区,我希望以下启动器可用于不同的工作区:

工作区1> 工作区2> 工作区3> 工作区4>

在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

  • 工作区1:Firefox / Idle
  • 工作区2:Gcolor2 / Gimp图像编辑器/ Inkskape
  • 工作区3:Abiword / Gnumeric / Mail Reader
  • 工作区4:地雷/数独

如何设置

  1. 该脚本使用wmctrl

     sudo apt-get install wmctrl 
  2. 在您的主目录中(不在子目录中,但在“第一”级别),创建一个名为的目录(确切地说):

     desktop_data 

    在这个目录中,为每个桌面创建一个名为(完全)的文件夹:

     desktop_1 desktop_2 desktop_3 desktop_4 

    <图像5/>“></p>
</li>
<li>
<p> 为桌面上的所有应用程序(适用于所有工作区)创建启动器,并将它们复制到相应的文件夹。 </p>
</li>
<li>
<p> 将下面的脚本复制到一个空文件中,将其另存为<code>change_launchers.py</code> 。 通过在终端窗口中运行命令来测试运行它: </p>
<pre> <code>python3 /path/to/change_launchers.py</code> </pre>
<p> 如果一切正常,请将其添加到启动应用程序中 </p>
<p>  <em>剧本</em> </p>
<pre class= #!/usr/bin/env python3 import subprocess import os import time import shutil home = os.environ["HOME"] desktop_dir = home+"/"+"Desktop" data_dirstr = home+"/desktop_data/desktop_" get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8") def get_desktop(): return [l for l in get("wmctrl -d").splitlines() if "*" in l][0].split()[-1] while True: curr_dt1 = get_desktop() time.sleep(1) curr_dt2 = get_desktop() # alter the set of launchers when workspace changes if not curr_dt1 == curr_dt2: datafolder = data_dirstr+curr_dt2 for f in [f for f in os.listdir(desktop_dir)if f.endswith(".desktop")]: subject = desktop_dir+"/"+f os.remove(subject) for f in os.listdir(datafolder): subject = datafolder+"/"+f; target = desktop_dir+"/"+f shutil.copyfile(subject, target) subprocess.call(["/bin/bash", "-c", "chmod +x "+target])

注意

在Ubuntu的不同本地化版本中,“Desktop”文件夹的名称可能不同(荷兰语:“Bureaublad”)。 如果在您的Ubuntu版本中桌面文件夹的名称不是“桌面”,请在行中更改它:

 desktop_dir = home+"/"+"Desktop" 

2.扩展可能性,发射器和链接

如果我们向脚本添加几行,则可以使用更改指向目录链接来扩展每个工作区的设置选项:

在一个工作区中,我们有一个指向Documents文件夹的链接,以及办公应用程序的启动器:

在此处输入图像描述

在另一个工作区,我们有一个指向图片文件夹的链接,以及图像编辑器的启动器:

在此处输入图像描述

如何设置

设置与选项1中的设置非常相似,但另外,在数据文件夹中(请参阅选项1),创建指向文件夹的链接(使用ln -s ),您希望在相应工作区:

在此处输入图像描述

剧本

 #!/usr/bin/env python3 import subprocess import os import time import shutil home = os.environ["HOME"] desktop_dir = home+"/"+"Desktop" data_dirstr = home+"/desktop_data/desktop_" get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8") def get_desktop(): return [l for l in get("wmctrl -d").splitlines() if "*" in l][0].split()[-1] while True: curr_dt1 = get_desktop() time.sleep(1) curr_dt2 = get_desktop() # alter the set of launchers & links when workspace changes if not curr_dt1 == curr_dt2: datafolder = data_dirstr+curr_dt2 for f in os.listdir(desktop_dir): subject = desktop_dir+"/"+f if os.path.islink(subject) or subject.endswith(".desktop") : os.remove(subject) for f in os.listdir(datafolder): subject = datafolder+"/"+f; target = desktop_dir+"/"+f if os.path.islink(subject): os.symlink(os.readlink(subject), target) else: shutil.copy(subject,target) 

其他一些桌面环境(如KDE)本身提供此function,但这仅在XFCE中得到部分支持。

什么在XFCE本地工作:

  • 您可以在每个工作区上设置不同的墙纸,这是完全支持的,可以通过工作区设置GUI轻松配置。
  • 您可以将面板影响到特定工作区,但AFAIK没有允许配置此选项的GUI选项,但下面的脚本将负责所有内容。

我采用的解决方案:

  1. 为每个工作区创建一个新面板。 您还可以创建将在所有工作空间中显示的补充全局面板(某些元素,如通知栏只能添加一次,因此在每个工作空间中显示它的唯一方法是将其添加到全局面板)。
  2. 配置并运行下面的脚本,将每个本地面板分发到自己的工作区。
  3. 配置XFCE以在每次启动时运行脚本。
  4. 按照您的意愿配置面板。

与其他答案相反,此脚本不会作为无限循环运行,每秒都会获取状态。 它在会话开放期间仅运行一次,以便将每个本地面板关联到它们自己的工作空间,之后所有其余的由窗口管理器本地处理。

 #! /bin/sh # First panel to move start=2 # Number of panels to move count=$( wmctrl -d | wc -l ) desk=0 for winid in $( wmctrl -l | grep 'dom0 xfce4-panel$' \ | awk "NR==$start,NR==$(( start + count - 1 )) { print \$1; }" ) do wmctrl -i -r $winid -b remove,sticky wmctrl -i -r $winid -t $desk desk=$(( desk + 1 )) done 
  1. 将此脚本保存为您的主目录中的local-panels.sh ,并使其可执行( chmod u+x ~/local-panels.sh

  2. 配置脚本以满足您的需求:

    • $start :XFCE为您的面板编号,这是您想要制作本地的第一个面板的编号。 这里第一个面板保持全局,面板2及其后面是他们自己的工作区本地。
    • $count :要制作本地的面板数量。 默认情况下,这等于工作空间的数量,即。 每个工作区一个不同的本地面板
    • $desk :第一个拥有本地面板的工作区。 默认情况下,每个工作空间都有一个本地面板,但如果您希望将此变量设置为更高的值,则可以在前几个工作空间中没有本地面板。
  3. 配置XFCE以在会话打开时自动启动此脚本:进入XFCE设置管理器 > 会话和启动 ,单击应用程序自动启动选项卡,然后单击添加按钮以在每个会话打开时安排脚本的执行。