يوليو 23، 2011

إعداد دقة العرض و خريطة لوحة المفاتيح من سطر الأوامر على غنو+لينكس

من المعلوم عند مستخدمي غنو+لينكس أن ملف إعدادات العرض xorg.conf المتواجد داخل مجلد إعدادات النظام /etc/ لم يعد ضروريا لعمل خادوم العرض X.org X11 نظرا لأن هذا الآخير أصبح قادرا (منذ آواخر 2008) على التعرف على بطاقة العرض و التعريف و الإعدادات المناسبة لها بشكل تلقائي.

أيضا، هذا الملف كان يستخدم في تحديد إعدادات لوحة المفاتيح و توليفة الأزرار المستخدمة في تبديل الخرائط. هذا أيضا لم يعد ضروريا لأن تعريف evdev يتيح للبيئات المكتبية مثل كيدي (KDE) و جينوم (Gnome) و إكس اف سي إي (XFCE) إعداد لوحة المفاتيح بكل مرونة و هي بدورها - سابقا و الآن - تتيح للمستخدم إعداد لوحة المفاتيح بكل سهولة مستعملا واجة رسومية.

لكن ماذا تفعل عندما تصادف إعدادات غير مناسبة و في نفس الوقت تستخدم واجهات رسومية محدودة الخصائص (عمدا كي تبقى خفيفة الوزن) ؟

بفرض أن تعريف بطاقة العرض المناسب مثبت أو باستخدام التعريف العام vesa، سنستخدم أداة xrandr المثبتة افتراضيا مع خادم العرض.

من سطر الأوامر سننفذ:
xrandr

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

Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
VGA1 disconnected (normal left inverted right x axis y axis)
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1280x800       60.0*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
TV1 disconnected (normal left inverted right x axis y axis)

علامة * تعني أن دقة الشاشة 1280x800 هي الدقة الحالية المستخدمة.
علامة + تعني أن دقة الشاشة 1280x800 هي الدقة التي ينصح بها.
بالنسبة 60.0 في تعني التردد المستخدم.


اﻵن لتغير الدقة مثلا : 1024x768 إما نفذ
xrandr  -s 1024x768
أو حسب ترتيبها في قائمة المخرجات (الترتيب يبدأ من 0)
xrandr  -s 1

لإختيار دقة 800x600 بتردد 60.3 ننفذ:
xrandr  -s 2  -r 60


بالنسبة لإعدادات لوحة المفاتيح فيمكن معرفة الإعدادات الحالية بتنفيذ:
setxkbmap -print
المخرجات كالتالي:
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)"    };
    xkb_types     { include "complete"    };
    xkb_compat    { include "complete"    };
    xkb_symbols   { include "pc+us+inet(evdev)"    };
    xkb_geometry  { include "pc(pc104)"    };
};

في مخرجات setxkbmap نجد أن خريطة المفاتيح هي أمريكية، اﻵن لتغير خريطة لوحة المفاتيح إلى الفرنسية سننفذ:
setxkbmap fr
إسبانية
setxkbmap es
المملكة المتحدة
setxkbmap gb

لتحديد خريطتين معا كالفرنسية و العربية بتوليفة alt+shift لتغيير الخريطة سننفذ:
setxkbmap fr,ar -option "grp:alt_shift_toggle"

لتحديد خريطتين معا كالإنجليزية للمملكة المتحدة و العربية بتوليفة alt+shift لتغيير الخريطة مع إضاءة زر إقفال اللف (Scroll Lock) عند التغيير، سننفذ:
setxkbmap gb,ar -option "grp:alt_shift_toggle,grp_led:scroll"

لتحديد خريطتين معا كالفرنسية و العربية بتوليفة alt+shift لتغيير الخريطة مع إضاءة زر إقفال الأحرف الكبيرة (Scroll Lock) عند التغيير، سننفذ:
setxkbmap fr,ar -option "grp:alt_shift_toggle,grp_led:caps"

هاتين الطريقتين: تغيير دقة الشاشة و تغيير خريطة المفاتيح تعمل بطريقة أنية و لا تصمد أمام إعادة تشغيل النظام أو إعادة تشغيل خادم العرض. في حالة رغبتك في إستخدام دقة معينة أو خريطة معينة يفضل أن تستعين بأحد ملفات تخصيص الجلسة مثل:
~/.profile
~/.bash_profile
~/.bash_login
أو أن تنشئ ملف إعدادات ثابت بواسطة خادم العرض نفسه
X -configure 
cp -iv xorg.conf.new /etc/X11/xorg.conf

و تعدل على ملف /etc/X11/xorg.conf.d/10-evdev.conf بحيث أن جزئية "evdev keyboard catchall" ستصبح
Section "InputClass"
    Identifier "evdev keyboard catchall"
    MatchIsKeyboard "on"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
        
    # Keyboard layouts
    Option "XkbLayout" "gb, ar"
    #Option "XkbVariant" ", phonetic"
    Option "XkbOptions" "grp:alt_shift_toggle, grp_led:scroll, terminate:ctrl_alt_bksp"
EndSection


