Основываясь на моем случае, когда я впервые использовал расширенный монитор с Fedora 25, вот как я решил эту проблему.
Сначала проверьте свою сессию gnome, использует ли она Wayland или Xorg, вы можете проверить это, выполнив эту команду
xrandr -q
Если отображается ваше мониторное устройство, подобное Xwayland0
или Xwayland1
, вы должны перейти на использование Xorg.
Во-вторых , измените сеанс на использование xorg, если вы используете wayland, отредактировав файл по адресу
/etc/gdm/custom.conf
Затем раскомментируйте строку WaylandEnable=false
, чтобы отключить ее.
# GDM configuration storage
[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false
[security]
[xdmcp]
[chooser]
[debug]
# Uncomment the line below to turn on debugging
#Enable=true
Третий перезагрузите компьютер, чтобы изменения вступили в силу
В-четвертых, проверьте разрешение экрана, выполнив команду xrandr -q
еще раз, для каждого устройства будет разная информация
Screen 0: minimum 8 x 8, current 3046 x 1050, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 310mm x 170mm
1366x768 60.10*+
1024x768 60.00
1024x576 60.00
960x540 60.00
800x600 60.32 56.25
864x486 60.00
640x480 59.94
720x405 60.00
680x384 60.00
640x360 60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1680x1050+1366+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*+
800x600 60.32 56.25
848x480 60.00
640x480 59.94
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
информация выше взята из моих (она может отличаться от вашей, например)
Пятое , как видите, у меня нет разрешения VGA1
больше, чем 1024x768
, но мне нужно настроить монитор, подключенный к VGA1
, на разрешение 1680x1050
, вот хитрости
Шесть Создайте собственное разрешение экрана с помощью cvt , в данном случае я хочу добавить разрешение1680x1050
cvt 1680 1050
cvt будет выдавать информацию типа
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
затем на следующем этапе мы создадим наш режим разрешения на основе этой информации
xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA1 "1680x1050_60.00"
как вы можете видеть, две приведенные выше команды создадут новый режим, назначив --newmode
разрешение экрана 1680x1050_60.00
и добавив этот режим разрешения, используя --addmode
на моем подключенном мониторе на VGA1
(. Убедитесь, что ваш монитор подключен, проверьте с помощьюxrandr -q
)
Затем для Последнего шага мы применяем это разрешение к нашему монитору, которое в этом примере равно VGA1
, выполнив эту команду
xrandr --output VGA1 --mode 1680x1050_60.00
Если все шаги были выполнены правильно, дисплей вашего монитора теперь должен отображаться на выбранном дисплее, вы также можете проверить это, выполнив команду xrandr -q
, и, поскольку эта инструкция основана на моем опыте,извините меня, если этот метод все еще не помогает для вас.
*советы Если у вас есть случай, когда ваш монитор просто мерцает после того, как вы установили вывод или добавили режим, сначала создайте резервную копию файла на ~/.config/monitors.xml
, а затем удалите его
printf
может позаботиться об этом, почти:
printf "%s\0" "$a" "$b" "$c"...
printf
повторяет свою строку формата столько раз, сколько необходимо, в данном случае по одному разу для каждого аргумента, так что в итоге за каждым аргументом следует нулевой байт.
Чтобы избавиться от последнего нулевого байта, используйте GNUhead
:
printf "%s\0" "$a" "$b" "$c"... | head -c-1
Встроенная функция Zsh print
также может делать это без постобработки -:
print -rNn "$a" "$b" "$c"...
(-r
отключает обработку перехода, -N
печатает аргументы, разделенные и заканчивающиеся нулевыми байтами, -n
отключает терминальную новую строку. Спасибо steeldriver за подсказку!)
Команда printf
будет повторять формат столько раз, сколько необходимо, поэтому мы можем просто выполнить
print "%s\0"
Мы можем увидеть это в действии:
$ printf "%s\0" hello there | hdump -8
00000000 68 65 6C 6C 6F 00 74 68 hello.th
00000008 65 72 65 00 ere.
$ printf "%s\0" hello there everyone out there | hdump -8
00000000 68 65 6C 6C 6F 00 74 68 hello.th
00000008 65 72 65 00 65 76 65 72 ere.ever
00000010 79 6F 6E 65 00 6F 75 74 yone.out
00000018 00 74 68 65 72 65 00 .there.
Обратите внимание, что также помещает терминальный NUL в конец строки. Если вы этого не хотите, мы можем удалить его, например, с помощьюsed 's/.$//'
$ printf "%s\0" hello there everyone out there | sed 's/.$//' | hdump -8
00000000 68 65 6C 6C 6F 00 74 68 hello.th
00000008 65 72 65 00 65 76 65 72 ere.ever
00000010 79 6F 6E 65 00 6F 75 74 yone.out
00000018 00 74 68 65 72 65 .there