لینوکس و من

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

یک اسکریپت برای واترمارک عکس و ویدیو

چند وقت پیش مطلبی نوشته بودم در این خصوص که چطوری روی یک عکس یا روی یک فایل ویدیویی واترمارک خودمون رو اضافه کنیم. مدتی بعدش تصمیم گرفتم این دو تا کار رو با هم ادغام کنم و در قالب یک اسکریپت استفاده کنم.

اسکریپت رو خوب نگاه کنید تا با طرز کارش آشنا بشید. این اسکریپت رو با نام مثلا wmark جایی ذخیره کنید و براش یک alias بسازید. اونوقت میتونید باهاش کار کنید. یک بار wmark رو در ترمینال اجرا کنید تا خودش راهنماییتون کنه و مثال بزنه.

تغییر الویت اجرای یک برنامه خاص در لینوکس

شاید برخی اوقات نیاز باشه الویت اجرای یک فرآیند خاص (یا چند فرآیند) که توسط سی پی یو پردازش میشه بالا یا پایین بره که این برنامه ساده که با پایتون نوشته شده این کار رو انجام میده.(لازم به ذکر است که آدرس ها و فایل های مورد استفاده به نسبت کاربرد باید تغییر کنند)

کد در 

قرص تقویتی برای مانجارو!

در آرچ یه چیزی هست به نام powerpill که کارش اینه که با استفاده از reflector سریعترین سرورهای مخازن رو پیدا کنه و با استفاده از aria2 سرعت دانلود بسته ها رو چندین برابر کنه. و حتی با rsync سرعت سینک کردن مخازن هم بیشتر میکنه! پس عجب قرص تقویتی‌ای است!

اما برای مانجارو اوضاع کمی فرق میکنه. از اونجایی که مانجارو مخازن مخصوص به خودش رو داره و نباید از مخازن آرچ روی مانجارو استفاده کرد، reflector در مانجارو کارایی نداره. بنابراین توسعه دهندگان مانجارو سورس پاورپیل رو تغییر دادند تا با معماری مانجارو منطبق باشه. این ابزار به همین نام یعنی powerpill از مخازن مانجارو قابل نصب است. من امتحان کردم، واقعا سرعت دانلود رو چند برابر میکنه. اما نحوه ی لیست شدن مخازن با سرعت بالاتر در مانجارو با آرچ فرق داره که قبلا در این مورد نوشته ام.

اما برای اینکه چیزهایی که از AUR نصب میکنیم (بوسیله yaourt یا ابزارهای دیگه) هم برای دانلود از aria2 استفاده کنند، میبایست فایل تنظیمات makepkg را باز کنیم و تنظیمات مربوط به دانلود رو به این تغییر بدیم:
/etc/makepkg.conf
------------------------

DLAGENTS=('ftp::/usr/bin/aria2c %u -o %o' 'http::/usr/bin/aria2c %u -o %o' 'https::/usr/bin/aria2c %u -o %o' 'rsync::/usr/bin/rsync -z %u %o' 'scp::/usr/bin/scp -C %u %o')



پخش صدا هنگام lock و unlock شدن دسکتاپ Gnome

برای اینکه موقع unlock و lock شدن دسکتاپ در گنوم یک اسکریپت دلخواه اجرا بشه (در اینجا پخش یک صدا)، میتونیم با یه اسکریپت خیلی ساده این کار رو بکنیم. اسکریپت زیر رو در یک فایل ذخیره کنید و مجوز اجرایی بهش بدید. و بعد بذاریدش توی استارتاپ:
#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
  while read x; do
    case "$x" in
      *"boolean true"*) play '/home/amin/themes/lock.ogg';;
      *"boolean false"*) play '/home/amin/themes/unlock.ogg';;
    esac
  done
قسمت نارنجی میتونه هر دستور دیگه ای باشه.

قطع صدا به هنگام بیرون کشیدن هدفون

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

