لینوکس و من

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

screenlets و compiz

این دو تا میتونن با هم ترکیب جالبی رو بسازن. من یک ویجت ساعت آنالوگ دارم، یک آب و هوا، یک folder view  و یکی هم یه آرم لینوکس!!!
دوست ندارم وقتی در یک پنجره ای در حال کار هستم هیچ کدوم اینها روی پنجره باشه. حتی ساعت! دوست دارم کل فضای مانیتور مربوط به چیزی باشه در حال اجراست. برای اینکه ساعت رو ببینم، باید show desktop رو بزنم تا همه ی پنجره ها برن پایین و ساعت روی دسکتاپ معلوم شه. اما این کار باعث میشه ویجت ها هم مثل پنجره ها برن! میشه این مشکل رو با این کار حلش کرد تا با show desktop ویجت ها سر جاشون باقی بمونن. 
فایل زیر رو با ویرایشگر متن باز کنید. نسخه ی پایتون۲ (به رنگ قرمز) ببینید در سیستم شما چیه و اون رو به جاش بنویسید. در حال حاضر آخریش ۲.۷ هست:

sudo nano /usr/lib/python2.7/site-packages/screenlets/__init__.py
حالا این عبارت رو پیدا کنید و # رو از کنارش بردارید.
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

یک بار screenlet ها رو restart کنید. (یا دوباره به دسکتاپ login کنید)

compiz یک پلاگین داره به نام widget layer. این پلاگین ویجت ها رو پنهان میکنه و با یک شورت‌کات اون ها رو نمایش میده. اما میتونیم تعیین کنیم این پلاگین روی کدوم ویجت ها تاثیر گذار باشه. مثلا فقط ویجت ساعت. در قسمت تنظیمات هر ویجتی که میخواید، این دو تا رو علامت بزنید: keep above و treat as widget. و پلاگین مربوطه رو در compiz فعال کنید. میبینید که اون ویجت غیب میشه. اما با فشردن کلید شورت‌کات (پیشفرض F9 ) نمایش داده میشه. این طوری با یک کلید میتونیم ویجت ساعت رو ببینیم :) حتی میتونیم سایز اون رو بزرگ کنیم و به عنوان اسکرین سیور استفاده کنیم! 

deadbeef یک موزیک پلیر ساده و سبک و کارآمد

موزیک پلیرهای زیادی بر اساس QT و GTK نوشته شدن. که هر کدوم ویژگی هایی دارن. خیلی از اون ها تنظیمات زیادی دارن که برای اونایی که فقط میخوان به موزیکشون گوش بدن فایده ی زیادی نداره و فقط محیط برنامه رو شلوغ پلوغ کرده. و همچنین زمان باز شدن برنامه زیاد میشه. مثلا Exile, Rythmbox, Banshee, و موزیک پلیرهای KDE که دیگه شورش رو در شلوغ بودن در آوردن. اما از اون طرف هم موزیک پلیرهای ساده ای هم وجود دارن. اما از بین اونهایی که من امتحان کردم، deadbeef از بقیه بهتره.. چون در عین سادگی کارآمد هم هست. و عملکرد های لازم رو دارا هست. پلاگین های مختلفی هم داره. در زیر عکسی از این برنامه رو میبینید:

deadbeef در مخازن آرچ وجود داره. میتونید به راحتی نصبش کنید. پلاگین های دیگه ای هم در مخازن AUR وجود داره. مثلا file browser که یک browser ساده به صورت پنل در سمت چپ نشون میده. یا پلاگینی برای نمایش lyrics که در یک پنل در سمت راست این کار رو انجام میده. deadbeef با کلید های Fn کار میکنه (یک پلاگین برای اینکار داره). همچنین در مخازن AUR برای استفاده از روش mpris هم یک پلاگین وجود داره. و در آخر از طریق commandline هم میتونید کنترلش کنید. پلاگینی هم وجود داره برای اینکه notificationهای برنامه (عوض شدن آهنگ) به صورت notify-osd ظاهر بشن. 

