لینوکس و من

برگرداندن backspace به nautilus

از وقتی گنوم ۳ اومد همین طور از قابلیت های شخصی سازی دسکتاپ کمتر و کمتر شد. تا اینکه متوجه شدم در نسخه 3.20 که الان نصبه فایل منیجر Nautilus قابلیت backspace که یک فولدر به عقب برمیگشت رو نداره! و توسعه دهندگان تصمیم گرفتند از Alt و کلید های جهت‌نمای کیبورد استفاده کنند و هیچ حق تغییر هم به کاربر ندادند.
خیلی گشتم تا این اسکریپت پایتون رو پیدا کردم که باعث میشه این قابلیت برگرده. برای این منظور اول از github دانلودش کنید و اون رو در مسیر زیر قرار بدید، و اگر فولدرها وجود ندارند اونها رو بسازید
~/.local/share/nautilus-python/extensions/


بسته python-nautilus هم باید نصب باشه. و یک بار با سوییچ q باید nautilus رو از نو اجرا کنید تا تاثیرش رو ببینید.
اگر در آینده لینک اسکریپت خراب شد، در ادامه همین مطلب میتونید ببینیدش. اون رو در یک فایل پایتون با پسوند py ذخیره کنید و در مسیر بالا قرار بدید.

محافظت از چشم ها در برابر نور مانیتور

اسکریپت redshift از چشمان شما در برابر میزان حرارت نور مانیتور محافظت میکنه. قبلا در این مورد خیلی خلاصه گفته بودم. اما بد نیست کمی این مورد رو بیشتر بررسی کنیم. اول اینکه redshift رو از مخازن توزیع خودتون نصب کنید. در دسکتاپ های مبتنی بر gtk آیکن مربوطه در منوها قرار میگیره و شما با اجرای اون یک سری تنظیمات پیشفرض ردشیفت براتون اعمال میشه و همچنین آیکن در tray icon قرار میگیره.
اما برای اینکه میزان تاثیر ردشیفت و همچنین محل جغرافیاییتون رو مشخص کنید، بهتره یک فایل کانفیگ بسازیم.



بعد از نصب، فایل کانفیگ رو میسازیم
gedit ~/.config/redshift.conf

و این محتوی رو در اون ذخیره میکنیم
 ; Global settings for redshift
[redshift]
; Set the day and night screen temperatures
temp-day=6000
temp-night=5600


; Enable/Disable a smooth transition between day and night
; 0 will cause a direct change from day to night screen temperature.
; 1 will gradually increase or decrease the screen temperature.
transition=1

; Set the screen brightness. Default is 1.0.
;brightness=0.9
; It is also possible to use different settings for day and night
; since version 1.8.
;brightness-day=0.7
;brightness-night=0.4
; Set the screen gamma (for all colors, or each color channel
; individually)
gamma=0.8
;gamma=0.8:0.7:0.8
; This can also be set individually for day and night since
; version 1.10.
;gamma-day=0.8:0.7:0.8
;gamma-night=0.6

; Set the location-provider: 'geoclue', 'geoclue2', 'manual'
; type 'redshift -l list' to see possible values.
; The location provider settings are in a different section.
location-provider=manual

; Set the adjustment-method: 'randr', 'vidmode'
; type 'redshift -m list' to see all possible values.
; 'randr' is the preferred method, 'vidmode' is an older API.
; but works in some cases when 'randr' does not.
; The adjustment method settings are in a different section.
adjustment-method=randr

; Configuration of the location-provider:
; type 'redshift -l PROVIDER:help' to see the settings.
; ex: 'redshift -l manual:help'
; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
; are negative numbers.
[manual]
lat=36.28
lon=50.0


; Configuration of the adjustment-method
; type 'redshift -m METHOD:help' to see the settings.
; ex: 'redshift -m randr:help'
; In this example, randr is configured to adjust screen 1.
; Note that the numbering starts from 0, so this is actually the
; second screen. If this option is not specified, Redshift will try
; to adjust _all_ screens.
[vidmode]