برای اینکه وقتی هدفون رو میکشیم (اصطلاحا unplug میکنیم) صدای لپتاپ در حالت Mute قرار بگیره، میتونیم از acpid کمک بگیریم. acpid چیزیه که حواسش به اتفاقاتی که در لپتاپ میفته هست! و میتونه دستوراتی رو طبق اتفاقاتی که میفته اجرا کنه. مثلا وقتی شارژر وصل شد، فلان اتفاق بیفته. یا وقتی لپتاپ رو میبندیم، یا هدفون یا میکروفون رو وصل/قطع میکنیم و ...

من اینکار رو در Manjaro که یک توزیع Arch based هست انجام دادم. توضیحات کاملی در ویکی آرچ در این لینک موجوده. بنابراین ابتدا acpid رو نصب کنید و سرویسش رو اجرا و فعال کنید:
1. sudo pacman -S acpid
2. sudo systemctl enable acpid
3. sudo systemctl start acpid
این فایل رو در مسیر زیر با محتوای زیر بسازید:
/etc/acpi/events/headset
-------------------------------

event=jack/headphone HEADPHONE unplug
action=amixer set Master toggle



حالا یک بار سرویس acpi رو restart کنید:
sudo systemctl restart acpid
توجه کنید که مراحل بالا بسیار خلاصه شده است و کارهای بسیاری میشه از این روش انجام داد که همون طور که گفتم در ویکی آرچ میتونید بصورت کامل بخونید.

ساخت صفحه در گیت هاب


یکی از ویژگی های خوب گیت هاب اینه که یک هاست مجانی,امن و قدرتمند با امکان ساخت سایت های استاتیک رو برای کاربرهاش فراهم میکنه.
سایت گیت هاب این موضوع رو تحت عنوان (صفحات گیت هاب یا github pages ) بیان کرده.
برای ساخت صفحه در گیت هاب به ادامه مطلب مراجعه کنین ;)

باز نگه داشتن فایرفاکس بعد از آخرین تب

ویژگی ای که بعد از فایرفاکس 3.5!!! بهش اضافه شد اینه که وقتی آخرین Tabی که باقی مونده بسته میشه خود فایرفاکس هم بسته میشه. برای جلوگیری از این اتفاق، توی آدرس تایپ کنید about:config و بعد از تایید اینکه میدونید دقیقا دارید چی کار میکنید به تنظیمات فایرفاکس راه پیدا میکنید.

در قسمت جست و جو عبارت browser.tabs.closeWindowWithLastTab رو پیدا کنید و با دبل کلیک روی اون مقدارش رو از TRUE به FALSE تغییر بدید.

+صرفا جهت یادآوری

مولتی تاچ کامل در تاچپدها در لینوکس

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

به طور مثال:
حرکت سه انگشتی به سمت چپ و راست باعث بشه عمل backward و forward اتفاق بیفته. مثلا در Nautilus بین پوشه ها عقب و جلو بریم. یا در مرورگر در صفحات عقب تر و جلوتر بریم.
حرکت سه انگشتی به بالا و پایین باعث بشه بین Tab های مرورگر حرکت کنیم.
حرکت چهار انگشتی به سمت راست، باعث بشه یک Tab جدید باز بشه. چه در مرورگر چه در فایل منیجر.
حرکت چهار انگشتی به سمت چپ باعث بشه Tabی که مشاهده میکنیم close بشه.
و....