متاسفانه در دسکتاپ mate که هم اکنون از اون استفاده میکنم، کلید های fn کار نمیکنن و من برای کنترل deadbeef با کلید های fn مجبور شدم از روش commandline استفاده کنم.
deadbeef --toggle-pause
deadbeef --next
deadbeef --prev

این دستورها رو به صورت keyboard shortcut اضافه میکنیم که با کلید های Fn ترکیب بشن. اما این دستور ها رو اگه وقتی deadbeef در حال اجرا نیست بکار ببریم، (یعنی کلید ترکیبی اونها رو فشار بدیم) برنامه باز میشه. که خب نباید بشه دیگه. پس میایم یه فکری میکنیم.... آهان... چطوری یه شرط بذاریم براشون. مثلا اینکه اول توی برنامه های در حال اجرا بگرده ببینه deadbeef در حال اجرا هست یا نه. اگه هست این دستورها عمل کنند، اگه نیست عمل نکنند. خوبه!
پس نتیجه ی کار میشه اسکریپت هایی شبیه به این:
if ps -A | grep -q "deadbeef"
then
   deadbeef --toggle-pause
fi
میتونیم این ها رو در فایل های جدا ذخیره کنیم و در پوشه ی usr/local/bin/ قرار بدیم تا با یک دستور اجراشون کنیم. 
deadbeef این طوریه که اگه در حال پخش باشه و ما آهنگ دیگه ای رو کلیک کنیم، آهنگ قبلی قطع میشه و جدیده شروع میشه. که خب طبیعیه. اما چه کار کنیم که وقتی روی آهنگ ها راست کلیک میکنیم امکان اضافه کردن اونها رو به playlist در deadbeef داشته باشیم؟
قبلا در مورد totem این رو نوشته بودم. در مورد deadbeef هم دقیقا همون طوریه:

cp /usr/share/applications/deadbeef.desktop ~/.local/share/applications/deabeef-queue.desktop
و بعد ویرایش میکنیم
nano ~/.local/share/applications/deabeef-queue.desktop
برای قسمت Name= مثلا میذاریم Add to deadbeef و برای قسمت Exec این طوری:
Exec=deadbeef --queue %F
با ctrl + x و بعد تایپ y و بعد اینتر از ویرایشگر میایم بیرون. حالا روی آهنگی راست کلیک میکنیم و از طریق open with دنبال Add to deadbeef میگردیم و اون رو به لیست برنامه ها اضافه میکنیم 

حذف پسورد کاربر ویندوز از طریق لینوکس

داشتم دنبال یه چیز دیگه میگشتم که با این موضوع برخورد کردم. بله! میشه از طریق یک لینوکس به صورت لایو، پسورد هر یوزری در ویندوز۱ رو عوض کنید یا خالیش کنید. یا حتی یک یوزر معمولی رو به administrator ارتقا بدید. من خودم این رو هنوز تست نکردم، اما میخوام شما رو با این افتضاح بزرگ آشنا کنم... 
۱- سیستم رو با دیسک لایو لینوکسی که دارید بالا بیارید. و بسته ای به نام chntpw رو بسته به توزیعی که باهاش کار میکنید و روشش رو بلد هستید نصب کنید. در حال حاضر این بسته توی آرچ موجوده.

۲- درایوی که ویندوز توش نصب شده رو پیدا کنید و با ترمینال وارد این پوشه بشید: Windows/System32/config/ به حروف کوچک و بزرگ دقت کنید. خلاصه اینکه وارد اون پوشه بشید دیگه.

۳- دستور زیر رو اجرا کنید تا لیست یوزرهای موجود رو ببینیم
sudo chntpw -l SAM
چیزی شبیه به این تصویر میبینید:

۴- ما الان لیست یوزرها رو داریم میبینیم.  مثلا میخوایم یوزر HelpAssistant رو تغییر بدیم. پس این دستور رو اجرا میکنیم:
sudo chntpw -u "HelpAssistant" SAM

حالا سوال میپرسه که میخواین چی کار کنین؟! ما میخوایم پسورد این یوزر رو حذف کنیم. مینویسیم 1 و اینتر میزنیم. و بعد مینویسیم y و اینتر میزنیم. و ماجرا تمام می شود. این هم یک برگ زرین دیگه در مورد امنیت ویندوز!
البته در عکس بالا کاربری به نام Hives تغییر کرده. این عکس های منبع هست، برای همین نا هماهنگه.

