نگاهی به ابزار Screen و قابلیت‌های کاربردی‌اش

hardstatus alwayslastline

hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'



# Default screens

screen -t shell1 0

screen -t shell2 1

screen -t server 2 ssh [email protected]

دو خط اول‌، یک استاتوس بار درست و درمان به خط فرمان اسکرین اضافه می‌کند که اطلاعاتش می‌تواند بسیار کمک کند‌. و در بخش Default screens نیز چند شل اولیه که می‌خواهیم پس از هر بار فراخوانی لینوکس به صورت Tab باز شوند را اعلان می‌کنیم. نمونه عکس زیر:

ذره‌ای که با آن کار کنید‌، متوجه شباهت زیادش به یک مدیر پنجره‌ی ساده می‌شوید‌. برای تنظیم پنجره‌های پیشفرض می‌توانید از فرمت زیر استفاده کنید‌:

screen -t <command to="" execute=""></command>

خوب حالا نوبت به شروع کار با screen می‌شود‌، که پس از فراخوانی‌اش در ترمینال می‌توانید با دستور‌های پایه‌ای زیر مقداری از قدرتش را تجربه کنید:

Ctrl+a 0-9 – سوئیچ بین پنجره‌های ۰ تا ۹

Ctrl+a Ctrl+n – سوئیچ به پنجره فعال بعدی

Ctrl+a Ctrl+p – سوئیچ به پنجره قبلی

Ctrl+a Ctrl+a – پرش به پنجره قبلی که در آن بودید

Ctrl+a A – تغییر نام نشست حاضر

Ctrl+a K – کشتن نشست حاضر پنجره

Ctrl+a c – ساختن پنجره جدید

قابلیت یاد‌آوری:

یک امکان جالب Screen این است که می‌توان آن را با Ctrl+a d به قولی دیتچ کرد (‌کلا بست گذاشت کنار) و سپس با دستور Screen -ls و کشف شماره اسکرین دیتچ شده به صورت زیر:

There is a screen on:

18851.shahin (Detached)

1 Socket in /home/shahin/.screen.

با آرگومان‌های زیر به اسکرین دیتچ شده بازگشت:

screen -r 18851
قابلیت اشتراک گذاری:

دیگر قابلیت فوق‌العاده screen قابلیت به اشتراک گذاریش است‌. فرض کنید می‌خواهید فعالیت خود را در ترمینال با دوست دیگرتان (‌چه حالا روی یک سیستم و چه از روی یک اتصال SSH) به اشتراک بگذارید‌ (‌مثلا برای آموزش). این‌جاست که screen وارد می‌شود. برای برپا سازی چنین ارتباطی به صورت زیر عمل می‌کنیم‌:

[As root]

chmod u+s /usr/bin/screen

chmod 755 /var/run/screen

حال از کاربر root خارج شوید و به عنوان کاربری که می‌خواهید screenاش به اشتراک گذاشته شود به سیستم متصل شده و دستورات زیر را بزنید‌:

ctrl+a :multiuser

ctrl+a :acladd shahin (به جای شاهین نام کاربری که می‌خواهید اسکرین را با او به اشتراک بگذارید را وارد کنید‌)

تا این‌جا کار کاربر میزبان به پایان رسیده‌. کاربر مهمان نیز تنها پس از اتصال به سیستم می‌تواند با زدن دستور screen -x shahinism/‎ که به جای shahinism نام کاربری میزبان را وارد کرده به سیستم متصل شود (‌به اکسلش پایان دستور توجه کنید‌).

اسکرین امکانات فوق‌العاده‌ی دیگری هم دارد که برای پی بردن به آن‌ها صفحه‌ی man این دستور مکان خوبی برای شروع است‌. بزرگترین مزیت استفاده از این ابزار برای من در مدیریت سرور است که با توجه به محدودیت حجمی و سرعت اینترنت نمی‌توانم به یک مدیر پنجره دسترسی داشته باشم.

یادداشتی در مورد conky و داشتن خروجی فارسی روی آن

امروز بر سر موضوع ایده‌ای برای افزودن یک ویجت جدید به میزکارم‌، پیگیر فارسی نویسی در conky شدم که با این روش خروجی تقریبا به درد بخوری می‌توان روی ترمینال هم داشت (‌بعضی مواقع متن روی ترمینال فوق‌العاده به هم ریخته می‌شود‌!)

تنها کار لازم برای این کار پایپ کردن متن مورد نظر (‌یا نتیجه‌ی خروجی یک برنامه‌ی دیگر‌) به نرم‌افزار fribidi است‌. برای مثال‌:

echo شاهین |fribidi