برای این منظور چند اسکریپت پیدا کردم. یکی Touchegg که شخصی سازی های زیادی داشت. اما اینقدر در نصبش پیچیدگی داشت که حتی فروم های خارجی هم بعضا موفق نشده بودند. ضمنا موقع نصب به تعداد زیادی بسته منجمله qt4 وابسته است.
دومین اسکریپت چیزی هست به نام xSwipe. اینو من نصب کردم و راه اندازی کردم. اما یکی از دوستان که انجام داد با مشکلات جدی روی تاچپدش مواجه شد. بنابراین بیشتر گشتم تا راه سازگارتری پیدا کنم. البته xSwipe مناسب توزیع هایی است که برای تاچپد خودشون از درایور synaptic استفاده میکنند. در مانجارو فعلی از libinput استفاده میشه و بعد از نصب synaptic دو دستگی پیش میاد و کلا چیز جالبی نمیشه. هر چند که بدون مشکل کار میکنه، اما احساس کردم که libinput تجربه واقعا بهتری بدست میده.
این شد که در AUR چیزی پیدا کردم به نام libinput-gestures که برای libinput نوشته شده و قابلیت مولتی تاچ رو به کمک چندتا ابزار دیگه مثل xdotool و wmctrl در اختیار میذاره. برای نصب در آرچ بیس ها:
1. yaourt -S libinput-gestures
2. sudo gpasswd -a $USER input
و بعد یک بار reboot  یا logout کنید.
اگر میخواید برای هر یوزر تنظیمات خاصی اعمال بشه، باید فایلی به این نام ایجاد کنید و تنظیمات دلخواهتون رو داخلش قرار بدید:
gedit ~/.config/libinput-gestures.conf

تنظیمات ساده و قابل درک هستند. مثلا من برای خودم این طور قرار دادم:
gesture: swipe up        xdotool key super+space #close window
gesture: swipe down 4    xdotool key super+Down #minimize
gesture: swipe right 4    xdotool key ctrl+t #new tab
gesture: swipe left 4        xdotool key ctrl+w #close tab
gesture: swipe up 3        xdotool key ctrl+Tab #switch between tabs
gesture: swipe down 3    xdotool key ctrl+shift+Tab #reverse switch between tabs
gesture: swipe left 3        xdotool key alt+Left #backward
gesture: swipe right 3    xdotool key alt+Right #forward
gesture: pinch in 2        xdotool key ctrl+plus #zoom in
gesture: pinch out 2        xdotool key ctrl+minus #zoom out

هر یک از قسمت ها رو توضیح میدم:
قسمت نارنجی، حرکت رو تعیین میکنه. swipe up یعنی حرکت از پایین به بالا.
قسمت سبز، تعداد انگشت ها رو مشخص میکنه. 4 یعنی 4 انگشتی! برای ۲ انگشتی چیزی نمیشه تعریف کرد، چون با تنظیمات خود سیستم تداخل میکنه.
قسمت زرد، حالت دستور xdotool رو تعیین میکنه.
و قسمت صورتی هم کلیدی است که xdotool آن را میفشارد!
در قسمت خاکستری هم توضیحاتی رو نوشتم. (که البته شما به دلخواه خودتون میتونید هر عملکردی رو برای اون کلیدها منظور کنید)

در واقع این اسکریپت اومده حالت های مختلف تاچپد رو به شورتکات هایی از کیبورد تبدیل کرده. که این توسط خود ما قابل تعیینه. ترفندی که میشه در این مورد به کار برد اینه که شما میتونید در keyboard shortcuts اسکریپت های مختلف خودتون رو و همچنین دستورات پیشفرض خود سیستم رو (مثلا مینیمایز کردن پنجره ها، بستن پنجره ها، حالت overview، کم و زیاد کردن نور مانیتور یا صدا، خاموش کردن مانیتور و ...) رو با شورتکات هایی در کیبورد تنظیم کنید، بعد این کلیدها رو در این تنظیمات وارد کنید!
همون طور که میبینید، مثلا من برای چهار انگشتی به پایین، کلید super+Down تعریف کردم. که این super+Down در keyboard shortcuts پنجره فعال رو مینیمایز میکنه. یا مثلا برای pinch in و pinch out دو انگشتی، میشه کلید super خالی رو تعریف کرد، که این در keyboard shortcuts حالت overview رو باز میکنه. (همون لیست پنجره های باز در گنوم شل). اما من کلید ctrl + plus و minus رو انتخاب کردم تا عمل زوم اتفاق بیفته!

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

