باگ درایور اینتل در پخش ویدیوها

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

متاسفانه یک باگ حل نشده در درایور اینتل وجود داره که ابزارهایی مثل totem و parole که با gstreamer کار میکنند توی پخش فیلمهای h.264 مشکل دارند. و با پیام خطای intel_do_flush_locked failed: No such file or directory مواجه میشن.

یک راه اینه که gstreamer1-vaapi رو حذف کنیم. یک راه هم اینه که در پوشه /etc/profiles.d یک فایل sh ایجاد کنیم با این محتوی:

#!/bin/bash
export LIBGL_DRI3_DISABLE=1

محض یاد آوری بود..

فعال/غیرفعال کردن touch screen در Manjaro

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

در مانجارو xinput برای مدیریت ورودی های کامپیوتر نصب شده. مثل وبکم، کیبور، ماوس، تاچ پد و ... با اجرای xinput لیستی از این موارد رو میبینید:

[amin@ASUS ~]$ xinput
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ Elan Touchpad                               id=12    [slave  pointer  (2)]
⎜   ↳ USBest Technology SiS HID Touch Controller    id=10    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
  ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
  ↳ Power Button                                id=6    [slave  keyboard (3)]
  ↳ Video Bus                                   id=7    [slave  keyboard (3)]
  ↳ Video Bus                                   id=8    [slave  keyboard (3)]
  ↳ Sleep Button                                id=9    [slave  keyboard (3)]
  ↳ USB2.0 HD UVC WebCam                        id=11    [slave  keyboard (3)]
  ↳ Asus WMI hotkeys                            id=13    [slave  keyboard (3)]
  ↳ AT Translated Set 2 keyboard

همون طور که میبینید تاچ اسکرین لپتاپ با ID شماره 10 مشخص شده که یک چیز ثابتی هست.

حالا با این دستور ها میتونید به راحتی هر کدوم از این ها رو فعال یا غیر فعال کنید:

xinput disable 10
xinput enable 10

ادامه مطلب

حذف lag در Gnome Shell در xorg

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

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

nano ~/.drirc

با این محتوی:

<device screen="0" driver="dri2">
      <application name="Default">
              <option name="vblank_mode" value="0"/>
      </application>
</device>

حالا همه چی خیلی روان تر و لذت بخش تر شده.

حذف فایل ها با پسوند خاص در همه دایرکتوری ها

ممکنه یک وقت یک فول آلبوم موسیقی دانلود کنید، سایتها علاوه بر اینکه توی هر سوراخی که بتونن اسم خودشون رو مینویسند، ممکنه تعداد زیادی فایلهای txt و url هم توی هر پوشه ای قرار داده باشند.

برای اینکه به راحتی کل این فایلهای مزاحم رو حذف کنیم کافیه در پوشه ی دایرکتوری فول آلبوم این دستور رو اجرا کنیم

find . -type f -name '*.txt' -delete

یا

find . -type f -name '*.txt' -exec rm {} \;

یا

rm -- **/*.txt

که طبیعتا بجای txt میتونید هر چیز دیگه ای قرار بدید. اما مواظب باشید که این رو در دایرکتوری های عقب تر مثل فولدر home اجرا نکنید که... وا مصیبتا!

تغییر در دستور rm

دستور rm برای حذف فایلها و دایرکتوری ها استفاده میشه. اما به نظر من نیاز بود که چند تا تغییر کوچولو بکنه.

برای اینکه دایرکتوری هایی که خالی نیستند هم بتونیم با این روش حذف کنیم (که ایراد میگیره و میگه این دایرکتوری خالی نیست) میتونیم از سوییچ زیر استفاده کنیم:

rm -rvI

همچنین سوییچ -I میگه که اگه توی اون دایرکتوری بیش از ۳ فایل وجود داشت، اول بپرس بعد اگه گفتم بله y حذفشون کن. سوییچ -v هم میگه کارهایی که انجام دادی رو بهم نشون بده.

میتونیم alias زیر رو به فایل ~/.bashrc اضافه کنیم تا از این به بعد دستور rm بطور پیشفرض همین عمل رو انجام بده

alias rm="rm -rvI"

چند ترفند در مورد زمان

چند تا ترفند و اسکریپت در مورد زمان درست کردم که ممکنه به دردمون بخوره

اعلام زمان

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

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

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

یک تایمر ساده

اسکریپت بعدی که توی اینترنت پیداش کردم و با 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. " && paplay /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 اجرا نمیشه.




حاصل سر و کله زدن های من با لینوکس