به همین راحتی D: با استفاده از این روش‌، و استفاده از نرم‌افزار jcal یک تقویم فارسی به ویجت‌هایم اضافه کردم که برای من کم حافظه امکان خوبی برای یاد‌آوری تقویم وطنی‌ام است ;-)

برای داشتن این ویجت‌ها روی کانکی می‌توانید به صورت زیر عمل کنید‌ (لینک روی github):

git clone https://github.com/shahinism/.conkyrc.git

cp .conkyrc/.* ~/

و آن را اجرا کنید‌. برای اجرای خودکارش روی Awesome هم می‌توان خط زیر را به rc.lua افزود:

awful.util.spawn_with_shell("conky")

نکته: برای ویجت وضعیت هوا از این پست فرود عزیز کمک گرفتم و آن را برای وضعیت هوای رشت تنظیم کرده‌ام‌، می‌توانید با خواندن این پست آن را با توجه به نیاز خود تغییر دهید(این اسکریپت در فایل ‎.weather.sh قرار دارد) ;-)

یادداشتی در مورد hibernate و suspend در لینوکس

این مقدمه را گفتم که بگویم‌، پس از مهاجرتم به مدیرپنجره‌ی Awesome به دنبال همین روش‌ها برای معرفی در پوسته‌اش بودم تا کارم را راحت کنم‌، و این مقدمه‌ی آشناییم با pm-utils بود‌. فریم‌ورکی که برای مدیریت وضعیت سیستم طراحی شده‌. و خوشبختانه به دلیل بسیار سبک بودن Awesome (‌البته حدس می‌زنم همین دلیل باشد‌) سیستم را به خوبی Suspend کرده و می‌توان به راحتی به نشست قبلی بازگشت‌.

با کاربر Root می‌توان با یکی از دو دستور زیر به این امکان دست یافت‌:

/usr/sbin/pm-hibernate

/usr/sbin/pm-suspend

اولی که برای خاموش کردن سیستم است‌. و دومی سیستم را در رم خاموش می‌کند و به سیستم این قابلیت را می‌دهد که در هنگام روشن شدن به وضعیت قبلی‌اش بازگردد (‌توجه داشته باشید که خاموش شدن در این وضعیت به دلیل وابستگی به Ram نیازمند ولتاژ اندکی از برق است تا اطلاعات پاک نشود، در صورت قطع برق سیستم‌، سیستم دوباره بوت می‌شود‌).

از آن‌جایی که این ابزار برای کار کردن نیاز به بعضی از دسترسی‌های ریشه دارد‌، پس با یک کاربر عادی نمی‌توان آن‌ها را اجرا کرد و به sudo نیاز است‌. از آن‌جایی هم که روی خوشی ندارد که هر بار برای خاموش کردن سیستم خودمان یک رمز وارد کنیم‌، می‌توان‌، دو خط زیر را به فایل sudoers (‌با استفاده از visudo) و بعد از خطوطی که دسترسی sudo را به کاربران اعلام کرده‌ایم اضافه کرد تا بدون پسوورد اجازه‌ی استفاده از این دستور را داشته باشیم‌:

username ALL= NOPASSWD: /usr/sbin/pm-hibernate

username ALL= NOPASSWD: /usr/sbin/pm-suspend

همچنین اگر دیگر خیلی مثل من تنبلید می‌توانید یک Alias تعریف کنید تا هر وقت تایپ کردید pm-hibernate خودش دستور sudo /usr/sbin/pm-hibernate را وارد کرده و سیستم را خاموش کند ;-)

ویکی آرچ اطلاعات ارزشمندی در این زمینه دارد که می‌تواند کمک کننده باشد.

نصب Awesome WM روی اسلکور

اولین کاری که باید انجام دهیم‌، کامپایل دوباره‌ی بسته‌ی Cairo با قابلیت پشتیبانی از xcb است‌. برای این کار در شاخه ‎/source/l/cairo در DVD اسلکور فایل cairo.SlackBuild را با یک ویرایشگر باز کرده و به دنبال عبارت ‎‎‏‎--enable-xcb بگردید‌. پس از یافتنش علامت # را از اول آن بردارید‌. یا آن بخش را به صورت زیر ویرایش کنید‌:

CFLAGS="$SLKCFLAGS" \

./configure \

--prefix=/usr \

--libdir=/usr/lib${LIBDIRSUFFIX} \

--mandir=/usr/man \

--sysconfdir=/etc \

--disable-gtk-doc \

--disable-glitz \

--disable-quartz \

--disable-static \

--enable-xcb \

--disable-win32