بعد از ذخیره فایل تنظیمات، با دستور زیر میتونید این قابلیت رو فعال کنید:
libinput-gestures-setup start


و اگر فایل رو تغییر دادید، یکبار stop کنید و مجدد start کنید. دستور بالا رو در استارتاپ برنامه ها قرار بدید تا موقع بوت لازم نباشه کار اضافه ای بکنید. برای مدیریت دستورهای استارتاپ در گنوم میتونید gnome-session-properties رو از AUR نصب کنید.

یک برنامه گرافیکی هم برای این منظور ساختن، که از AUR قابل نصبه، من نصب کردم، اما عملا هیچ فایده ای نداره. چون فقط حالت های مختلف رو نصب کرده و قسمت command رو باید تایپ کنیم. که خب خودمون هم توی همین فایل تایپ میکنیم دیگه! ضمنان بخاطر ویدیویی که حرکات انگشت ها رو نشون میداد حجم بالایی داشت: gesture-manager-git
لیستی از کلیدهایی که xdotool پشتیبانی میکنه میتونید در اینجا ببینید

ذخیره اسکرین شات های گنوم با نام تاریخ شمسی

صرف نظر از علت این کار! برای اینکه وقتی اسکرین شات میگیریم فایلها در یک مسیری با الگوی مشخصی که ما تعیین میکنیم نام گذاری بشن میتونیم از سوییچ ilef استفاده کنیم. اما برای این که کار با مزه تر بشه میتونیم از کتابخانه jdate استفاده کنیم و فایلها رو طبق تاریخ شمسی نام گذاری کنیم. روش سر راستش اینه که با الگویی شبیه به این این کار رو بکنیم:
/usr/bin/gnome-screenshot --file="$HOME/Pictures/screenshots/$(jdate +%y%m%d_%H%M%S).jpg" $@ && play /usr/share/sounds/freedesktop/stereo/camera-shutter.oga

البته باید jdate رو نصب داشته باشید. هر الگویی که مد نظرتون هست میتونید جایگزین قسمت بنفش بکنید. و مسیر فایل هم در قسمت نارنجی مشخصه.

اما ما میتونیم یه مرحله دیگه هم پیش بریم. میتونیم این رو در یک اسکریپت قرار بدیم، و براش یک alias تحت نام gnome-screenshot تعیین کنیم. تا از این به بعد هر وقت در ترمینال زدیم gnome-screenshot حالا با سوییچ های مختلفی مثل w یا a این نامگذاری اعمال بشه.

میتونیم حتی این اسکریپت رو بعنوان keyboard shortcut قرار بدیم. و اون رو با سوییچ های مختلف مخلوط کنیم. مثلا با فشردن کلید windows و prt sc از پنجره ای که فعال هست عکس گرفته بشه (سوییچ w) و با فشردن Alt + prt sc از یک ناحیه ی دلخواه عکس گرفته بشه (سوییچ a).

قسمت سبز هم مربوط میشه به صدای شاتر دوربین! البته این روش فقط منحصر به اسکرین شات گنوم نمیشه و احتمالا میتونید یه همچین کاری رو هم با xfce بکنید.

کپی متن از PDF های فارسی

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

این روش مختص به سیستم عامل خاصی نیست و در لینوکس هم میشه استفاده کرد. برای فایرفاکس، کافیه از قسمت Prefrences به قسمت Applications برید و در اون قسمت pdf رو پیدا کنید و براش مقدار Preview in Firefox رو انتخاب کنید. و بعد فایل PDF رو داخل فایرفاکس بکشونید.
در مورد کروم اطلاعی ندارم. اگر کسی میدونه اون رو در کامنتها با ما به اشتراک بذاره.