لینوکس و من

نمایش ستاره در محل تایپ پسورد sudo

نویسنده : امین | تاریخ: 1396/10/25

همون طور که میدونید اجرای دستور sudo منوط به تایپ پسورد هست. اما در حین تایپ چیزی نشون داده نمیشه. میتونیم با یه کلک ساده کاری کنیم که موقع تایپ پسورد برای دستور sudo ستاره گذاشته بشه.


برای این کار باید فایل etc/sudoers/ رو ویرایش کنیم. راه صحیح و اصولیش اینه که با این دستور این کار رو بکنیم:
 sudo visudo
اما کار با این روش خیلی روی اعصابه! من با gedit به راحتی این کار رو میکنم:
sudo gedit /etc/sudoers
دنبال عبارت Defaults env_reset بگردید. و اون رو به Defaults env_reset,pwfeedback تغییر بدید. اگر نبود، اضافه کنید. فایل رو ذخیره کنید و در ترمینال دستور reset رو اجرا کنید تا تغییرات اعمال بشه.

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

صداهای مختلف برای کارهای مختلف

نویسنده : امین | تاریخ: 1396/10/8

در این مطلب میخوایم سعی کنیم صداهای مختلفی برای کارهای زیر تعریف کنیم تا تجربه ی لذت‌بخش تری در کار با کامپیوتر لینوکسیمون داشته باشیم:
  • صدای startup وقتی که وارد دسکتاپ میشیم
  • صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
  • صدای logout وقتی که از دسکتاپ خارج میشیم
  • صدای lock و unlock شدن دسکتاپ
  • صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid
  • پخش صدا هنگام فشردن دکمه ی پاور
هر کدوم اینها روش خودش رو داره. توجه کنید که ما از Manjaro و دسکتاپ Gnome استفاده میکنیم. بنابراین ممکنه برای توزیع و دسکتاپ شما تفاوت داشته باشه.
و نکته دیگه اینکه ما برای پخش صدا از aplay استفاده میکنیم که بخشی از alsa است. بنابراین در هر لینوکسی که صدا ازش در میاد وجود داره! اما توجه کنید که فایلهای شما باید wav باشند. اگر فایل شما مثلا mp3 هست میتونید به راحتی با کمک ffmpeg اون رو به wav تبدیل کنید:
ffmpeg -i '/path-to-sound-file/startup.mp3'  '/path-to-sound-file/startup.wav'


من از صداهای پیشفرض ویندوز ۷ استفاده کردم! صداهای دلنشین و قشنگی داره. میتونید با یک جست و جوی ساده مثلا از اینجا دانلود کنید و فایلهای مورد نظرتون رو در مسیری که میخواید قرار بدید. مثلا میشه اونها رو در مسیر usr/share/sounds/win7/ قرار داد.

صدای startup وقتی که وارد دسکتاپ میشیم
خب این خیلی ساده است و ربطی به توزیع و دسکتاپ خاصی نداره. به راحتی دستور زیر رو در استارتاپ دسکتاپ خودتون به روشهایی که بلد هستید قرار بدید:
aplay '/usr/share/sounds/win7/startup.wav'

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

صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
روشی که برای این هدف استفاده میکنیم در توزیع هایی عملی است که از systemd استفاده میکنند. البته اکثر توزیع های امروزی همینجوری هستند. ما یک سرویس درست میکنیم که درست قبل از خروج از سیستم عامل اجرا بشه و دستور مورد نظر ما رو اجرا کنه، که در اینجا پخش یک صدا است.
sudo gedit /etc/systemd/system/shutdown-sound.service
--------------------------------


[Unit]
Description=Play sound before shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/local/bin/sound-shutdown

[Install]
WantedBy=multi-user.target
و بعد میبایست این سرویس رو فعال کنیم:
sudo systemctl enable shutdown-sound
sudo systemctl start shutdown-sound


قسمت نارنجی بالا در واقع اسکریپتی است که صدا رو پخش میکنه. چیز خاصی نداره. اسکریپت رو در مسیر مورد نظرتون با این محتوی ایجاد کنید و مجوز اجرایی هم بهش بدید. توجه کنید که مسیر فایل صدا رو هم در اسکریپت زیر درست تعیین کنید.
sudo gedit /usr/local/bin/sound-shutdown
-------------------------------