توجه: اگر در ویندوزتون از encryption استفاده کردید، بعد از این کار طبیعتا دسترسی به اونها امکان پذیر نخواهد بود.
نکته: این یک اموزش برای خرابکاری نیست. لطفا برای اهداف بد استفاده نکنید.
------------
۱- ویندوز NT. مثلا ویندوز ۲۰۰۰، xp و حتی ویندوز ۷

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

حذف windows decorator در پنجره هایی که maximized میشن

compiz واقعا میشه گفت بهترین چیزی هست که یک دسکتاپ مدرن میتونه داشته باشه. و من برای تیم گنوم واقعا متاسفم که پشتیبانی از اون رو متوقف کردند. من الآن از دسکتاپ mate استفاده میکنم و هر کاری که دلم میخواد با compiz انجام میدم. یکی از این کارها، حذف حاشیه ی پنجره ها (windows decorator) از پنجره های maximize شده هست. البته قبلش باید برای سه تا عمل close و minimize و maximize شورتکات های خودتون رو تعیین کنید. برای تعیین شورتکات های دلخواه برای اینها، در برنامه ی تنظیمات compiz به قسمت General options و بعد Key bindings برید و این موارد رو برای این سه تا کار به دلخواه خودتون تغییر بدید. کیبورد شورتکات های خودم این ها هستند:
close window: <Super>space یعنی کلید ویندوز + اسپیس
minimize window: <Super>down یعنی کلید ویندوز + کلید جهت‌نمای پایین
toggle window maximized: <Super>up یعنی کلید ویندوز + کلید جهت‌نمای بالا

حالا آماده ایم که بریم سر اصل مطلب. به قسمت Window Decoration برید. میبینید که در فیلد Decoration Windows نوشته any. شما به جاش این عبارت رو قرار بدید: 
!state=maxvert

کار با compiz واقعا جذابه. خیلی کارها میتونید باهاش بکنید. وقت کنم حتما در مورد کارهاش مینویسم. مثلا میتونید هر برنامه ی دلخواهی رو در موقعیت خاصی از صفحه باز کنید. مثلا برنامه مرورگر همیشه در وسط صفحه با اندازه های مشخصی باز بشه. یا مثلا میتونیم کار کنیم که وقتی چیزی در حال کپی شدن هست، اون پنجره که پروسه ی کپی رو نشون میده، در گوشه ی صفحه باز بشه و همیشه روی همه ی پنجره ها قرار بگیره. یا میتونیم چیزهایی که لازم نیستن window decoration داشته باشن کاری کنیم که نداشته باشن. مثل همین پنجره ی کپی. یا پنجره هایی مثل shutdown یا delete و ... که به اینها میگن dialog. و خیلی کارهای خوب دیگه.
البته اینها فقط در دسکتاپ هایی قابل انجام هست که window manager اونها compiz باشه. مثلا در gnome-shell که ویندو منیجر mutter داره یا در دسکتاپ Pantheon که ویندو منیجر gala داره امکانش نیست. چون اینها بر اساس gnome 3 ساخته شدن و نمیتونن compiz رو اجرا کنن. اما مثلا mate, xfce, Openbox و حتی KDE میتونن compiz رو به جای ویندو منیجر خودشون انتخاب کنن.

تنظیم صدا

در حال حاضر از دسکتاپ Mate استفاده میکنم. متاسفانه تنظیم صدا و  کار با مدیاپلیر با کلید های Fn لپتاپ در Mate مشکل داره. کلید های مدیاپلیر رو که در نوشته های قبلی گفته بودم چطوری راه بندازیم. الآن Banshee به عنوان مدیاپلیر با کلید های Fn از اون روش کار میکنه. (vlc هم همین طور) و اما تنظیم صدا...
البته این متن رو بیشتر برای یاد آوری خودم نوشتم. و شاید به درد کس دیگه‌ای هم خورد. 
توی Compiz یا Keyboard Shortcuts این مقادیر رو میذاریم و براشون کلید های مورد نظرمون رو که همون کلید های Fn هستند قرار میدیم.

