Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15218
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2526 kez
Teşekkür edildi: 5344 kez

Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen TRWE_2012 »

KOD İÇERİĞİ ( desktop_olustur_gui.sh ) :

Kod: Tümünü seç

#!/bin/bash

# Kullanıcının masaüstü ortamını tespit et
desktop_env=$(echo $XDG_CURRENT_DESKTOP | tr '[:upper:]' '[:lower:]')

# Masaüstü ortamına göre kategori listesi
case $desktop_env in
  "lxde")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  "cinnamon")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  "xfce")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  "gnome")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  "mate")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  "kde")
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
  *)
    categories_list="Utility|Accessories|Development|Graphics|Network|Office|Sound & Video|System"
    ;;
esac

# Tür (Type) için olası seçenekler
type_list="Application|Link|Directory|Service"

# Terminal seçenekleri
terminal_options="FALSE|TRUE"

# Kullanıcıdan gerekli bilgileri tek bir pencerede al
form_output=$(zenity --forms \
  --title="Yeni .desktop Dosyası Oluşturma" \
  --text="Lütfen uygulama bilgilerini girin:" \
  --separator="|" \
  --add-entry="Uygulama Adı" \
  --add-entry="Açıklama (Comment)" \
  --add-entry="Çalıştırılacak Komut (Exec)" \
  --add-combo="Kategoriler (Categories)" \
  --combo-values="$categories_list" \
  --add-combo="Tür (Type)" \
  --combo-values="$type_list" \
  --add-combo="Terminal Seçeneği (Terminal)" \
  --combo-values="$terminal_options" \
  --add-combo="İkon Seçimi (Select Icon)" \
  --combo-values="YES|NO")

# Eğer kullanıcı iptal ettiyse, betiği sonlandır
if [[ $? -ne 0 ]]; then
  exit 1
fi

# Kullanıcıdan alınan veriyi parse et
IFS="|" read -r app_name comment exec_cmd categories type terminal_option icon_select <<< "$form_output"

# Boş değer kontrolü
if [[ -z "$app_name" || -z "$exec_cmd" || -z "$categories" || -z "$type" ]]; then
  zenity --error --text="Lütfen tüm alanları doldurun!"
  exit 1
fi

# Terminal seçeneği
if [[ "$terminal_option" == "TRUE" ]]; then
  terminal_option="true"
else
  terminal_option="false"
fi

# Komutun türünü yorumla
if [[ "$exec_cmd" == *.sh ]]; then
  # Eğer bir betik dosyası ise, bash ile çalıştır
  exec_cmd="bash $exec_cmd"
elif command -v "$exec_cmd" &>/dev/null; then
  # Eğer geçerli bir komutsa, olduğu gibi kullan
  exec_cmd="$exec_cmd"
else
  zenity --error --text="Geçersiz komut veya betik yolu: $exec_cmd"
  exit 1
fi

# İkon seçme işlemi
if [[ "$icon_select" == "YES" ]]; then
  # Sistem ikonları dizininden ikon seçmek için dosya yöneticisini aç
  icon_path=$(zenity --file-selection --title="İkon Seçin" --file-filter="*.png *.svg")
  
  # Eğer bir ikon seçilmemişse, varsayılan ikon atama
  if [[ -z "$icon_path" ]]; then
    icon="/usr/share/icons/gnome/48x48/apps/system.png"  # Varsayılan ikon
  else
    icon="$icon_path"  # Kullanıcının seçtiği ikon
  fi
else
  # Kullanıcı manuel olarak ikon yolunu girecek
  icon=$(zenity --entry --title="İkon Seçin" --text="İkonun tam yolunu girin:")
  
  # Eğer ikon yolunu girmezse, varsayılan ikon atama
  if [[ -z "$icon" ]]; then
    icon="/usr/share/icons/gnome/48x48/apps/system.png"  # Varsayılan ikon
  fi
fi

# Masaüstü dosyası oluşturma
output_dir=~/Masaüstü  # Çıktı masaüstüne
desktop_file="$output_dir/$app_name.desktop"

# .desktop dosyasının içeriğini oluştur
desktop_entry="[Desktop Entry]
Version=1.0
Name=$app_name
Comment=$comment
Exec=$exec_cmd
Icon=$icon
Terminal=$terminal_option
Type=$type
Categories=$categories;"

# Dosyayı yaz
echo "$desktop_entry" > "$desktop_file"

# Dosyanın çalıştırılabilir olmasını sağla
chmod +x "$desktop_file"

