تبلیغات
لینوکس و من - مطالب ترفند
لینوکس و من

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

نویسنده : امین | تاریخ: 1395/10/22

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

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

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

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

نویسنده : امین | تاریخ: 1395/10/15

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

به طور مثال:
حرکت سه انگشتی به سمت چپ و راست باعث بشه عمل 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 پشتیبانی میکنه میتونید در اینجا ببینید

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

نویسنده : امین | تاریخ: 1395/10/3

صرف نظر از علت این کار! برای اینکه وقتی اسکرین شات میگیریم فایلها در یک مسیری با الگوی مشخصی که ما تعیین میکنیم نام گذاری بشن میتونیم از سوییچ f استفاده کنیم. اما برای این که کار با مزه تر بشه میتونیم از کتابخانه jdate استفاده کنیم و فایلها رو طبق تاریخ شمسی نام گذاری کنیم. روش سر راستش اینه که با الگویی شبیه به این این کار رو بکنیم:
/usr/bin/gnome-screenshot -f "$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 های فارسی

نویسنده : امین | تاریخ: 1395/10/2

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

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

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

نویسنده : امین | تاریخ: 1395/09/14

برنامه اسکرین شات گنوم یه ابزار راحت برای هر نوع عکس گرفتن از صفحه نمایشه. این برنامه عکسها رو بطور پیشفرض با فرمت png ذخیره میکنه. اما اگه بخوایم عکسها با فرمت دیگه ای مثلا jpg ذخیره بشن هیچ جا تنظیمی برای اینکار وجود نداره. اما با رفتن به dconf میتونیم این کار رو بکنیم.

با تغییر دادن default-file-type این اتفاق خواهد افتاد. یا اگه خیلی عجله دارین این رو در ترمینال اجرا کنین:
 dconf write /org/gnome/gnome-screenshot/default-file-type "'jpg'"

حالا وقتی خود برنامه رو باز کنید و اسکرین شات بگیرید فایلها بصورت jpg ذخیره میشن. اما اگه با شورت‌کات های کیبورد این کارو بکنین همچنان png هستند. راه حلی که خودم برای این موضوع بکار بردم اینه که در keyboard shortcuts اسکرین شاتهای فعلی رو غیر فعال کنید و در عوض سه تا دستور اسکرین شات با شورتکاتهای دلخواه بسازین:


و یه نکته دیگه هم اینکه برای اینکه تعیین کنید وقتی اسکرین شات میگیرید بصورت خودکار در چه دایرکتوری ای ذخیره بشن، طبق عکس اولی عمل کنید و مقادیر مربوطه رو به دلخواه خودتون تغییر بدید

داستان تغییر زبان

نویسنده : امین | تاریخ: 1395/09/13

از اونجایی که در ویندوز از سالها قبل هممون عادت کردیم برای تغییر زبان کیبورد به فارسی/انگلیسی از کلید های Alt+Shift هر دو طرف استفاده کنیم، حالا برامون سخته که بخوایم از ترکیب های دیگه در گنوم یا سایر دسکتاپ ها استفاده کنیم.همچنین عده ای با Alt+Shift سمت راست راحت هستن و عده ای هم با سمت چپ. اما در تنظیمات کیبورد فقط ترکیب سمت چپ وجود داره. و در گنوم هم که اصلا Alt+Shift وجود نداره!
قبلا در این مورد نوشته بودم. اما اون فقط مخصوص دسکتاپ گنوم بود. و فقط هم کلیدهای ترکیبی سمت چپ رو فعال میکرد. اما حالا با قرار دادن این دستور در استارتاپ، هر دو کلید های ترکیبی سمت راست و چپ فعال میشن. در هر دسکتاپی که باشید.
setxkbmap us,ir -option "lv3:ralt_alt,grp:alt_shift_toggle"
میتونید یک بار دستور بالا رو در ترمینال اجرا کنید و تست کنید. بعدش اونو در استارتاپ قرار بدید، که بسته به نوع دسکتاپ روشش فرق میکنه.

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

نویسنده : امین | تاریخ: 1395/08/3

ممکنه براتون پیش بیاد که بخواید وقتی مثلا به مدت سه دقیقه از کامپیوترتون استفاده نکردید یک اتفاقی بیفته. مثلا من همیشه یادم میره کلید Numlock رو خاموش کنم، و از اونجایی که در کیبورد من عدد 1 در حالت Numlock خاموش مساوی است با End این موضوع خیلی روی اعصابه، و هر وقت که میزنم End تایپ میکنه 1. بنابراین میام به سیستم میگم هر وقت به مدت ۵ ثانیه کسی بهت دست نزد numlock رو خاموش کن. خیلی کارها میشه با این اسکریپت کرد...