افزایش صدا:
amixer set Master playback 5%+
کاهش صدا:
amixer set Master playback 5%-
قطع/وصل کردن صدا:
amixer set Master toggle
ترکیب های مختلف و زیادی میشه در آورد. میتونید از manpage دستور amixer استفاده کنید.
یه مشکل وجود داشت و اون این بود که وقتی صدا رو کم میکردم، صدای برنامه ی پلیر هم میومد پایین. اما با بالا بردن صدا توسط این دستور ها، دیگه صدای پلیر بالا نمیومد. از این لینک اشکل رو پیدا کردم و حل شد.
این فایل رو ویرایش میکنیم:
sudo nano /etc/pulse/daemon.conf 
و مقدار عبارت flatvolumes  رو به no تغییر میدیم و اون رو فعال میکنیم (uncomment) و یک بار login/out میکنیم.
نکته: یک باگ در برنامه ی keyboard shortcuts در mate وجود داره که وقتی مقادیر دلخواه براش تعریف میکنیم، دیگه دفعه ی بعد برنامه اجرا نمیشه. من راه حلش رو پیدا نکردم. و از compiz استفاده کردم. و برای اینکه اون مقادیر رو پاک کنیم و برنامه دوباره اجرا بشه (که عملا بی فایده است) از این دستور استفاده کردم تا مقادیر دلخواهی که داده بودم پاک بشن.
dconf reset -f /org/mate/desktop/keybindings/
این روش فقط مخصوص mate نیست و در هر دسکتاپ دیگه ای میشه ازش استفاده کرد.

ساده کردن دستورهای pacman

میخوام این بار در مورد این بنویسم که چطوری فرایند نصب یا حذف بسته ها از خط فرمان رو ساده تر کنیم. البته در آرچ.
مثلا برای نصب یک بسته از مخازن از دستور pacman -S استفاده میکنیم. برای اینکه این دستور رو ساده تر کنیم، مثلا با یه دستور دلخواه مثل ins این کار رو انجام بدیم، میایم این اسکریپت رو میسازیم.

sudo nano /usr/local/bin/ins
و این محتوی رو توش مینویسیم:
#!/bin/bash
sudo pacman -S "$@"
حالا کلید ctrl + x رو بگیرید و اینتر بزنید تا فایل ذخیره بشه. و بعد فایلمون رو مجوز اجرایی بهش میدیم:
sudo chmod +x /usr/local/bin/ins
حالا مثلا این طوری میتونیم یه بسته ای مثلا libgdata  رو  از مخازن نصب کنیم. به راحتی:
ins libgdata
برای عملکرد های دیگه ی pacman هم میشه این کار رو کرد. مثلا برای نصب یک بسته که دانلودش کردیم، میتونیم این محتوی رو در یک اسکریپت دیگه مثلا با نام pkg بکار ببریم:
#!/bin/bash
sudo pacman -U "$@"

مثلا برای نصب بسته ای که در یک لوکیشن خاصی قرار داره، کافیه در ترمینال تایپ کنیم pkg و اون بسته رو از توی فایل منیجر drag کنیم جلوش که آدرس محلش بیفته جلوی دستور.

و برای حذف بسته ها، این محتوی رو در اسکریپت دیگه ای مثلا با نام rem قرار بدیم:
#!/bin/bash
sudo pacman -R "$@"
انتخاب اسم های rem, pkg, ins به دلخواه شماست.

دانلود ویدئوی youtube در chromium

سیاست های گوگل اینه که ملت حق دانلود از یوتیوب رو ندارن! ولی آخه مگه میشه؟! من بعضی از ویدئو های یوتیوب رو واقعا باید فایلش رو داشته باشم. این کار توی فایرفاکس به راحتی با نصب یک افزونه امکان پذیره. اما در کروم که مال خود گوگله، این افزونه از فروشگاه کروم حذف شده.  برای اینکه بتونیم بر این سیاست زورگویانه چیره شویم، به این سایت برید و افزونه رو دانلود کنید. متاسفانه کروم گستاخی رو به درجات بالاتر هم برده و اجازه نمیده که از اون سایت افزونه ای نصب بشه. ولی ما فایل افزونه رو داریم. به قسمت extensions در تنظیمات کروم برید و فایل افزونه رو داخل کروم drag and drup کنید. و سپس در ویدئو های یوتیوب این رو می بینید:

و خب... دانلود کنین و لذت ببرین. من تست کردم و کار کرد. نسخه ی کرومیوم من ۳۰ و در آرچ لینوکس هستم.

 

اوه. البته برای دانلود ویدئو های دیگه از سایت های دیگه مثل فیسبوک، این افزونه رو نصب کنید: FVD Video Downloader

آخرین سرور های بسته های آرچ رو داشته باشید

آرچ برای بسته های خودش سیستم جالبی رو داره. به این صورت که سرورهای مختلفی در سراسر دنیا بسته های آرچ رو در خودشون دارن. بنابراین شما میتونید بهترین سرور رو از نظر سرعت پیدا کنید و در لیست mirrors بسته ها قرار بدید. همه ی این کارها با این برنامه قابل انجام هست: reflector
اول این برنامه رو نصب کنید:
sudo pacman -S reflector
بعد این دستور رو اجرا کنید تا ۱۰ تا سرور پرسرعت به ترتیب لیست بشن.

sudo reflector --verbose -l 10 -p http --sort rate --save /etc/pacman.d/mirrorlist
برای اطلاعات بیشتر به منبع مراجعه کنید.

برداشتن border فایرفاکس

در ویندوز وقتی که منوی فایرفاکس رو حذف میکنیم و maximize میکنیم، کلا titlebar حذف میشه و فضای بیشتری رو میتونیم داشته باشیم. اما در لینوکس این اتفاق نمیفته. برای همین دست به دامن پلاگین ها میشیم...
دو پلاگین رو سرچ کنید و نصب کنید:
hide caption titlebar plus
toolbar buttons
بعد تنظیمات پلاگین ...hide رو طوری بذارید که دوست دارید! و دکمه های close/minimize/maximize رو هم بردارید! و بعد بوسیله ی toolbar buttons سری این دکمه ها رو اضافه کنید. (روی یه فضای خالی روی تولبار راست کلیک کنید و customize رو بزنید.) چرا؟ چون دکمه های پلاگین اصلی میفتن روی تب‌ها اما این یکی در کنار تب‌ها قرار میگیره.

عکس زیر از فایرفاکس من هست:



حتی میشه با پلاگین های دیگه ای تولبار دومی رو هم autohide کرد! البته این برای من مزاحمت ایجاد میکرد و این کار رو نکردم.

bluetooth بعد از resume در آرچ

Bluetooth بعد از resume از suspend از کار می‌افته. یعنی می‌افتاد! و در کل من دوست دارم که کلید خاموش/روشن کردن بلوتوث با وایرلس فرق داشته باشه. برای همین یه اسکریپتی ساختم که مخصوص خاموش/روشن کردن بلوتوث باشه. و البته اون کارهایی رو که لازمه تا بلوتوث بعد از resume کار کنه رو توش قرار دادم (رنگ قرمز)

#!/bin/sh

STAT=`cat /sys/class/rfkill/rfkill0/state`
      if [ "$STAT" = "1" ];
         then hciconfig hci0 down;
         else sudo rmmod btusb & sudo modprobe btusb & hciconfig hci0 up;
      fi

البته توجه داشته باشید که دستور sudo در اسکریپت وجود داره. برای اینکه دستور sudo بدون اینکه پسورد لازم باشه براش، اجرا بشه، باید یه کاری بکنید که در وبلاگم آموزش دادم. هرچند از لحاظ امنیتی ایراد داره. اما کسی با ما کاری نداره که ;)

روش دیگه ای که میتونیم انجام بدیم تا مشکل از کار افتادن بلوتوث برطرف بشه و نیازی به sudo نباشه، اینه که دستور rmmod btusb & modprobe btusb رو در systemd قرار بدیم که بعد از suspend اجرا بشه. (و طبیعتا اون عبارت قرمز رو هم از اسکریپتمون برداریم.) آموزش این کار هم دو سه تا نوشته پایین تر وجود داره.