GRUB :Любой способ иметь второй тайм-аут или выбор, или горячую клавишу?

Думаю, вы могли бы объединить их вот так:

sh -c 'sleep 0.5; xdotool type "$(xclip -o -selection clipboard)"'

просто для привязки клавиш к выбору текста. Вы должны убедиться, что мета-клавиши -в привязке не нажимаются, когда он пытается запустить команду (xdotool, создает нажатия клавиш, и он не отпускает для вас клавишу Ctrl ).

Во-вторых, по умолчанию xclipвыбирает буфер XA_Primary, а не XA_CLIPBOARD. Таким образом, вы должны передать буфер обмена в качестве параметра выбора для xclip.

Или просто:

sh -c 'sleep 0.5; xdotool type "lorem@ipsum.com"'

xclipодин:

sh -c 'echo "lorem@ipsum.com" | xclip -sel clip && xclip -out -sel clip'

Но это длинная, перегруженная команда (лично мне это не нравится ).

0
15.09.2021, 05:06
1 ответ

Спасибо @shaola за то, что указал мне правильное направление! Оказывается, никакой конфигурации не требуется, по крайней мере, на моей машине. Оказывается, в grub они уже встроены! Я заподозрил, когда заметил все это уже в/etc/grub.d/10_linux:

hotkey=1
incr_hotkey()
{
  [ -z "$hotkey" ] && return
  expr $hotkey + 1
}
print_hotkey()
{
  keys="123456789abdfgijklmnoprtuvwyz"
  if [ -z "$hotkey" ]||[ $hotkey -eq 0 ]||[ $hotkey -gt 30 ]; then
    return
  fi
  echo "--hotkey=$(expr substr $keys $hotkey 1)"
}

linux_entry ()
{
  os="$1"
  version="$2"
  type="$3"
  args="$4"

  if [ -n "${linux_root_device_thisversion}" ]; then
    root_device="root=${linux_root_device_thisversion}"
  else
    root_device=""
  fi

  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      case $type in
      recovery)
          title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
      *)
          title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
      esac
      if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
      replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
      quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
      title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
      grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' $(print_hotkey) ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
      hotkey=$(incr_hotkey)
  else
      echo "menuentry '$(echo "$os" | grub_quote)' $(print_hotkey) ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
      hotkey=$(incr_hotkey)
  fi      
  if [ x$type != xrecovery ] ; then
      save_default_entry | grub_add_tab
  fi

  # Use ELILO's generic "efifb" when it's known to be available.
  # FIXME: We need an interface to select vesafb in case efifb can't be used.
  if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
      echo "    load_video" | sed "s/^/$submenu_indentation/"
      if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \
      && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then
      echo "    set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
      fi
  else
      if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
      echo "    load_video" | sed "s/^/$submenu_indentation/"
      fi
      echo "    set gfxpayload=$GRUB_GFXPAYLOAD_LINUX" | sed "s/^/$submenu_indentation/"
  fi

  echo "    insmod gzio" | sed "s/^/$submenu_indentation/"

Я не совсем блестящий программист -на самом деле я даже не могу сообразить, что это за язык (если только это не его собственный )но я предположил, что существует автоматическое увеличение горячей клавиши для каждого элемента в списке, и то, что моя установка openSUSE находится в верхней части списка, означает, что мне просто нужно нажимать 1во время загрузки и ждать признаков того, что я не принудительно подключаюсь к ОС из компания, которая хочет подражать Apple, захватив мою жизнь, загрузив Linux.

Кроме того, если у вас есть установка, подобная моей (или, по крайней мере, как у меня в этом отношении )и вы хотите попробовать идею @shaola, мне пришлось запустить grub2-mkconfigвместо grub-update. Вероятно, что-то типа дистрибутива или версии. Определенно не моя область знаний, чтобы сказать.

0
18.09.2021, 12:15

Теги

Похожие вопросы