اول از همه پیش نیاز های این اسکریپت رو نصب میکنیم. در توزیع خودتون اینها رو باید نصب کنید: sdotool , xprintidle , wmctrl و بعد اسکریپت زیر رو در یک فایل با پسوند py ذخیره میکنیم:
#!/usr/bin/env python3
import subprocess
import time
import sys

idletime = int(sys.argv[1])
command = sys.argv[2]

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()

def get_res():
    xr = [s for s in get(["xrandr"]).split() \
          if "+0+0" in s][0].split("x"); xr[1] = xr[1].split("+")[0]
    return xr

res = get_res()

def check():
    front = [l for l in get(["xprop", "-root"]).splitlines() \
             if "_NET_ACTIVE_WINDOW(WINDOW):" in l][0].split("#")[-1].strip()
    front = front[:2]+(10-len(front))*"0"+front[2:]
    try:
        wdata = subprocess.check_output(
            ["wmctrl", "-lG"]
            ).decode("utf-8").splitlines()
        match = [l for l in wdata if front in l][0].split()[4:6]
        if match == res:
            return True
        else:
            return False
    except subprocess.CalledProcessError:
        pass

minus = 0; real_idle = 0; t1 = 0; due_1 = False
while True:
    time.sleep(1)
    fscreen = check()
    t2 = int(int(get(["xprintidle"]))/1000)
    if t2 < t1:
        minus = 0; real_idle = 0
    else:
        if fscreen == True:
            minus = t2
    real_idle = t2 - minus
    due_2 = [real_idle > idletime][0]
    if all([real_idle > idletime, due_1 != due_2]):
        subprocess.Popen(["/bin/bash", "-c", command])
    due_1 = due_2
    t1 = t2
و بعد مجوز اجرایی به این اسکریپت میدیم.
برای خاموش کردن numlock هم از numlockx استفاده میکنیم که با off خاموش و با on روشن میکنه. مثلا numlockx off

برای استفاده از این اسکریپت به صورت زیر عمل میکنیم:
python3 /pat/to/idle.py 5 "numlockx off"

دستور بالا (باید مکان اسکریپت و نام اون رو طبق چیزی که میخواید تغییر بدید) پس از اجرا شدن (که ما اون رو در کرون میذاریم تا موقع استارتاپ اجرا بشه) پس از ۵ ثانیه استفاده نکردن از سیستم کلید numlock رو خاموش میکنه. شما به جای متغیر زمان و دستور میتونید هر چیز دیگه ای رو بذارید.

لینک‌های مرتبط

پخش آلارم هنگام Low battery

نویسنده : امین | تاریخ: 1395/07/18

در دسکتاپ گنوم، وقتی باتری لپتاپ به مقدار مشخصی برسه، نوتیفیکیشن هشدار داده میشه. اما این نوتیفیکیشن صدا نداره. یکی از دوستان پرسیده بود که چطور میشه کاری کرد که وقتی باتری به درصد خاصی میرسه نوتیفیکیشن همراه با آلارم پخش بشه؟
دو راه برای اینکار هست. یکی اینکه از udev استفاده کنیم، که در ویکی آرچ توضیح داده شده. اما من استفاده کردم و موفقیت آمیز نبود. ظاهرا هر لپتاپی اینجور نیست که اطلاعات باتری رو به udev بفرسته. راه دوم که کار راه بندازه و زیادم بد نیست استفاده از cron است. یعنی یه اسکریپتی بنویسیم که هر مثلا ۶ دقیقه درصد باتری رو چک کنه و اگه کمتر مقدار تعیین شده بود کاریو که ما میخوایم انجام بده.
اسکریپتی که در ویکی آرچ نوشته بود و من هم کمی شخصی سازیش کردم در زیر میبینید:
#!/bin/sh
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
acpi -b | awk -F'[,:%]' '{print $2, $3}' | {
    read -r status capacity

    if [ "$status" = Discharging -a "$capacity" -lt 15 ]; then
        logger "Critical battery threshold"
        /usr/bin/notify-send -u critical --hint int:transient:1 -i "/usr/share/icons/hicolor/256x256/apps/gnome-power-manager.png" "Battery at $capacity%" "Battery percent is too low. Connect AC Adapter." && play /home/amin/Programs/lowbat.mp3
    fi
echo "Battery has $capacity% capacity"
}
چند نکته در مورد این اسکریپت:
برای مشخص کردن درصد باتری از acpi استفاده شده. و برای پخش صدا از sox و برای نمایش نوتیفیکیشن از notify-osd. بنابراین هر کدوم رو که ندارید نصب کنید.
در خط دوم اسکریپت (رنگ زرد) برای اینکه cron بتونه پیامهای notify-osd رو اجرا بکنه،‌ باید یه همچین چیزی در اسکریپت باشه. عدد 1000 همون user id نام کاربری شماست که باید با دستور echo $UID ببینید چنده. که معمولا اگه اولین کاربری باشید که در لینوکستون ساختید 1000 هست.
خطوط نارنجی هم مشخص کننده آدرس فایلهاست (آیکن و صدای آلارم).
محتوای پیام رو هم که خودتون میتونید ویرایش کنید. مقدار 15 هم که با رنگ سبز مشخص شده همون درصدی است که تعیین کردیم که اگر پایین تر از اون بود هشدار داده بشه. به دلخواه خودتون میتونید مقدارش رو مشخص کنید.
اسکریپت بالا رو جایی ذخیره کنید و اون رو با روشی که بلد هستید به cron بسپارید. بازه های زمانی ۶ دقیقه فکر میکنم مناسب باشه.

