لینوکس و من

۲۱۶ مطلب با موضوع «ترفند» ثبت شده است

اجرای tomboy در startup، بدون پنجره search

اگه هنوز افرادی هستند که از tomboy1 استفاده میکنند، و میخوان که اون رو هنگام ورود به گنوم به صورت خودکار باز شده داشته باشند، دو راه وجود داره. یک اینکه applet اون رو به پنل اضافه کنیم. و دوم اینکه tomboy رو در startup بذاریم تا آیکن اون در notification area بیاد. و نه به صورت applet.
که من روش دوم رو ترجیح میدم. اما با قرار دادن دستور tomboy در startup مشکلی که پیش میاد اینه که پنجره ی search نوت ها هم در شروع دسکتاپ نمایش داده میشه. برای جلوگیری از این رخداد (!)‌ باید tomboy رو چند ثانیه دیرتر یعنی چند ثانیه بعد از شروع پنل اجرا کنیم.
بنابراین میایم یه اسکریپت مینویسیم که توش tomboy رو مثلا ۱۲ ثانیه دیتر از لاگین آغاز کنه.

sudo gedit /usr/bin/tomboy-startup

و این متن رو در اون قرار بدید و save کنید:

#!/bin/sh
/bin/sleep 12
/usr/bin/tomboy

و بعد مجوز اجرایی رو بهش میدیم:

sudo chmod +x /usr/bin/tomboy-startup

حالا در startup applications یک آیتم جدید با این دستور میسازیم:

/usr/bin/tomboy-startup

1: Tomboy یه اپلیکیشن ساده و کاربردی برای نوت برداری در دسکتاپ های gtk است.

پخش صدای خروج (Logout) در گنوم

چندین سال این سوال گوشه ی اعماق ذهنم همیشه وجود داشت که چرا صدای Logout پخش نمیشه؟!! هیچ وقت هم دنبالش نرفتم که جوابی پیدا کنم براش. امشب گفتم بذار هر طوری شده ته توی قضیه رو در بیارم!
گوگل مثل همیشه کمک خوبی بود. متوجه شدم که این یه باگ بوده که در یکی از نسخه های اوبونتو برطرف شده. ولی خب ما که اوبونتو نداریم. تازه اوبونتوهای جدید رو هم که امتحان کردم همچین خبری نبود. پس داستان چیه؟!
یه فکری به سرم میزنه. مهم نیست داستان چیه! مهم اینه که یه موزیک حین خروج از دسکتاپ پخش بشه. پس این فکر رو تعمیم میدم. یه "دستور" قبل از خروج از دسکتاپ پخش بشه! حالا میرم دنبال این میگردم...
و بینگوووو.... پیداش میکنم. خیلی خیلی ساده است. اگه بخوایم دستوری قبل از خروج اجرا بشه، کافیه که اون رو در فایل زیر، قبل از exit بنویسیم. پس این فایل رو باز میکنیم:

sudo gedit /etc/gdm/PostSession/Default

و خط زیر رو قبل از exit میذاریم و save میکنیم:

/usr/bin/canberra-gtk-play --id="desktop-logout" --description="GNOME Logout"

توجه کنید که خط بالا فقط دستوریه که منجر به پخش صدای خروج میشه. پس ما اون رو قبل از خروج اجرا میکنیم! به همین سادگی! شما احتمالا میتونید هر دستور دیگه ای رو بذارید.

مثلا چطوره قبل از خروج یه پنجره باز بشه و بگه چقدر کامپیوتر روشن بوده!

zenity --info --title "Uptime" --text=" You were using this computer since \n $(uptime)"
جالبه نه؟

zenity ابزاری هست که میتونیم باهاش پنجره های جور واجور gtk رو به نمایش بذاریم. خیلی جزئیات داره. میتونید man page اون رو ببینید و باهاش بیشتر آشنا شید.

ساخت بسته ی deb از سورس کامپایل شده

