X-сервер не показывает встроенный дисплей ThinkPad. Искажение всего в незеркальной установке мультидисплея.

Я недавно возвратился к человечности (14.10), и я в настоящее время пытаюсь получить мой, несколько контролируют установку для работы правильно.

Это хорошо работало после первой установки в желаемой конфигурации: 1600x900 встроенный монитор (Thinkpad T430), кроме того, 1920x1200 внешний монитор (Asus VK226H), который соединен DVI или VGA или mDP.

Однако после первой перезагрузки это приветствовало меня 'выбранной конфигурацией для дисплеев, не мог быть применен' и показал мне частично наложение и высоко исказил фон странным размещением средства запуска, и нефункциональное взаимодействие мыши (не нажимает, где это показывают). Переключение на зеркальный режим сделало все функциональным снова.

Взглянув на Конфигурацию X-сервера, я заметил, что только внешний монитор представлен в графическом расположении и выпадающее меню 'Выбора', в то время как дисплеи показывает им обоим. 'Выбранная конфигурация для дисплеев не могла быть применена', начал открываться почти каждый раз, когда я применяю что-то к дисплеям или X-серверу, применяю что-то к дисплеям, перезагрузке или повторно подключаю внешний монитор (неважно, который порт).

так как это - новая Учетная запись, мне не разрешают встроить изображения. Вот является 2 снимка экрана с версией драйвера 331 показом обоих дисплеев и конфигурации X-сервера прежде и после того, как мне удалось получить все видимое/не наложение после перезагрузки. В то время как это было в большой степени искажено вдоль измерения по вертикали (и части рабочего стола вне экрана) на физических экранах, это не отражается в снимке экрана

Перестав работать ужасно с большим количеством настроек X Server, я решил попробовать драйверы прежней версии. Я произвел чистку формирователей тока с помощью этого метода и установил 304 версии хотя программное обеспечение и Обновления. То же самое произошло. Это работало после начальной настройки и установки, но перестало работать снова после перезагрузки. Встроенный монитор все еще не обнаружился в X-сервере.

Так как это не достигло ничего, что я вернулся назад к 331 и попробовал его еще раз тем же результатом. Все выглядит хорошо мне в lshw и dpkg.

dpkg -l | grep nvidia
ii  nvidia-331                                           331.113-0ubuntu0.1                       amd64        NVIDIA binary driver - version 331.113
ii  nvidia-331-uvm                                       331.113-0ubuntu0.1                       amd64        NVIDIA Unified Memory kernel module
ii  nvidia-opencl-icd-331                                331.113-0ubuntu0.1                       amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                                         0.6.7                                    amd64        Tools to enable NVIDIA's Prime
ii  nvidia-settings                                      331.20-0ubuntu8                          amd64        Tool for configuring the NVIDIA graphics driver

sudo lshw -C display
   *-display               
        description: VGA compatible controller
    product: GF108M [NVS 5400M]
    vendor: NVIDIA Corporation
    physical id: 0
    bus info: pci@0000:01:00.0
    version: a1
    width: 64 bits
    clock: 33MHz
    capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
    configuration: driver=nvidia latency=0
    resources: irq:48 memory:f0000000-f0ffffff memory:c0000000-cfffffff memory:d000
0000-d1ffffff ioport:4000(size=128) memory:f1000000-f107ffff

В этой точке я понятия не имею, что сделать, так как это - очевидно, проблема с размещением моих экранов на виртуальном экране, но это не показывает всем им в меню конфигурации. Как я заставляю это обнаруживаться так, чтобы я мог настроить все правильно?

Любая справка значительно ценилась бы.

Если Вы должны еще зарегистрировать извлечения или другую информацию, сообщенную мне.

2
задан 13 April 2017 в 15:24

1 ответ

Хорошо, это - немного сценария жемчуга, который устанавливает право конфигураций дисплея снова после того, как перезагрузка уничтожает их. Так как я заставил своего локального героя Linux писать это для меня, я только понимаю приблизительно половину из него. Таким образом, возможно, необходимо задать развить вопрос заставить это работать на Вас.

#!/usr/bin/perl

# settings
our @preferred_outputs = qw(HDMI1 VGA1 LVDS1);
our $poll_interval_seconds = 5.0; #this script actually keeps running and
     # periodically checks whether I plugged in my external monitor or not
our $sleep_seconds_at_start = 5.0; #this is the important bit
our $sleep_after_set = 5.0;

# end of settings

use strict;
use feature ":5.10";
use Time::HiRes qw(sleep);

sub eq_hashes (\%\%);

fork && exit;
#this is to make sure this script runs only once... I think
my @pids = split /\s+/, qx/pgrep -x `basename '$0'`/;
my @other_pids = grep { $_ != $$ } @pids;

if(@other_pids > 0) {
    kill "TERM", @other_pids;
}

sleep $sleep_seconds_at_start;

my %old_mode = get_default_mode();
set_auto_mode();
sleep $sleep_after_set;

while(sleep $poll_interval_seconds) {
    my %cur_mode = get_default_mode();
    unless(eq_hashes(%cur_mode, %old_mode)) {
        %old_mode = %cur_mode;
        set_auto_mode();
        sleep $sleep_after_set;
    }
}

sub eq_hashes (\%\%) {
    my ($h1, $h2) = @_;
    return hashref_to_string($h1) eq hashref_to_string($h2);
}

sub hashref_to_string {
    my $m = $_[0];
    return join "\0", map { $_, $m->{$_} } sort keys %$m;
}

#so this seems to be using xrandr to find out the resolution of the screen
#and then it returns that value 
sub get_default_mode {
    open my $xrout, "-|", "xrandr"
        or die $!;

    my %default_mode;
    my $cur_output;

    while(<$xrout>) {
        given($_) {
            when(/^(\w+) connected/) {
                $cur_output = $1;
            }
    #xrandr prints all possible resolutions, and puts a + next to the default one
            when(/^\s*(\d+x\d+)\s+[0-9.]+.\+/) {
                $default_mode{$cur_output} = $1;
            }
        }
    }

    close $xrout;

    return %default_mode;
}

sub set_auto_mode {
    my %default_mode = get_default_mode();
    my @opts;
    my $display_chosen = 0;

    for my $output (@preferred_outputs) {
        push @opts, "--output", $output;
        if(exists $default_mode{$output} && $display_chosen == 0) {
            push @opts, "--mode", $default_mode{$output};
            $display_chosen = 1;
        }
        push @opts, "--off";
    }

    system "xrandr", @opts;
}

Хорошо, таким образом, я не знаю, знакомы ли Вы с жемчугом. Этот сценарий в основном использует xrandr для реализации всех конфигураций. Таким образом, у Вас должны быть xrandr и жемчуг, установленный, чтобы это работало. Но я думаю, что это могло бы на самом деле работать из поля (если я понимаю Вашу проблему правильно). Возможно, необходимо играть вокруг с xrandr немного.

Моя установка такова, что у меня есть разные вещи на моих двух экранах, и они, как предполагается, друг рядом с другом. Если я помню правильно. Я действительно не вижу, где в сценарии, который происходит, но так или иначе фиксация разрешений экранов добилась цели для меня. (Я не могу сделать никакого тестирования теперь, потому что у меня нет своего второго экрана под рукой.)

Это - очевидно, взлом, таким образом, я был бы счастлив, если бы было более каноническое решение (и кто-то мог бы отправить его).

0
ответ дан 3 December 2019 в 00:52

Другие вопросы по тегам:

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