فایل را ذخیره کرده و مثل یک SlackBuild عادی نصبش کنید‌. حالا به شاخه‌ی ‎/source/l/startup-notification بروید و به ترتیب دستورات زیر را اجرا کنید‌:

rm startup-notification*.tar.bz2

wget -c http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz

gunzip startup-notification-0.12.tar.gz

bzip2 startup-notification-0.12.tar

VERSION=0.12 ./startup-notification.SlackBuild

upgradepkg /tmp/startup-notification-*.txz

حالا به شاخه ‎/source/x/x11/src/xcb در DVD بروید و دستورات زیر را اجرا کنید‌:

rm xcb-util-*

wget -c http://xcb.freedesktop.org/dist/xcb-util-0.3.8.tar.bz2 http://xcb.freedesktop.org/dist/xcb-util-image-0.3.8.tar.bz2 http://xcb.freedesktop.org/dist/xcb-util-renderutil-0.3.8.tar.bz2 http://xcb.freedesktop.org/dist/xcb-util-wm-0.3.8.tar.bz2 http://xcb.freedesktop.org/dist/xcb-util-keysyms-0.3.8.tar.bz2

cd $SLACKWARE_TREE/source/x/x11

for i in xcb-util xcb-util-keysyms xcb-util-renderutil xcb-util-wm xcb-util-image; do ./x11.SlackBuild xcb $i; done

upgradepkg --install-new /tmp/x11-build/xcb-util-*.txz

حال نوبت به نصب چند پیش‌نیاز می‌رسد‌. برای راحتی کار پیشنهاد می‌کنم sbopkg و src2pkg را دریافت و نصب کنید‌. باقی مراحل را با استفاده از این دو ابزار ادامه می‌دهیم‌.

برای نصب libev, lua, imlib2, giblib, feh به ترتیب دستورات زیر را وارد می‌کنیم‌:

sbopkg -i imlib2

sbopkg -i lua

sbopkg -i libev

sbopkg -i giblib

sbopkg -i feh

و حالا آخرین نسخه libxdg را از این آدرس دریافت کرده و به صورت زیر کامپایل می‌کنیم‌:

src2pkg libxdg-basedir-*.tar.gz

installpkg /tmp/libxdg*.txz

برای نصب oocairo و oopango نیز از دو اسکریپت به صورت زیر استفاده می‌کنیم‌:

mkdir oocairo

cd oocairo

wget -c https://raw.github.com/cycojesus/slackbuilds/master/l/oocairo/oocairo.SlackBuild

chmod +x oocairo.SlackBuild

./oocairo.SlackBuild

upgradepkg --install-new /tmp/oocairo-*.txz



cd ..

mkdir oopango

cd oopango

wget -c https://raw.github.com/cycojesus/slackbuilds/master/l/oopango/oopango.SlackBuild

chmod +x oopango.SlackBuild

./oopango.SlackBuild

upgradepkg --install-new /tmp/oopango-*.txz

و سرانجام نوبت به کامپایل خود Awesome می‌رسد‌. آن را از این صفحه دانلود و استخراج کنید. سپس فایل awesomeConfig.cmake را با یک ویرایشگر باز کرده و عبارت زیر را:

if(DEFINED SYSCONFDIR)

set(SYSCONFDIR ${SYSCONFDIR} CACHE PATH "config directory")

else()

set(SYSCONFDIR ${PREFIX}/etc CACHE PATH "config directory")

endif()

به صورت زیر ویرایش کنید‌:

if(DEFINED SYSCONFDIR)

set(SYSCONFDIR /etc CACHE PATH "config directory")

else()

set(SYSCONFDIR /etc CACHE PATH "config directory")

endif()

فایل را ذخیره کرده و دستور make را اجرا کنید‌. پس از به پایان رسیدن این دستور به صورت زیر عمل می‌کنیم‌:

mkdir /tmp/awesome-version

make install DESTDIR=/tmp/awesome-version

cd /tmp/awesome-version

makepkg -l y -c n /tmp/awesome-version.tgz

installpkg /tmp/awesome-version.tgz

و سرانجام پس از نصب Awesome برای این که بتوانیم آن را با xwmconfig انتخاب کنیم‌، دستور زیر را وارد کرده‌:

vim /etc/X11/xinit/awesome.xinit

و متن زیر را در آن وارد کنید:

