如何实现开机后自动运行一行或多行代码?

如何实现开机后自动运行一行或多行代码?

实际上我只是想在启动后自动运行以下一行代码来实现这个天才尤基键盘设置:

setxkbmap eurkey

下列的本指南,其原始示例运行正常,但我进行了以下操作,但没有成功:

# create systemd service file
$ sudo touch /etc/systemd/system/eurkey.service
$ sudo nano /etc/systemd/system/eurkey.service
  [Unit]
  After=network.service

  [Service]
  ExecStart=/usr/local/bin/eurkey.sh

  [Install]
  WantedBy=default.target

# create script
$ sudo touch /usr/local/bin/eurkey.sh
$ sudo nano /usr/local/bin/eurkey.sh 
  #!/bin/bash
  setxkbmap eurkey

# set permissions
$ sudo chmod 744 /usr/local/bin/eurkey.sh
$ sudo chmod 664 /etc/systemd/system/eurkey.service

# enable service unit
$ sudo systemctl daemon-reload
$ sudo systemctl enable eurkey.service

# reboot
$ sudo reboot

但是,代码无法执行。我遗漏了什么?为什么指南中的代码可以运行,而我自己的代码行却不行?我计划稍后添加任意数量的行(我将其称为脚本)。这是错误的方法吗?

我在这里找到了一个非常相似的指南询问 Ubuntu

答案1

如果你想在 Gnome 启动时启动一个脚本,请查看这里。如果 X 服务器尚未运行,并且您没有在每次 X 服务器启动后(手动!)启动终端,则输入不会setxkbmap.bashrc帮助。警告:我没有尝试任何“解决方案”,因为我验证了以下解决方案并且它有效:

如果您在系统上编辑两个文件(以超级用户身份 - 一定要小心!),那么您可以让每个用户自己配置布局,并且再也不用担心它:

sudo nano /usr/share/X11/xkb/rules/evdev.xml

并在变体 altgr-intl 下方插入以下内容:

    <variant>
      <configItem>
        <name>eu</name>
        <!-- Keyboard indicator for European layouts -->
        <shortDescription>eu</shortDescription>
        <description>EurKEY (US based layout with European letters)</description>
        <languageList>
          <iso639Id>cat</iso639Id>
          <iso639Id>dan</iso639Id>
          <iso639Id>eng</iso639Id>
          <iso639Id>est</iso639Id>
          <iso639Id>fao</iso639Id>
          <iso639Id>fin</iso639Id>
          <iso639Id>ger</iso639Id>
          <iso639Id>gre</iso639Id>
          <iso639Id>gsw</iso639Id>
          <iso639Id>ita</iso639Id>
          <iso639Id>lav</iso639Id>
          <iso639Id>lit</iso639Id>
          <iso639Id>nld</iso639Id>
          <iso639Id>nor</iso639Id>
          <iso639Id>por</iso639Id>
          <iso639Id>spa</iso639Id>
          <iso639Id>swe</iso639Id>
        </languageList>
      </configItem>
    </variant>

(我从中取出这个/usr/share/X11/rules/evdev.extra.xml并替换layoutvariant。请注意,缺少法语:如果您选择法语,则将找不到此变体(见下文)。)下一次编辑:

sudo nano /usr/share/X11/xkb/rules/xorg.lst

并在 altgr-intl 下面插入一行:

      eurkey          us: English (US based layout with European letters)

您需要做的最后一件事是重新配置 xkb-data:

sudo dpkg-reconfigure xkb-data

现在,用户将能够运行gnome-control-center(又名“设置”),转到“区域和语言”并添加键盘布局:

gnome-control-center 中的语言选择

选择English (United States)并向下滚动一段时间后看到以下内容:

在此处输入图片描述

选择 EurKEY,即使系统关闭并重新启动,用户也无需再进行任何操作。换句话说:setxkbmap eu不再需要!


EurKEY 的集成方式可能存在问题。setxkbmap eu它在我的 Ubuntu 20.04 上开箱即用,但我在任何地方都找不到它gnome-control-center(如果 EurKEY 网站上的“键盘布局配置面板”是指这个意思的话)。

在他们的网站,有一个eurkey.deb。查看内部(ar -x eurkey.debtar xvf control.tar.gz),我们发现一个postinst脚本,该脚本可以编辑中的一些 xml 文件/usr/share/X11/xkb/rules。编辑的内容与分发的内容不同,但我使用它来查看他们是如何做到的。他们正在添加一个名为的布局eu,但我不知道如何选择语言eu。再说一次,我不是专家。

我们确实开发了一种altgr-intl更适合欧洲语言的替代方案,在这个过程中我们必须相似的东西新的布局。

很难做出适合每个人的键盘布局。欧基是在德国制造的,它显示:葡萄牙人经常使用 a-tilde 和 o-tilde,但它不在 EurKEY 上。我喜欢我们的新阿尔特格尔-韦尔更好,但我有偏见!

答案2

但是代码无法执行。我遗漏了什么?

确实如此,但不会保持活动状态:您所做的操作可能会被 systemd 链中后续发生的操作覆盖。您需要尽可能晚地执行此操作,但这在您切换布局时也不会保留,并且每次切换键盘时都需要重新执行此操作。

你可以放

setxkbmap eurkey

.bashrc在做完之后

vim ~/.bashrc 

有工作方法但这也无法在切换键盘后存活下来。

如果这是一个问题关联您发布的内容已经回答了需要做的事情:

应用布局

运行 setxkbmap

setxkbmap eurkey

或者从中选择 EurKEY键盘布局配置面板. EurKEY 提供以下语言的布局列表

最后一部分使其永久生效,并且当您切换键盘时也会应用它。

相关内容