قسمت lat و long مربوط به عرض و طول جغرافیایی محل زندگی شماست. برای اینکه برنامه بتونه شب و روز رو تشخیص بده. این سایت میتونه بر اساس ip این اطلاعات رو در اختیار شما قرار بده.
قسمت temp هم میزان حرارت نور در روز و شب رو مشخص میکنه. من که با تنظیمات پیشفرضش راخت نبودم. تصویر دیگه خیلی زرد میشد. همین مقادیر به نظرم مناسب اومد.
بعد از ذخیره این تنظیمات، حالا redshift رو اجرا کنید.

چند اسکریپت در مورد زمان (ویرایش شد)

اولی ساعت رو به همراه میزان زمانی که کامپیوتر روشن بوده بوسیله notify-osd اعلام میکنه. به درد مواقعی میخوره که شما در حالت فول اسکرین یک برنامه هستید و به ساعت دسترسی ندارید، با یه شورتکات میتونید این اسکریپت رو اجرا کنید. همچنین میتونید به cron بدید تا مثلا سر هر ساعت یه نوتیفیکیشن بیاد و ساعت رو به شما اعلام کنه!


#!/bin/bash
play /usr/share/sounds/freedesktop/stereo/message-new-instant.oga && /usr/bin/notify-send -u critical -i "clock" "Clock" "Its $(date +%H:%M) now. Uptime: $(uptime | sed 's/.*up \([^,]*\), .*/\1/')"



شما میتونید به جای دستور play از mplayer یا cvlc یا چیزای دیگه هم استفاده کنید. و فایل صدای ساعت رو هم به دلخواه خودتون تعیین کنید.

اسکریپت بعدی که توی اینترنت پیداش کردم و با notify-osd ترکیبش کردم بوسیله zenity یه تایمی از شما میگیره و بعد از اون تایم به شما یه نوتیفیکیشن میده. یعنی یه تایمر بسیار ساده.


#!/bin/bash
    # This script asks the user for a time, waits the specified amount
    # of time, and shows an alert dialog.

    TIME=$(zenity --entry --title="Timer" --text="Enter a duration for the timer.\n\n Examples: 5s or 5m or 5h")

    sleep $TIME

    /usr/bin/notify-send -u critical -i "clock" "Ding Ding!" "It has been $TIME. " && play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga











تقویم های فارسی ای وجود دارند که ممکنه به سلیقه هر کسی خوش نیان. یا اینکه ممکنه فقط نیاز داشته باشید بدونید امروز چندمه! با یه اسکریپت ساده notify-osd میتونیم اینجوری تقویم رو داشته باشیم

قبلش باید jdate رو نصب کنید و بعد با این دستور میتونید این نوتیفیکیشن رو داشته باشید:
/usr/bin/notify-send -u critical -i "date" "تاریخ شمسی" "امروز، $(jdate +%G\ %W)"
با گذاشتتن یک شورتکات یا alias خیلی راحت تاریخ شمسی رو میتونیم داشته باشیم.

اما برای گذاشتن این موارد در cron باید یه تغییراتی در اسکریپت بدیم. خروجی دستور زیر رو کپی کنید:

set | grep DBUS_SESSION_BUS_ADDRESS



مثلا میشه این:
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus


بعد این رو در ابتدای اسکریپت قرار بدید:
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus


وگرنه notify-send در cron اجرا نمیشه.

نصب Manjaro Linux روی لپ‌تاپ ASUS n501 (ویرایش شد)

این مطلب بیشتر جنبه ی یادآوری برای خودم داره که اگر در آینده دچار مشکل شدم بتونم رجوع کنم. اما کسانی هم که از لپتاپ های جدید سری n شرکت ASUS استفاده میکنند و میخوان که لینوکس روش نصب کنند (در اینجا مانجارو) میتونن از این مطلب استفاده کنند.
ویرایش: متوجه شدم که گویا کلا با nvidia مشکل داره و سایر مدل های لپتاپ ها و حتی دسکتاپ هم این مشکل رو دارند. اما راه حال یکسانه