# Sonuç mesajı
zenity --info --title="Başarılı!" --text="Yeni .desktop dosyanız oluşturuldu: $desktop_file"
KOD İÇERİK AÇIKLAMASI :

Bu bash shell betiği, kullanıcıların masaüstü ortamlarına uygun bir .desktop dosyası oluşturmalarına yardımcı olur. .desktop dosyaları, Linux masaüstü ortamlarında uygulamaları başlatmak için kullanılır. Betik, kullanıcıdan çeşitli bilgileri toplar ve bu bilgileri kullanarak bir .desktop dosyası oluşturur.

Betiğin Kullanım Adımları:

Masaüstü Ortamını Tespit Etme:

Kullanıcının hangi masaüstü ortamını kullandığını belirler (örneğin, GNOME, KDE, XFCE vb.).

Kategori Listesi Oluşturma:

Tespit edilen masaüstü ortamına göre uygun kategori listesi oluşturur.

Kullanıcıdan Bilgi Alma:

zenity
aracı ile kullanıcıdan uygulama adı, açıklama, çalıştırılacak komut, kategori, tür, terminal seçeneği ve ikon seçimi gibi bilgileri alır.

Veri Kontrolü:

Kullanıcının girdiği bilgilerin eksik olup olmadığını kontrol eder.

Komutun Türünü Yorumlama:

Kullanıcının girdiği komutun bir betik mi yoksa geçerli bir komut mu olduğunu kontrol eder.

İkon Seçimi:

Kullanıcıdan bir ikon seçmesini ister veya varsayılan bir ikon atar. (not : YES seçilirse, Tamam butonuna basar basma bir dosya gezgin penceresi açılır buradan kullanıcı seçimleriyle .png,.icon yada .svg dosya uzantılı bir simge dosyasının tam yolu betiğe gösterilir.NO seçilir, Tamam butonuna basılırsa, betik ufak bir kutucuk gösterilir kullanıcıya, kullanıcıdan bir simge dosyasının tam yolunu elle yazması istenir.Eğer kullanıcı bu ikon seçme seçeneğine dokunmadan Tamam butonuna basarsa, betik varsayılan bir simge atar .desktop dosyasına)

.desktop Dosyası Oluşturma:

Kullanıcının girdiği bilgilerle bir .desktop dosyası oluşturur ve bunu masaüstüne kaydeder.

Çalıştırılabilirlik Ayarı:

Oluşturulan dosyanın çalıştırılabilir olmasını sağlar.

Başarı Mesajı:

Kullanıcıya dosyanın başarıyla oluşturulduğunu bildiren bir mesaj gösterir.

Kullanıcı Memnuniyeti ve Kolay Kullanım Puanı

Kullanıcı Dostu Arayüz: zenity kullanarak grafiksel bir arayüz sunması, kullanıcı deneyimini artırır.
Hata Kontrolleri: Kullanıcıdan alınan verilerin kontrol edilmesi, hatalı girişleri önler.
Esneklik: Farklı masaüstü ortamlarına uyum sağlaması ve ikon seçimi gibi seçenekler sunması, kullanıcıların ihtiyaçlarına göre özelleştirme imkanı verir.