لكن عليك أولا إيقاف مدير تسيير الجلسات gdm أو kdm أو غيره حسب التوزيعة أو النظام.
مثال على أبونتو/دبيان بواجهة جينوم:
/etc/init.d/gdm stop
أو
/etc/init.d/gdm3 stop
مثال على فيدورا بواجهة كيدي:
service kdm stop
مثال على أوبن بي إس دي:
إضغط على ctrl+alt+del, سجل الدخول ثم نفذ
pkill -9 xdm



بعض الإستخدامات و الإعدادات المتقدمة:

لمعرفة دقة/جودة الخطوط (dpi) المستخدمة نفذ:
xdpyinfo  | grep -i dots

النتيجة كالتالي :
resolution:    96x96 dots per inch

دقة 96x96 مناسبة. كلما زادت كلما تضخمت الحروف و العكس صحيح.

عموما الإصدارات الحديثة لأغلب التوزيعات تقدم خطوطا بجودة عالية من دون تدخل المستخدم، خصوصا على توزيعة أبونتو بخطها المميز و المتوفر للجميع. لكن في بعض الإستثناءات أضطر إلى تحديد كل شيء يدويا على الملفين ~/.fonts.conf و ~/.Xdefaults

محتوى ~/.fonts.conf الذي أستخدمه
<fontconfig>
<match target="font" >
   <edit mode="assign" name="rgba" >
       <const>none</const>
       <!-- <const>rgb</const> -->
       <!-- <const>vrgb</const> -->
       <!-- <const>bgr</const> -->
       <!-- <const>vbgr</const> -->
   </edit>
</match>

<match target="font" >
   <edit mode="assign" name="hinting" >
       <bool>true</bool>
   </edit>
</match>

<match target="font" >
   <edit mode="assign" name="hintstyle" >
       <!-- <const>none</const> -->
       <const>hintslight</const> <!-- best with autohint true -->
       <!-- <const>hintmedium</const> -->
       <!-- <const>hintfull</const> --> <!-- best with autohint false -->
   </edit>
</match>

<match target="font" >
   <edit mode="assign" name="antialias" >
       <bool>true</bool>
   </edit>
</match>

<match target="font">
   <edit mode="assign" name="lcdfilter">
     <const>lcddefault</const>
     <!-- <const>lcdlight</const> -->
     <!-- <const>lcdlegacy</const> -->
     <!-- <const>lcdnone</const> -->
   </edit>
</match>

<match target="pattern" >
   <edit mode="assign" name="autohint" >
       <bool>false</bool>
       <!-- <bool>true</bool> -->
   </edit>
</match>
</fontconfig>

محتوى ~/.Xdefaults الذي أستخدمه
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintslight
Xft.hinting: 1
Xft.antialias: 1
Xft.dpi: 96
#Xft.rgba: rgb


بالنسبة لمعرفة حالة تسريع العتاد فيمكن تنفيذ أحد هذه الأوامر:
cat /var/log/Xorg.0.log | grep DRI
المخرجات:
(II) Loading extension XFree86-DRI
(II) Loading extension DRI2
(II) intel(0): [DRI2] Setup complete
(II) intel(0): [DRI2]   DRI driver: i965
(II) intel(0): direct rendering: DRI2 Enabled
(II) GLX: Initialized DRI2 GL provider for screen 0

أو تنفيذ:
cat /var/log/Xorg.0.log | grep -i glx
المخرجات:
(II) LoadModule: "glx"
(II) Loading /usr/lib/xorg/modules/extensions/libglx.so
(II) Module glx: vendor="X.Org Foundation"
(==) AIGLX enabled
(II) Loading extension GLX
(II) AIGLX: enabled GLX_MESA_copy_sub_buffer
(II) AIGLX: enabled GLX_INTEL_swap_event
(II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
(II) AIGLX: enabled GLX_SGI_make_current_read
(II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
(II) AIGLX: Loaded and initialized /usr/lib/dri/i965_dri.so
(II) GLX: Initialized DRI2 GL provider for screen 0

أو الإستعانة بأداة glxinfo إن كانت مثبتة:
glxinfo | grep -i render
المخرجات:
direct rendering: Yes
OpenGL renderer string: Mesa DRI Mobile Intel® GM45 Express Chipset \
        GEM 20100330 DEVELOPMENT x86/MMX/SSE2



بالنسبة لمعرفة التعريف المستخدم مع بطاقة العرض فيمكن تنفيذ أحد هذه الأوامر:
cat /var/log/Xorg.0.log | grep -i matched | grep -i "driver 0"
المخرجات:
(==) Matched intel as autoconfigured driver 0

أو تنفيذ:
cat /var/log/Xorg.0.log | grep -i loading | grep -i driver
أو
cat /var/log/Xorg.0.log | grep -i loading

المخرجات:
(II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so

(II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
(II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
(II) Unloading /usr/lib/xorg/modules/drivers/vesa_drv.so
(II) Unloading /usr/lib/xorg/modules/drivers/fbdev_drv.so



مصادر و مراجع:
* X Window System Version 11 Current Release
* Documentation for the X Window System Version 11 Release 7.6 (X11R7.6)
* Ubuntu Wiki - X / Config / Resolution
* Fluxbox Wiki - Change resolution

ليست هناك تعليقات:

إرسال تعليق