با روش های موجود iso این توزیع رو روی فلش مموری میریزیم و سعی میکنیم که لپتاپ رو با اون بوت کنیم! در همین ابتدای کار در حین بوت لایو شما با پیام خطای A start job is running for LiveMedia MHWD Script روبرو میشید و مانجارو بالا نمیاد. این پیام مربوط میشه درایور گرافیک لپتاپ که بوسیله mhwd که مختص مانجارو هست مدیریت و نصب میشه. که در اینجا ظاهرا نتونسته درست مدیریت کنه. برای دور زدن این خطا و بوت کردن لایو مانجارو باید موقع بوت روی خط بوت کلید e رو بزنیم و این خط رو به انتهاش اضافه کنیم و بعد با F10 بوت کنیم
xdriver=mesa

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

برای اینکه این مشکل بر طرف بشه، طبق این ویکی باید در خط کرنل موقع بوت این تنظیمات رو اعمال کنیم (در پایین توضیح دادم)
i915.enable_execlists=0 acpi_backlight=native acpi_osi=! acpi_osi='Windows 2009'


اما با تعیین کردن acpi_osi به این شکل کلیدهای ترکیبی تنظیم نور مانیتور کار نمیکنند. اگر عبارت نارنجی رنگ بالا رو هم در خط کرنل گذاشته باشیم تنظیم نور مانیتور از طریق دستور در ترمینال کار خواهد کرد.
برای این کار دو راه داریم. یکی اینکه xdotool رو نصب کنیم و با این دستور ها نور رو کم و زیاد کنیم (که میتونیم یک کیبورد شورتکات تعریف کنیم مثلا با Super+F5 و Super+F6 :
xdotool key --clearmodifiers XF86MonBrightnessUp
xdotool key --clearmodifiers XF86MonBrightnessDown



یا xorg-xbacklight رو نصب کنیم و با این دستورها کار کنیم:
xbacklight -inc 10
xbacklight -dec 10

ممکنه تاچ‌پد کار نکنه. وارد تنظیمات mouse and touchpad میشید و میبینید که تاچ‌پد شناخته شده، اما کار نمیکنه. برای حل این مشکل، یک بار این دستور رو اجرا کنید، اگر مشکل برطرف شد که شد،‌ اگر نشد باید به کرنل 4.7 آپدیت کنید.
ویرایش: کاشف به عمل اومد که اگر وارد ویندوز بشیم و بعد وارد مانجارو بشیم باید ماژول مربوط به تاچ‌پد رو به شکل زیر غیرفعال/فعال کنیم. در ریبوت های بعدی در خود مانجارو این مشکل وجود نداره. برای اینکه کلا از بابت این مشکل هم راحت بشیم میتونیم طی یک سرویس systemd این کار رو در هر بوت انجام بدیم. حالا چه قبلش توی ویندوز بودیم چه نبودیم.
sudo modprobe -r elan_i2c && sleep 2 && sudo modprobe elan_i2c
موضوع دوم، فونت ریز گراب هست. حالا که حرف از گراب زدیم، باید یه سری چیزها رو هم در این سطح انجام بدیم. به ترتیب اینکار ها رو میکنیم:
sudo gedit /etc/default/grub

فایل پیشفرض گراب باز میشه، این تغییرات رو اعمال میکنیم:
برای رزلوشن این خط رو اضافه میکنیم:
GRUB_GFXMODE="1600x1200"

در خط مربوط به کرنل اینها رو اضافه میکنیم، بصورتی که بشه این:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.enable_execlists=0 acpi_backlight=native acpi_osi=! acpi_osi='Windows 2009' "

و بعد ذیره میکنیم و سپس این دستور رو اجرا میکنیم تا منوی گراب بازسازی بشه:
sudo grub-mkconfig -o /boot/grub/grub.cfg









برای درست کردن فونت کنسول در لپتاپ های با رزولوشن بالا (HIDIP)  terminus-font رو نصب کنید و بعد :
sudo nano /etc/vconsole.conf
با این محتوی:
FONT=ter-v28b




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

نوشته های قبلی که جایگزین شدند در ادامه مطلب وجود دارن.

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

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

اول اینکه دستور اولی به این شکل بود:
ffmpeg -i '/PATH/TO/INPUT.flv'  -i /PATH/TO/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
یا
ffmpeg -i '/PATH/TO/INPUT.flv' -i /PATH/TO/wm.png -filter_complex "overlay=15:10" -preset veryfast output.mp4



دستور بالا واترمارکی که در مسیر مشخص شده قرار گرفته روی فایلی که مورد نظر ماست قرار میده و اون رو با نام output.mp4 در پوشه home کاربر میسازه. چیز جالبیه. اما راحت نیست. 15:10 هم یعنی ۱۵ واحد از سمت چپ و ۱۰ واحد از سمت بالا فاصله داشته باشه.
#!/bin/bash 
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast "new-$k"; done
یا
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex "overlay=15:10" -preset veryfast "new-$k"; done




اگه ما دستور بالا رو به این شکل در بیاریم، و اون رو در یک اسکریپت مثلا با نام addwmall قرار بدیم، و اون رو در پوشه ای که فیلمهای ما قرار دارند اجرا کنیم، فایل wm.png که باید در فولدر ویدیوها موجود باشه به تمام  فایل‌های wmv در پوشه ای که اسکریپت در اون ایجاد میشه اضافه میشه. که این هم خوبه، ولی چیزی که میخواستم اسکریپت پایینی بود که دوست خوبم در انجمن آرچ اون رو نوشت:
#!/bin/bash

path_of_first_file=$(dirname "$1")
name_of_first_file=$(basename "$1")

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

ffmpeg -i "$1"  -i "$2" \
-filter_complex "overlay=15:10" -preset veryfast "$new_output"

echo
echo "New video saved in: " "$path_of_first_file"\/$new_name
با اسکریپت بالا میتونیم دو مقدار فایل ویدیویی و فایل واترمارک رو بهش بدیم، تا یک فایل حاوی واترمارک با نام جدید در کنار فایل ویدیوی قبلی ایجاد بشه. مثلا:
addwm /PATH/TO/INPUT.flv /PATH/TO/wm.png

طبق تجربه ای که در کار با اسکریپت داشتم دریافتم که فایلهای flv وقتی روشون واترمارک میذاریم با کیفیت بدی ذخیره میشن. اگه اونها پسوند mp4 داشته باشن درست میشه. برای همین در اسکریپت بالا اون mp4. رو که برنگ سبز مشخص کردم اضافه کردم تا همه ی فایلهای واترمارک شده mp4 باشن اصلا! بنابراین میتونین اون new_ هم که با نارنجی مشخص کردم حذف کنین. چون مثلا فایلی به اسم video.flv به فایلی به اسم video.flv.mp4 تبدیل میشه و نیازی به new_ نیست.

غیر فعال کردن نمایش منوی فایرفاکس با Alt

اینکه در فایرفاکس بخوایم زبان کیبرد رو با Alt و Shift مرتب عوض کنیم و هر دفعه منوی بالای فایرفاکس ظاهر بشه، روی اعصابه! میتونیم برای غیر فعال کردن این حالت بوسیله about:config وارد تنظیمات بشیم و بعد مقدار ui.key.menuAccessKeyFocuses رو به false تغییر بدیم. برای نمایش منو هم میتونیم از ترکیب Alt + V استفاده کنیم

نمایش مقدار باتری لپتاپ در ترمینال

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

 upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage|time"


برای اینکه جالب تر بشه، میتونیم این دستور رو به صورت یک alias استفاده کنیم.

باز کردن new tab هنگام اجرای فایرفاکس

برای اینکه وقتی فایرفاکس باز میشه ما صفحه ی speed dial خود فایرفاکس رو ببینیم، باید در قسمت Prefrences در قسمت آدرس Home page اینو قرار بدیم:

about:newtab

حذف بوردر فایرفاکس در گنوم ۳

برای اینکه فضای بهتری در کار در گنوم ۳ داشته باشیم، میتونیم با این افزونه بوردر یا دکوریشن فایرفاکس رو موقعی که در حالت maximized قرار داره حذف کنیم.

اطلاعات جامع از کامپیوتر

برنامه hardinfo اطلاعات جامعی از چند و چون دستگاه لینوکسی شما ارائه میده. بدون نیاز به بکار بردن دستوراتی که مشخصات سیستم رو نشون میدن، این برنامه به راحتی هر چی که راجع به کامپیوترتون بخواید بدونید بهتون میگه



این برنامه در سیستم های آرچ به راحتی نصب میشه
 sudo pacman -S hardinfo