0%

تخصيص دقة الشاشة في لينكس

في بعض الأحيان قد يفشل نظام اللينكس في التعرف على بعض أنماط أو دقة شاشة العرض والأسباب قد تعود إلى مشاكل في معرفات كرت الشاشة أو مشاكل في الشاشة نفسها و أحيانا تكون بسبب كبل الشاشة خصوصا عند استخدام التقنيات التماثلية مثل VGA. التقنيات الرقمية مثل HDMI و DisplayPort اقل عرضة بكثير لمثل هذه المشاكل.

في هذا الموضوع سوف اشرح طريقة إضافة نمط مدعوم من قبل الشاشة لكن لم يستطع النظام التعرف عليه [* هذه الطريقة لن تسمح باستخدام دقة أعلى أو اقل مما تدعمه الشاشة لان تلك حدود مصنعية]. لنفرض أن شاشتك تدعم دقة عرض [1920x1080] وتسمى Full HD و FHD واحيانا 2K ولكن عند تشغيل النظام لم تعرف عليها واستخدم دقة اقل مثلا [1280x1024]. قم أولا بتنفيذ أمر xrandr لعرض الأنماط التي تعرف عليها:

1
2
3
4
5
6
7
8
9
$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1024
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
   1280x1024     75.02    60.02*
   1024x768      75.08    60.00  
   800x600       75.00    60.32  
   640x480       75.00    60.00  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

في الخرج السابق نجد انه لم يتعرف على النمط المطلوب مع أن الشاشة تدعمه وكذلك تعرفنا على أن الشاشة متصلة عن طريق منفذ VGA1 وان النمط الافتراضي (انظر إلى علامة النجمة *) هو [1280x1024].

نقوم بعدها بإضافة النمط المطلوب: أولا نقوم باستخراج إعدادات الشاشة المطابقة لذلك النمط باستخدام أمر cvt مع الدقة المطلوبة، نفذ التالي:

1
2
3
$ cvt 1920 1080
\# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

السطر الثاني هو المهم و ما بين علامتي التنصيص “1920x1080_60.00” هو اسم النمط ويمكن تغييره (بل انصح بتغييره إلى “1920x1080” وذلك بحذف الجزء الأخير المتعلق بتردد الشاشة لكي لا يسبب مشكلة لاحقا)

بعد ذلك نقوم بإضافة النمط الجديد باستخدام الناتج من السطر الثاني أعلاه لكن بدون كلمة Modeline مع تغيير الاسم ثم ربطة مع منفذ الشاشة التي نستخدمها:

1
2
3
$ xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

$ xrandr --addmode VGA1 "1920x1080"

لو ظهرت رسالة خطا فتأكد من صحت البيانات المدخلة وان الشاشة تدعم هذا النمط، أما إذا لم تظهر أي رسائل فالخطوة التالية هي تجربة النمط الجديد والتحقق من صلاحيته مع الشاشة بالأمر التالي:

1
$ xrandr --output VGA1 --mode "1920x1080"

بعد تنفيذ الأمر السابق هناك احتمالان، الأول هو أن تعمل الشاشة بشكل سليم مع النمط الجديد وتستطيع استكمال العمل أما الاحتمال الثاني فهو أن لا تكون الشاشة متوافقة مع النمط الجديد فتظهر الشاشة سوداء أو صورة غير مقروءة فهنا يلزم إعادة تشغيل الواجهة الرسومية أو إعادة تشغيل الجهاز. توجد طريقة أخرى لتجنب إعادة التشغيل وهي تجربة الأمر السابق ثم الانتظار لبعض الوقت ثم إعادة الشاشة لنمط معروف توافقه مسبقا كالتالي (ثلاث أوامر في سطر واحد):

1
$ xrandr --output VGA1 --mode "1920x1080" ; sleep 5 ; xrandr --output VGA1 --mode "1280x1024"

الأمر الأول ينفذ النمط الجديد التجريبي، والأمر الثاني ينتظر 5 ثواني خلالها تستطيع الحكم إذا كان النمط في الأمر الأول ناجحا أم لا والأمر الأخير يعيد النمط الافتراضي (راجع أول المقالة بخصوص النمط الافتراضي) لكي لا نضطر لإعادة التشغيل في حال كان النمط غير مناسب للشاشة.

في حال نجح الأمر السابق وعملت الشاشة مع النمط الجديد فيجب إضافته إلى إعدادات النظام لكي يعمل حتى بعد إعادة التشغيل، حيث إن الأمر السابق لا يحفظ الإعدادات الا في حال كان الاستخدام مؤقتا كربط الحاسوب مع جهاز عرض “بروجيتور”. في حال الرغبة في تثبيت الامر بالإمكان جمع الأوامر السابقة في ملف script وجعلها تنفذ بعد تشغيل الواجهة الرسومية لكن لا انصح بها او اتبعاع الطريقة الصحيحة وهي باضافة ملف يالنمط الجديد لمجلد اعدادات X11.

قم بانشاء ملف باسم “10-monitor.conf” تحت مجلد /etc/X11/xorg.conf.d/ (تحتاج صلاحيات روت للكتابة في ذلك المجلد) واكتب بداخل الملف التالي:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Section "Monitor"
    Identifier             "Monitor0"
    Modeline "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
EndSection

Section "Screen"
    Identifier             "Screen0"
    Device                 "VGA1"
    Monitor                "Monitor0"
    DefaultDepth           24
    SubSection             "Display"
        Depth              24
        Modes              "1920x1080"
    EndSubSection
EndSection

يجب مراعاة تغيير النمط “1920x1080” واسم منفذ الشاشة “VGA1” لما يناسبك ثم قم بإعادة التشغيل. في حال وجود مشكلة بعد إعادة التشغيل ادخل على النظام من الطرفية “Terminal” واحذف الملف السابق.