#!/bin/bash
aplay  '/usr/share/sounds/win7/shutdown.wav'


صدای logout وقتی که از دسکتاپ خارج میشیم

این روشی که بکار میبریم مختص gdm هست. یعنی login manager مخصوص گنوم. اگر از lightdm یا xdm یا چیز دیگه ای استفاده میکند دنبال روش خودشون بگردید. برای gdm کافیه فایل زیر رو باز کنیم و دستور پخش صدا رو قبل از exit قرار بدیم:
sudo gedit /etc/gdm/PostSession/Default
-------------------------------


#!/bin/sh
aplay  '/usr/share/sounds/win7/logout.wav'

exit 0


صدای lock و unlock شدن دسکتاپ گنوم

خیلی جالب میشد اگر مثل موبایلها وقتی صفحه لاک/آنلاک میشد یه صدای کلیک یا هر چی پخش میشد! کافیه اسکریپت زیر رو درست کنید و در استارتاپ قرار بدید.
sudo gedit /usr/local/bin/sound-unlock
-------------------------------

#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
  while read x; do
    case "$x" in
      *"boolean true"*) aplay '/usr/share/sounds/win7/lock.wav' ;;
      *"boolean false"*) aplay '/usr/share/sounds/win7/unlock.wav' ;; 
    esac
  done


صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid

این کار با استفاده از acpid انجام میشه که معمولا در اکثر توزیع ها نصب هست. اگر نصب نیست اون رو نصب کنید و سرویسش رو فعال کنید:
1. sudo pacman -S acpid
2. sudo systemctl enable acpid
3. sudo systemctl start acpid


acpi یکی از کارهاش اینه که اتفاقات خاصی رو رصد میکنه و بر اساس اونها اقدامات مورد نظر رو انجام میده. ما میتونیم این رو به دلخواه خودمون انجام بدیم. مثلا بگیم وقتی Lid لپتاپ بسته شد، یا باز شد فلان دستور (پخش صدا) انجام بشه. این رو قبلا برای قطع صدا هنگام خروج هدفون در وبلاگ نوشته بودم.
برای این کار، در مسیر زیر فایلی با چنین محتوی ایجاد کنید:
sudo gedit /etc/acpi/events/lidopen
-----------------------------

event=button/lid LID open
action=/usr/local/bin/sound-lidopen

اسکریپت sound-lidopen هم در مسیر مورد نظرتون بسازید و مجوز اجرایی بهش بدید و محتوای زیر رو درون اون قرار بدید:
#!/bin/bash
#This runs so that root can run the following command under the user's environment
source /home/amin/.Xdbus
#play a open sound
DISPLAY=:0.0 su amin -c "aplay '/usr/share/sounds/win7/lidopen.wav'"
به جای amin باید نام کاربری خودتون رو قرار بدید.  همین کارها رو برای LID close هم انجام بدید. منتها open رو با close جایگزین کنید.

حالا باید یک کار دیگه هم بکنیم!

اسکریپت زیر رو بسازید و یک بار اون رو اجرا کنید:
#!/bin/sh

touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus

exit 0

با این کار فایلی در پوشه home نام کاربری شما ساخته میشه به نام Xdbus. که نباید اون رو حذف کنید.

پخش صدا در هنگام فشردن دکمه ی پاور
این کار هم درست مثل مرحله بالا که در مورد acpi گفتیم انجام میشه. منتها به جای event=button/lid LID open باید بذاریم event=button/power PBTN

این عبارت button/power PBTN ممکنه در لپتاپ های مختلف فرق داشته باشه. برای اینکه بفهمید برای لپتاپ شما دقیقا چیه، یک بار در خط فرمان دستور acpi_listen رو اجرا کنید و بعد دکمه ی پاور رو بزنید. آنچه که نشان میدهد مقصود است!

تغییر خودکار هدست بلوتوث بعد از اتصال

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