```bash#!/bin/sh

$Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $

userresources=$HOME/.Xresources

usermodmap=$HOME/.Xmodmap

sysresources=/etc/X11/xinit/.Xresources

sysmodmap=/etc/X11/xinit/.Xmodmap

merge in defaults and keymaps

if [ -f $sysresources ]; then

/usr/bin/xrdb -merge $sysresources

fi

if [ -f $sysmodmap ]; then

/usr/bin/xmodmap $sysmodmap

fi

if [ -f $userresources ]; then

/usr/bin/xrdb -merge $userresources

fi

if [ -f $usermodmap ]; then

/usr/bin/xmodmap $usermodmap

fi

exec awesome

```

و سرانجام با دستور زیر به آن امکان اجرا می‌دهیم‌:

```bash

chmod +x /etc/X11/xinit/awesome.xinit

```.

در آینده‌ای نزدیک در مورد این مدیر پنجره و نحوه‌ی کار با آن بیشتر صحبت خواهم کرد ;-)

کنترل کامل فایرفاکس با کیبورد (Pentadactyl, Vimperator, Firemacs)

مزایای زیادی نداشت‌، تنها کاری که می‌کرد تبدیل کردن کلید‌های میانبر پیش‌فرض فایرفاکس به همتاهای ایمکسی‌شان بود‌. ولی خوب کار راه‌انداز بود‌ (‌چون میانبر‌های فایرفاکس را بلد نبودم D:).

اما چند روزی می‌شود که در همان آیدنتیکا سخن‌ها از افزونه‌ی Pentadactyl که فرکی از Vimpretor است گفته می‌شد. من هم که کلا از Vi تنها ویرایش و ذخیره‌ی فایل را می‌دانم‌، وسوسه به امتحانش شدم‌. پس از نصب افزونه‌، فایرفاکس به کلی زیر و رو شد‌! عکس زیر:

خط فرمان و صفحه‌ی Help بلافاصله علم شدند و به کمکم آمدند D: در یک کلام فوق‌العاده بود‌. برای منی که صفحه مانیتور کوچکم علاقه‌ام به ساده کردن صفحه‌ی مرورگرم را زیاد کرده بود‌، یک همچین نما و کارایی‌ای واقعا نهایت خواسته‌هاست D:

مزیت بزرگ دیگر افزونه‌، قابلیت تکمیل خودکار فایرفاکس است که با این افزونه نمود بهتری پیدا می‌کند‌. دیگر امکان جالبش این است که در هر جای اینترنت که خواستید چیزی بنویسید می‌توانید به Pentadactyl حالی کنید که ویرایشگر دسکتاپ محبوبتان را برایتان آماده کند تا متن را در آن بنویسید و خودش آن را در جای مناسب قرار دهد ;-)

این را هم اضافه کنم که من هنوز در مرحله‌ی یادگیری‌اش قرار دارم و هنوز مشکلات زیادی نیز با آن دارم‌. اما جدا ارزش وقت تلف کردن دارد.

تعدادی از کلید‌های کاربردی که تا اینجای کار با Pentadactyl پیدا کرده‌ام (‌برای انجام کار‌های رایج جستجو در مرورگر) به قرار زیر است:

  • j/k برای بالا پایین کردن صفحه به مقدار یک خط
  • H/L عقب و جلو رفتن در تاریخچه‌ی Tab حاضر
  • gt پرش به Tab بعدی
  • gT پرش به Tab قبلی
  • d بستن Tab حاضر
  • f برای نمایان کردن شماره لینک‌های صفحه (کافیست تایپشان کنید تا لینک باز شود ;-))
  • iv برای رفتن به حالت ویژوال (‌که در این حالت دستورات کپی و پیست عمل می‌کنند)
  • برای پرش به حالت text-edit که با رفتن به این حالت به جای حالت insert می‌توان متن کپی شده را پیست کرد
  • p برای پیست کردن متن
  • y برای کپی کردن متن یا yank

و دستورات که در حالت نرمال (دستوری) مرورگر مورد استفاده قرار می‌گیرد:

  • ‎:open [URL]‎ باز کردن یک آدرس در صفحه حاضر
  • ‎:tabopen [URL]‎ بازکردن یک آدرس در Tab جدید
  • ‎:stop برای نگه داشتن لود صفحه

خوب اینطور نوشتن دستورات و کلید‌های میانبر کار ساده‌ایست ولی درک کردن و بخاطر سپردنشان واقعا غیر ممکن است! بهترین کاری که می‌توان کرد تمرین است‌. آن هم فصل بندی شده و تعاملی‌. این‌طور نیست؟ Open Vim سایتی به همین منظور است که می‌تواند خیلی کمکتان کند.

شما هم از این افزونه‌ها استفاده می‌کنید؟ وسوسه به استفاده‌شان شدید؟ تجربه‌تان را با من و دیگر خوانندگان به اشتراک بگذارید ;-)