تا به حال شده یه بسته ای رو از روی سورس نصب کنید و بعدا به هر دلیلی احتیاج داشته باشید بسته ی deb اون رو داشته باشید؟ دلیلش هر چی که میخواد باشه. هدف ما اینه که بسته ی deb رو داشته باشیم! خیلی خیلی ساده، اول باید یه چیزی به نام checkinstall رو نصب کنید:
sudo apt-get install checkinstall
حالا وارد پوشه بسته ای بشید که اون رو کامپایل کردید و نصب کردید. یا حتی نصب هم نکردید. فقط کامپایل کردید. و به جای اینکه sudo make install رو اجرا کنید، این رو اجرا کنید : sudo checkinstall

روند کار بسیار ساده است. شما میتونید توضیحات دلخواهتون رو بنویسید، اسم بسته رو عوض کنید و ... . پس از اتمام کار، بسته ی مورد نظر در همون فولدر ایجاد میشه و خودش نصب میشه.

لازم بود!
اطلاعات مفصل تری رو میتونید در این فروم پیدا کنید.

باز هم تبدیل زیرنویس ها به UTF8

این زیرنویس فارسی هم معضلی شده برای خودش! و تنبلی ما هم مزید بر علت! مشکل اینجاست که با وجود تنظیم vlc روی windows-1256 برای زیرنویس های با این انکدینگ، باز هم درست نشون داده نمیشن. و حتما باید utf8 باشن. چند باری در این مورد مطلب نوشتم.
اما مشکل روش های قبلی این بود که فایل ها رو باید دونه دونه میدادیم تا تبدیل میشدن. فرض کنید میخواید در مورد یه سریال چندین قسمتی این کار رو بکنید. خب چه کاریه واقعا! پیر میشه آدم. اما راه حل خیلی ساده است. به طوری که با یک خط دستور همه ی فایل های زیرنویس تبدیل میشن. برای اینکار در ترمینال وارد پوشه ی زیرنویسها بشید و این دستور رو اجرا کنید:
for i in *.srt; do iconv -f windows-1256 -t utf8 "$i" > "utf8-$i"; done
توجه کنید که:
 
۱- این دستور فایل های با پسوند srt با حروف کوچک رو شناسایی میکنه. پس اگه پسوند فایل های شما با حروف بزرگ هست، دستور رو تغییر بدید.
۲- در ابتدای نام زیرنویسهای جدید عبارت-utf8 اضافه میشه. میتونید به دلخواه خودتون تغییرش بدید. (قرمز رنگ در دستور)
 
ما باز هم میتونیم کار رو ساده تر کنیم! وای که چقدر تنبلیم! این دستور رو تبدیل میکنیم به یک فایل اجرایی و میذاریمش توی پوشه ی usr/bin/ . اون وقت کافیه با ترمینال وارد پوشه ی مورد نظر بریم و فقط نام اسکریپت رو تایپ کنیم! این فایل رو دانلود کنید. و بذاریدش توی مثلا فولدر home یوزر خودتون. و بعد در ترمینال این دستور رو اجرا کنید تا مجوز اجرا شدن رو به این فایل بدیم:
sudo chmod o+x ~/srtconv
حالا اون رو کپی میکنیم:
sudo cp ~/srtconv /usr/bin/srtconv
شما میتونید این کارها رو در حالت گرافیکی هم انجام بدید.
 
خب. حالا در ترمینال وارد پوشه ی زیرنویسها بشید و تایپ کنید: srtconv و اینتر بزنید!
برای اینکه کار ما با ترمینال هم ساده تر شه و وجبور نباشیم با دستور cd وارد پوشه ی زیرنویسها بشیم، این بسته رو نصب کنید: nautilus-open-terminal
sudo apt-get install  nautilus-open-terminal
 
حالا که با فایل منیجر (nautilus) وارد پوشه ی زیرنویس ها میشید راست کلیک کنید و open in terminal رو انتخاب کنید!
در فکر اینم که این کار رو به اسکریپتی به nautilus بسپریم. تا مثلا با راست کلیک روی فایل srt گزینه ای ظاهر بشه که تبدیل رو برامون انجام بده. 

جلوگیری از آپدیت شدن libreoffice