وقتی یک هدست بلوتوث کانکت میکنیم، باید به تنظیمات صدا بریم و خروجی رو روی اون تنظیم کنیم. میتونیم این کار رو خودکار کنیم! یعنی وقتی هدست کانکت شد، خروجی صدا به هدست منتقل بشه و دیگه لازم نباشه وارد تنظیمات بشیم.

باید فایل etc/pulse/default.pa/ رو باز کنیم و عبارت زیر رو بهش اضافه کنیم:
# automatically switch to newly-connected devices
load-module module-switch-on-connect
و بعد یک بار restart (البته میشه خود pulse رو ری استارت کرد: pulseaudio -k)

انجام Hybernate بعد از مدت مشخصی Suspend

نویسنده : امین | تاریخ: 1396/09/27

ما معمولا در لینوکس سیستم رو suspend میکنیم. خب این کار هزینه داره و از باتری یا برق برای فعال بودن استفاده میکنه. میتونیم در آرچی ها با سرویسی که در ادامه ایجاد میکنیم به سیستم میگیم که اگر بعد از ۲ ساعت suspend کسی resume نکرد، سیستم رو hybernate کن. این طوری مصرف باتری‌مون بهینه تر میشه و منطقی تر هم هست. البته به شرطی که swap داشته باشید.

ابتدا باید سرویس مورد نظرمون رو در systemd بسازیم:
--------------------------------------------------------
sudo gedit /etc/systemd/system/suspend-to-hibernate.service
--------------------------------------------------------

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment="WAKEALARM=/sys/class/rtc/rtc0/wakealarm"
Environment="SLEEPLENGTH=+2hour"
ExecStart=-/usr/bin/sh -c 'echo -n "alarm set for "; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM'
ExecStop=-/usr/bin/sh -c '\
  alarm=$(cat $WAKEALARM); \
  now=$(date +%%s); \
  if [ -z "$alarm" ] || [ "$now" -ge "$alarm" ]; then \
     echo "hibernate triggered"; \
     systemctl hibernate; \
  else \
     echo "normal wakeup"; \
  fi; \
  echo 0 > $WAKEALARM; \
'

[Install]
WantedBy=sleep.target


و بعد سرویس رو فعال می کنیم:
1. sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service

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

غیر فعال کردن wakeup برای USBها

نویسنده : امین | تاریخ: 1396/09/27

متوجه شدم که ماوس وایرلس باعث میشه بعد از suspend با حرکت دادن یا کلیک کردن، لپتاپ resume بشه. گشتی زدیم و راه حل یافتیم. باید یک سرویس برای systemd درست کنیم و این موضوع رو غیر فعال کنیم!

--------------------------------------------------------
sudo nano /etc/systemd/system/disable-usb-wakeup.service
--------------------------------------------------------
[Unit]
Description=Disable USB wakeup triggers in /proc/acpi/wakeup

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup"
ExecStop=/bin/sh -c "echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

حالا سرویس رو فعال میکنیم:
1. sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


اجرای برنامه های گرافیکی تحت root در wayland

نویسنده : امین | تاریخ: 1396/07/27

باز هم wayland! در این سیستم شما نمیتونید برنامه های گرافیکی (مثلا nautilus) رو با دستور sudo یا روش های مشابه اجرا کنید. برای حل این مشکل (که از دید توسعه دهنده ها این یه ویژگی است نه مشکل!) قبل از اجرای دستور مورد نظر، این دستور رو اجرا میکنیم:
xhost si:localuser:root
میتونیم اینو در startup بذاریم تا دیگه نیاز نباشه خودمون دستی اجراش کنیم.
البته گویا با این کار این ویژگی امنیتی wayland رو از کار میندازیم. ولی آخه برادر من... مگه تا حالا چه مشکلی ایجاد کرده بود.

تنظیم نور مانیتور در wayland

نویسنده : امین | تاریخ: 1396/07/25