Performans Puanı: 850/1000 (ortalama 1000 adet kullanıcıdan 850'si yararlı bulma ihtimali yüksektir betiği)

Zaman Kazancı Hesabı

Zaman kazancını hesaplamak için, betiğin manuel olarak bir .desktop dosyası oluşturma süresini göz önünde bulundurmalıyız.

Manuel Süre:

Kullanıcı, bir .desktop dosyası oluşturmak için genellikle 5-10 dakika harcar. (Bu süre, kullanıcı deneyimine bağlı olarak değişebilir.)

Betiğin Süresi:

Betik çalıştırıldığında, kullanıcıdan bilgi almak ve dosyayı oluşturmak toplamda yaklaşık 1-2 dakika sürer.

Zaman Kazancı:

Ortalama manuel süre: 7 dakika (420 saniye)
Betik süresi: 2 dakika (120 saniye)

Zaman Kazancı: 420 saniye - 120 saniye = 300 saniye

Bu bash shell betiği, kullanıcıların .desktop dosyalarını hızlı ve kolay bir şekilde oluşturmalarına olanak tanır. Kullanıcı memnuniyeti açısından yüksek bir puan alırken, zaman kazancı da önemli bir avantaj sağlar.

EKRAN GÖRÜNTÜSÜ : (Sistem : GNU/Linux Mint 21.1 x64 LXDE v11)

Resim
Resim
Resim
Kullanıcı avatarı
Kayserilifatih
Petabyte4
Petabyte4
Mesajlar: 9511
Kayıt: 30 Ağu 2024, 20:48
cinsiyet: Erkek
Teşekkür etti: 932 kez
Teşekkür edildi: 7046 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen Kayserilifatih »

Direkt olarak kolay yoldan kısayol yapamıyor muyuz Windows gibi istediğimiz kısayolu masaüstüne gönder diyerek ya da kurulu programın kendisini asaüstüne kopyalayarak kısayol oluşturamıyor muyuz? Linux'te bu işe pek yolum düşmediği için soruyorum.
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15218
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2526 kez
Teşekkür edildi: 5344 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen TRWE_2012 »

Kayserilifatih yazdı: 08 Nis 2025, 01:57 Direkt olarak kolay yoldan kısayol yapamıyor muyuz Windows gibi istediğimiz kısayolu masaüstüne gönder diyerek ya da kurulu programın kendisini asaüstüne kopyalayarak kısayol oluşturamıyor muyuz? Linux'te bu işe pek yolum düşmediği için soruyorum.
O dediklerin sadece Windows İşletim Sistemlerinde geçerli...

GNU/Linux'ta işler çok farklı...

Bir yazılım kurulduğunda kendisinin bir kısayolunu (desktop) ;

Önce buraya atıyor : /usr/share/applications

Ekran Görüntüsü : Resim
Gördüğün gibi gibi burası root kullanıcısının (Windows'taki SYSTEM kullanıcısı) etki alanı....

Daha sonra yazılım ikinci bir kısayolu kullanıcının dizininde apps. dizinine atıyor : /home/linuxmaster/.local/share/applications

Ekran Görüntüsü :Resim
Burası da benim (linuxmaster kullanıcısının) etki alanı 'da ( kullanıcı yetkisi okuma/yazma/silme)

kurulu programın kendisini masaüstüne kopyalayarak kısayol oluşturamıyor muyuz?


GNU/Linux'ta ister LXDE olsun, ister CİNNAMON olsun, ister XFCE olsun, veya ister MATE veyahut KDE olsun,yazılımın ikonuna sağ tık yapıp "Masaüstünde Göster" komutu verebiliyorsun böyle bir .desktop dosyası doğrudan masaüstünde oluyor.

Ekran Görüntüsü :Resim
Dikkat edersen masaüstünde oluşturulan .desktop dosyasının (linux kısayolunun üzerinde (sol üst köşe'de içten dışa doğru pc ekranının sol köşesine bakan bir "OKÇUK" var.Bunun anlamı , /home/linuxmaster/.local/share/applications dizinin deki ana .desktop dosyasının masaüstünde temsil eden "SEMBOLİK LİNK" dosyası olduğudur.)Böylece bu link dosyasını masaüstünden silersen /home/linuxmaster/.local/share/applications dizinindeki desktop dosyasına bir şey olmaz.

Peki ben bir GNU/Linux PC Kullanıcısı olarak "SEMBOLİK LİNK" Oluşturabilir miyim?

Evet direkt klavye tuş kombinasyonu ile bir sembolik oluşturabilirsin.Nasıl mı?

Bir nesne'yi (dizin,dosya, .desktop dosyası) fare ile seçili hale getir.Klavye'den Ctrl + Shift + Drag (Sürükle ve Bırak) Bu kadar sistem otomatik "SEMBOLİK LİNK" oluşturur.

NOT:

"SEMBOLİK LİNK" olayı Windows Sistemlerinde de vardır ama pek kullanılmaz....
Kullanıcı avatarı
Kayserilifatih
Petabyte4
Petabyte4
Mesajlar: 9511
Kayıt: 30 Ağu 2024, 20:48
cinsiyet: Erkek
Teşekkür etti: 932 kez
Teşekkür edildi: 7046 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen Kayserilifatih »

Ben olsam şahsen her kısayol oluşturmayı betik olmadan yaparım yani her şeye betik hazırlamazdım fakat tercih meselesidir isteyen betikle yapar isteyen betiksiz yapar.
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15218
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2526 kez
Teşekkür edildi: 5344 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen TRWE_2012 »

Kayserilifatih yazdı: 08 Nis 2025, 14:50 Ben olsam şahsen her kısayol oluşturmayı betik olmadan yaparım yani her şeye betik hazırlamazdım fakat tercih meselesidir isteyen betikle yapar isteyen betiksiz yapar.
Normal'de .desktop dosyası hazırlamak bazen kurulu bir yazılımın kısayolu gelmediğinde yapılır.Nasıl mı? Basit bir metin editörü ile...

Manuel .desktop Dosyası Oluşturma Adımları :

1.Boş bir metin editörü açarsın

2.Boş metin editörüne aşağıdakiler kopyalarsın yada elle tek tek yazarsın.

Kod: Tümünü seç

[Desktop Entry]
Version=1.0
Name=Desktop Oluşturucusu
Comment=.desktop dosyası oluşturur.
Exec=bash /desktop_olustur_gui.sh  # bash ifadesiyle tam yolu ekledik
Icon=khelpcenter
Terminal=false  # Terminal penceresinin açılmaması için
Type=Application
Categories=System;
3.Sonra bu dosyayı farklı kaydet ile sonu (dosya uzantısı .desktop) olacak şekilde masaüstüne kayıt edersin.

4.Ardından terminal'den

Kod: Tümünü seç

chmod +x dosya_adı.desktop 
komutu verirsin.Böylece dosya çalışabilir niteliği kazanır.

5.Sonra bunu; /home/linuxmaster/.local/share/applications dizinine kopyala-yapıştır atarsın.

6.Menüde görünmesi için ;

Kod: Tümünü seç

lxpanelctl restart && update-menus && update-desktop-database ~/.local/share/applications
lxpanelctl restart = LXDE Görev Çubuğu yeniden başlatır.
update-menus = LXDE Menüsünün ayar dosyası .xml dosyasını yeniden günceller...
update-desktop-database ~/.local/share/applications = .desktop veritaban dosyasını yeniden güncelleştirir.

Ne kadar uzun ve meşekatli değil mi? Ama benim betiğim bunların hepsini 1-2 dk içinde otomatik yapıyor.Linux'ta otomatasyon önemlidir.

KOCAMAN GÜNCEL BİR ÖRNEK :
Resim
Mesela yukarıdaki Equlizer yazılımının bir .desktop dosyası yok..Sadece komut ismi var , ve terminal'den çalışıyor.

Ama ben buna uygun bir bash betiği yazıp ve de bunda uygun bir .desktop dosyası oluşturup LXDE menüden kullandığımda artık terminal ekranına bağımlı olmaktan kurtuldum.Direkt tıklıyorum çalışıyor...
En son TRWE_2012 tarafından 08 Nis 2025, 16:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Kayserilifatih
Petabyte4
Petabyte4
Mesajlar: 9511
Kayıt: 30 Ağu 2024, 20:48
cinsiyet: Erkek
Teşekkür etti: 932 kez
Teşekkür edildi: 7046 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen Kayserilifatih »

Sana iyi geliyorsa güzel yani ben olsam bunun da kolay bir yolunu bulurdum fakat bu kadar uğraşıp da kendimi kesinlikle boşu boşuna yormazdım.

Geçen Mehmet abiye bir double driver.ini dosyası oluşturma betiği verdin programı tekrar indirmesi yerine ben de dedim Windows'u kendine bu kadar zorlaştırıyorsa Linux'u hepten zorlaştıryordur. Zaten şevval ayından 6 günlük orucum bu gün 6. ve son günüm o yüzden anlattıklarını kafam kaldırmıyor. :-D
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15218
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2526 kez
Teşekkür edildi: 5344 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen TRWE_2012 »

Kayserilifatih yazdı: 08 Nis 2025, 16:02 Sana iyi geliyorsa güzel yani ben olsam bunun da kolay bir yolunu bulurdum fakat bu kadar uğraşıp da kendimi kesinlikle boşu boşuna yormazdım.

Geçen Mehmet abiye bir double driver.ini dosyası oluşturma betiği verdin programı tekrar indirmesi yerine ben de dedim Windows'u kendine bu kadar zorlaştırıyorsa Linux'u hepten zorlaştıryordur. Zaten şevval ayından 6 günlük orucum bu gün 6. ve son günüm o yüzden anlattıklarını kafam kaldırmıyor. :-D
Allah (c.c) orucunu ve niyetini kabul etsin...(amin)
Kullanıcı avatarı
Kayserilifatih
Petabyte4
Petabyte4
Mesajlar: 9511
Kayıt: 30 Ağu 2024, 20:48
cinsiyet: Erkek
Teşekkür etti: 932 kez
Teşekkür edildi: 7046 kez

Re: Linux Kısayol Dosyası Oluşturma Bash Shell Betiği

Mesaj gönderen Kayserilifatih »

Sağolasın. Darısı benim gibi oruç tutanlara olsun. (Amin)
Cevapla

“Programlama ve Script dilleri” sayfasına dön