در پست های قبل نوشته بودم که چطوری از آپدیت شدن خودکار یک بسته جلوگیری کنیم. LibreOffice از اون برنامه هاییه که حجم بالایی داره. و آپدیت شدنش به نسخه های ریز فرعی به نظر من زیاد لازم نیست. مگه اینکه بخواد به یک نسخه ی اصلی آپدیت بشه. 
حالا طبق همون پست، این دستورات رو که وارد کردم برای شما هم میذارم. و هم برای خودم میمونه اگه بعدا لازم شد استفاده کنم. یکی یکی این دستورات رو در ترمینال اجرا کنید. اما:
۱- هیچ برنامه ای که به مخازن دسترسی داره باز نباشه. مثلا synaptic
۲- در ترمینال باید با حالت root وارد شده باشید. بنابراین اول دستور su رو اجرا کنید.

این هم دستورات:

echo "libreoffice-style-tango hold" | dpkg --set-selection
echo "libreoffice-style-galaxy hold" | dpkg --set-selection
echo "libreofficestyle-galaxy hold" | dpkg --set-selections
echo "libreoffice-report-builder-bin hold" | dpkg --set-selections
echo "libreoffice-java-common hold" | dpkg --set-selections
echo "libreoffice-help-en-us hold" | dpkg --set-selections
echo "libreoffice-filter-mobiledev hold" | dpkg --set-selections
echo "libreoffice-emailmerge hold" | dpkg --set-selections
echo "libreoffice-common hold" | dpkg --set-selections
echo "libreoffice-core hold" | dpkg --set-selections
echo "libreoffice-base hold" | dpkg --set-selections

این دستورات کافی هستند تا مشتقات دیگه هم آپدیت نشن. توجه کنید که امکان آپدیت همچنان وجود داره، یعنی هر وقت که خودتون بخواید میتونید از توی پکیج منیجر تیک اپدیت شدن این بسته ها رو بزنید. این کار ما فقط جلوی آپدیت شدن اتوماتیک این بسته ها رو میگیره.
اگه شما هم بسته ی دیگه ای از LibreOffice رو دیدید که با وجود دستورهای بالا لازمه این اتفاق براش بیفته در کامنت ها بنویسید. ممنون میشم.

عکس بکگراند گراب ۲

شاید یکی دوست داشته باشه منوی گراب لینوکسش عکس داشته باشه! در ترمینال فایل پیشفرض منوی گراب رو یا gedit یا هر چیزی که دارید باز میکنیم:
sudo gedit /etc/default/grub

حالا مثلا میخوایم عکس usr/share/images/grub.png/ رو برای پس زمینه انتخاب کنیم. شما هر عکسی رو میتونید کپی کنید و آدرسش رو بدید.

یه سری چیز میز میبینید که شبیه این قسمته:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet”
GRUB_CMDLINE_LINUX=”"

زیر این قسمت این عبارت رو قرار بدید:

GRUB_BACKGROUND=/usr/share/images/grub.png

و اگر این رو میبینید: GRUB_GFXMODE=640×480  پشتش یه # بذارید. این طوری بشه:

# GRUB_GFXMODE=640×480

فایل رو ذخیره کنید و خارج شید.

و حالا در ترمینال این دستور رو اجرا کنید:

sudo update-grub

توجه: با اینکار منوی گراب شما تغییر خواهد کرد. بنابراین اگه تغییری به صورت دستی توی فایل boot/grub/grub.cfg/ دادید اول یه بکاپ از اون بگیرید.

اضافه کردن فایل ها به Totem