لپتاپ هایی هستن که در اثر یک سری تنظیماتی که به ناچار باید در خط کرنل لینوکس در گراب انجام بشه، دکمه های تنظیم نور صفحه مانیتور دیگه کار نمیکنند. لپ‌تاپ های ASUS این جوری اند. بنابراین باید با ابزارهای کمکی برای تنظیم نور مانیتور با استفاده از کیبورد، یه فکری میکردیم. در xorg این کار به خوبی با چیزی مثل xbacklight انجام میشه. اما در wayland اوضاع فرق میکنه و ابزارهای x دیگه کار نمیکنند.

اما میتونیم با استفاده از brightnessctl که در مخازن AUR آرچ وجود داره این مشکل رو برطرف کنیم. برای این کار اول باید اون رو نصب کنیم:
yaourt -S brightnessctl
و بعد باید عبارت زیر رو در فایلی در مسیر زیر ذخیره کنیم:
/etc/udev/rules.d/90-brightnessctl.rules
-----------------------------------------------------

ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp input /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"
و بعد از نصب با دستوری مشابه دستور زیر میتونیم نور رو کم کنیم:
brightnessctl s 50-
یا نور رو زیاد کنیم:
brightnessctl s +50
اینها رو میتونید به عنوان یک شورتکات کیبورد در نظر بگیرید.

خاموش کردن مانیتور در گنوم با wayland

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

اگر xorg داشته باشید و بخواید با یک دستور در خط فرمان (یا شورتکات کیبورد) مانتیور رو خاموش کنید میتونید از این مطلب استفاده کنید. ربطی هم به دسکتاپی که استفاده میکنید نداره. اما در wayland این دستور کار نمیکنه، چون با ابزارهای مربوط به xorg نوشته شده.
اما در دسکتاپ گنوم که با wayland اجرا شده باشه اگر بخواید مانیتور رو خاموش کنید، این دستور میتونه به نوعی کمکتون کنه:
 busctl --user call org.gnome.Shell /org/gnome/ScreenSaver org.gnome.ScreenSaver SetActive b true
با اینکار Screen Shield گنوم ظاهر میشه و مانیتور هم خاموش میشه. میتونید این رو به یک شورتکات کیبورد هم بدید.

اگر شما راه دیگه ای بلد هستید خوشحال میشیم در قسمت نظرات با ما و بقیه دوستان به اشتراک بذارید.

wayland و تجربه نه چندان جالب در سطح کاربر نهایی

نویسنده : امین | تاریخ: 1396/07/14

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

اول از همه اینکه Gnome که دسکتاپ مورد انتخاب من هست به طور پیش فرض از wayland پشتیبانی میکنه. و کم کم افزونه هایی که برای این دسکتاپ نوشته میشه بر همین اساس نوشته میشه. پس من تصمیم گرفتم برای اینکه سیستم به روزی داشته باشم گنوم رو با wayland اجرا کنم. (موقع لاگین کردن میتونید انتخاب کنید)
در ابتدا همه چی خوبه و طبیعی به نظر میرسه. (گنوم ۳.۲۴) اما یکم که کار میکنید متوجه کمبود های این سیستم میشید.

۱- برای اینکه یک دسکتاپ و گرافیک یک پارچه داشته باشید باید همه ی برنامه هایی که اجرا میکنید از wayland پشتیبانی کنند. اما بعضی از برنامه ها، حتی برنامه های اصلی مثل فایرفاکس، کروم، و ... از wayland پشتیبانی نمیکنند. بنابراین اومدن یک چیزی به نام xwayland درست کردن که برنامه هایی که با xorg کار میکنن بتونن توی محیط wayland هم کار کنن. این خودش دو دستگی بوجود میاره. مثلا وقتی میخواید پنجره اون برنامه رو resize کنید، یک مربع مشکی دور اون پنجره پدیدار میشه که تو ذوقتون میزنه.

۲- در یک باگ شناخته شده، وقتی در برنامه هایی که از چند Tab پشتیبانی میکنن، با باز شدن تب های جدید برنامه اصطلاحا focus نمیشه. یعنی چی؟ یعنی مثلا اگه شما در gedit یک فایل متنی رو باز کرده باشید و حالا رفته باشید توی فایل منیجر، یا ftp منیجر، یک فایل متنی دیگه رو باز میکنید، برنامه gedit در پس زمینه فایل رو براتون باز میکنه اما دیگه gedit نمیاد روی پنجره ها قرار بگیره. و شما مجبورید بعد از باز کردن فایل جدید خودتون به gedit سوییچ کنید. این آزار دهنده است.