ذخیره و بازآوری شورت‌کات ها در گنوم

نویسنده : امین | تاریخ: 1395/07/7

اگر مثل من علاقه مند به تغییر کیبورد شورتکات های پیشفرض در دسکتاپ گنوم داشته باشید، یا خیلی شورتکات های جدید خودتون ایجاد کرده باشید، خیلی سخته که این همه تنظیمات رو بصورت حتی اتفاقی از دست بدید. شاید مجبور شده باشید سیستم جدیدی نصب کنید، اونوقت تک تک این شورتکات ها رو باید دوباره تنظیم کنید.
اما نه! لازم به این کار نیست. با یک اسکریپت perl به راحتی میتونید از شورتکات های گنوم بکاپ بگیرید و در مواقع لزوم همه اونها رو به یکباره برگردونید. منبع این اسکریپت در اینجاست. اما محض احتیاط اگر لینک منبع از بین رفت، اسکریپت رو در ادامه مطلب میذارم. روش کار هم به این شکل هست که این اسکریپت رو در یک فایل با اسم دلخواه و پسوند pl ذخیره میکنید. مثلا keybindigs.pl و بعد اون رو مشابه دستور زیر اجرا میکنید:
برای گرفتن بکاپ:
/path/to/keybindigs.pl -e ~/keybindings

و برای بازگردوندن بکاپ:
/path/to/keybindigs.pl -i ~/keybindings




فایلی به نام keybindings در فولدر home کاربریتون ایجاد میشه که حاوی این تنظیمات هست.
این اسکریپت در گنوم ۳.۲۰.۲ تست شده.
ادامه مطلب

اسکریپت جدا کردن یک تکه از فیلم بوسیله FFMPEG

نویسنده : امین | تاریخ: 1395/07/5

چند وقت پیش در مورد اینکه چطوری یه تیکه از فیلمی رو بوسیله ffmpeg جدا کنیم نوشته بودم. اینجا بخونید.
به یاد سپردن این دستورات طویل ffmpeg کار راحتی نیست! بنابراین اومدم با توجه به اسکریپتی که یکی از دوستان در انجمن فارسی کاربران آرچ برای کمک به من نوشته بود (در مورد واترمارک کردن فیلمها) یه اسکریپت برای این کار تهیه کردم:
#!/bin/bash

path_of_first_file=$(dirname "$1")
name_of_first_file=$(basename "$1")
startpoint=$2
duration=$3

new_name="$(echo "$name_of_first_file.mp4")"
new_output=$(echo "$path_of_first_file/$new_name")

ffmpeg -loglevel panic -i "$1"  -vcodec copy -acodec copy -ss "$2" -t "$3"  "$new_output"

echo
echo "New video saved in: " "$path_of_first_file"\/$new_name

وقتی این اسکریپت رو جایی ذخیره کنید و بهش مجوز اجرایی بدید، و بعد یک alias براش تعریف کنید، (مثلا vidcut) به راحتی با دستوری مشابه این میتونید تکه ی دلخواهتون رو از فیلم جدا کنید:
vidcut /path/to/video.mp4 00:12:30 00:03:08
قسمت نارنجی که واضحه، مسیر فایل ویدیویی هست. یعنی از  دقیقه ۱۲ و ثانیه ۳۰ ( قسمت سبز) شروع کن و به مدت سه دقیقه و هشت ثانیه فیلم رو کات کن (قسمت صورتی). تکه کات شده با نام جدید و با پسوند mp4 در همون محل فایل اصلی ذخیره میشه.

1 2 3 4 5 6 7 ...