شاید این یه موضوع پیش پا افتاده باشه و به چشم نیاد. اما به وقتش به چشم میاد! اونهایی که Totem رو به خاطر سادگی و سبکیش به عنوان مدیاپلیر پیش فرض خودشون انتخاب کردن حتما از این که Totem قابلیت enqueue کردن رو در منوی راست کلیک روی فایل‌ها نداره، ناراحت هستند. یعنی مثلا شما چندین پنجره دارید، و totem اون زیر میر‌ها (!) بازه و داره آهنگ پخش میکنه. شما میخواید یه سری آهنگ جدید به playlist اضافه کنید. شما باید totem رو پیدا کنید و فایل‌ها رو drag کنید و بندازید توی playlist. این یکم عذاب آوره و زمان هم میگیره. اما چی میشد اگه میتونستیم روی فایلهامون راست کلیک کنیم و اونها رو به لیست فایل های در خال پخش totem اضافه کنیم؟
با یه ترفند جالب میشه این کار رو کرد. در حقیقت ما باید یه آیتم به منو‌های nautilus اضافه کنیم که عملکردش چیزی باشه که میخوایم. برای اینکار، میایم شورت‌کات اجرایی totem رو از فایلهای سیستم به فولدر home خودمون کپی میکنیم تا تغییراتی که توش میدیم با به روز کردنها از بین نره. در ترمینال این رو بزنید:
cp /usr/share/applications/totem.desktop ~/.local/share/applications/add-to-totem.desktop
حالا با ادیتور خودتون این فایل رو باز کنید. برای من gedit هست:
gedit ~/.local/share/applications/add-to-totem.desktop
حالا نوبت دستکاری‌هاست! همون اول اول که نوشته name= movie player میتونید اسمش رو به هر چیزی که دوست دارید تغییر بدید. مثلا من این رو میذارم: Add to Totem
عبارت Exec=totem %u رو پیدا کنید و اون رو به Exec=totem --enqueue %u تغییر بدید و فایل رو ذخیره کنید.
حالا یک بار logout/in کنید.
یه فایل موسیقی رو با totem باز کنید. حالا روی یه فایل دیگه راست کلیک کنید و open with و بعد other applications . حالا در صورت نمایش لیست برنامه ها، شما باید Add to Totem رو ببینید. اون رو انتخاب کنید و نتیجه رو ببینید! از این به بعد هم Add to totem توی منوی open with میمونه.

جلوگیری از update شدن یک بسته ی خاص!

گاهی اوقات شما نمیخواید با update کردن سیستم بعضی از بسته های خاصی update بشن. حالا دلیلش هر چیزی میتونه باشه. برای این کار در دبیان‌ها میتونیم از این روش استفاده کنیم. مثلا برای جلوگیری از update شدن بسته ی plymouth این دستور رو در ترمینال اجرا میکنیم:
echo "plymouth hold" | dpkg --set-selections
و برای اینکه این محدودیت رو بر داریم:
echo "plymouth install" | dpkg --set-selections

غیر فعال کردن translations در مخازن

حتما موقع update کردن repositoryها در دبیان متوجه یه سری بسته های مربوط به translations شدید که همگی failed میشن. من نمیدونم اینها چی هستند، ولی وقتی fail میشن و بدردم نمیخورن پس چرا بیخودی جلوی چشمم باشن؟!
برای اینکه دیگه اینها رو نبینیم، این کار رو میکنیم. در ترمینال مرقوم بفرمایید:
sudo gedit /etc/apt/apt.conf.d/99translations
البته به جای gedit ویرایگشر دلخواهتون رو بذارید. مثلا برای kde ممکنه kate باشه. و البته میتونید مستقیم از توی فایل منیجر هم این فایل رو برید بسازید. داخل این فایل این عبارت رو پیست کنید:
Acquire::Languages "none";
و بعد save کنید.
نکته: من در debian wheezy تست کردم.

منبع

اجرای اسکریپت شما، پس از resume از suspend

ممکنه شما اسکریپتی داشته باشید که بخواید بعد از وقتی که سیستم از suspend در اومد، اجرا بشه. مثلا اسکریپتی که من باهاش nvidia optimus رو هنگام بوت خاموش میکنم، بعد از suspend عمل نمیکنه و انویدیا روشن میمونه. باید اسکریپت رو دوباره اجرا کنم تا خاموشش کنه. اما برای رفع این مشکل، کافیه فایل اسکریپتی که میخواید رو داخل این پوشه کپی کنید. و البته مجوز اجرا شدن رو هم بهش بدید...
/etc/pm/sleep.d