۳- متاسفانه بسیاری از ابزارهای X دیگه روی wayland کار نمیکنن. مثلا xdotool. یعنی دیگه نمیشه مولتی تاچی که با libinput-gestures ایجاد کرده بودیم توی wayland داشته باشیم. چون این میومد با xdotool حرکات تاچپد رو به شورتکات های کیبورد تبدیل میکرد و ما به راحتی میتونستیم هر نوع ترکیبی که بخوایم ایجاد کنیم. (قبلا در وبلاگ معرفی کردم). ولی حالا دیگه نمیشه. یک افزونه برای گنوم ساختن که حرکات سه انگشتی رو به شورتکات های تاچپد اضافه میکنه، اما فقط دو سه تا حرکت از  پیش تعیین شده و بی فایده. و خیلی از دستورات و اسکریپتهایی که در گذشته استفاده میکردید که با اونها پنجره هاتون رو مدیریت کنید هم دیگه کار نمیکنن. چون همه ی اونها با ابزار های تحت X کار میکنن.

۴- بعد از مدتی که در محیط wayland کار میکنید، دچار lag های اعصاب خوردکنی میشه. که مجبورید logout کنید تا راحت شید. مخصوصا در فایرفاکس. این هم یک باگ شناخته شده است که هنوز راه حلی در موردش ندارند.

۵- حتی کنترل نور مانیتور هم اگر از ابزارهایی مثل xbacklight استفاده میکردید دیگه نمیشه، و باید دنبال چیزهای جایگزین بگردید.

۶- باگ شناخته شده ی بعدی اینه که در برنامه Archive گنوم، نمیتونید فایلها رو از داخل آرشیو بکشید و توی Nautilus اکسترکت کنید. یعنی drag & drop نمیشه.

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

تبادل لینک با وبلاگ لینوکس و من

نویسنده : امین | تاریخ: 1396/07/10

سلام،
همون طور که احتمالا میدونید وبلاگ لینوکس و من از مهر ماه سال ۸۸ ایجاد شده و همچنان به فعالیت خودش ادامه میده. نمیدونم این رو بگیم از قدیمی های این حوزه یا نه، اما به هر حال ۸ سال زمان کمی نیست.
در این مدت از سال ۹۴ تصمیم گرفته شد که وبلاگ به صورت گروهی به کارش ادامه بده، و از اون زمان به بعد دوستان خوبی به لینوکس و من پیوستند و نوشته های خیلی خوبی در وبلاگ فرستادند.
خدا رو شکر ما همچنان به کارمون ادامه میدیم و از تجربیاتمون در کار با این سیستم عامل خوب مینویسیم. و باز خدا رو شکر بازدید خوبی هم داریم.
در سال ۹۵ ما یک اصطلاحا سیاره لینوکس ایجاد کردیم، با این هدف که وبلاگ هایی رو که در مورد لینوکس مینویسند یکجا جمع کنیم تا بتونیم اونها رو بصورت یک RSS واحد داشته باشیم و از آخرین نوشته ها و اخبار در وبلاگستان لینوکس فارسی باخبر بشیم. با اینکه سیاره لینوکس سایت sito وجود داره و به کارش ادامه میده، اما بد نیست یک چیز مشابه دیگه هم داشته باشیم که اگر خدای نکرده اتفاقی افتاد، جایگزینی وجود داشته باشه.
اگر دوست داشتید لینک شما در قسمت لینک دوستان قرار بگیره و وبلاگتون در سیاره لینوکس فارسی ما اضافه بشه، میتونید در همین مطلب یا در اینجا کامنت بذارید.
همچنین اگر میخواید عضوی از نویسندگان وبلاگ باشید میتونید در همین نوشته و یا در اینجا اعلام کنید، با شما تماس میگیریم.

1 2 3 4 5 6 7 ...