Python İle Pardus (linux) Alias Yönetim Uygulaması

Merhabalar, Alias ile Terminal Kullanımı Oldukça Kişisel Basitleştirebilirsiniz.
Bunun İçin Daha Önceden Terminal Tabanlı ShellScript Uygulaması Yapmıştık. Şimdi de Bunu Python ile Tkinter ve ttkthemes Kütüphanesini Kullanarak Görsel Arayüzlü Olarak Yapacağız.(NOT: Sadece Linux Dağıtımlarında Çalışır.) (Github)

Önce Gerekli Kütüphaneleri Kuralım

Tkinter

$ sudo apt-get install python3-tk
Bash

ttkthemes

$ pip install ttkthemes
Bash

Başlayalım

PY Dosyamızı Oluşturalım.

$ touch aliasGUI.py
Bash

PY dosyamıza kodları yazmak için düzenleyelim

$ nano aliasGUI.py
Bash

Kodları Yazalım.

import tkinter as tk
from tkinter import messagebox, ttk
import os
from ttkthemes import ThemedTk
import webbrowser

# Temalı pencere oluşturma
root = ThemedTk(theme="aqua")
root.title("Pardus Alias Yönetici")
root.geometry("600x500")
root.resizable(False, False)  # Formun boyutlarını sabitleme

# Başlık etiketi
title_label = tk.Label(root, text="Pardus Alias Yönetici", font=("Courier", 20, "bold"), bg="#f7f7f7", relief="ridge")
title_label.pack(pady=10)

# Alias giriş alanı
entry_frame = tk.Frame(root)
entry_frame.pack(pady=20)

alias_label = tk.Label(entry_frame, text="Alias Adi:", font=("Courier", 12))
alias_label.grid(row=0, column=0, padx=5, pady=5, sticky="e")
alias_entry = ttk.Entry(entry_frame, width=30)
alias_entry.grid(row=0, column=1, padx=5, pady=5)

command_label = tk.Label(entry_frame, text="Komut:", font=("Courier", 12))
command_label.grid(row=1, column=0, padx=5, pady=5, sticky="e")
command_entry = ttk.Entry(entry_frame, width=30)
command_entry.grid(row=1, column=1, padx=5, pady=5)

# Alias ekleme fonksiyonu
def add_alias():
    alias_name = alias_entry.get().strip()
    command = command_entry.get().strip()
    if alias_name and command:
        with open(os.path.expanduser("~/.bash_aliases"), "a") as f:
            f.write(f"\nalias {alias_name}='{command}'\n")
        os.system("source ~/.bashrc")
        messagebox.showinfo("Başarılı", f"'{alias_name}' alias'ı başarıyla eklendi.")
        list_aliases()
    else:
        messagebox.showwarning("Uyarı", "Lütfen tüm alanları doldurun.")

# Alias listeleme fonksiyonu
def list_aliases():
    alias_listbox.delete(0, tk.END)
    if os.path.exists(os.path.expanduser("~/.bash_aliases")):
        with open(os.path.expanduser("~/.bash_aliases"), "r") as f:
            lines = f.readlines()
        for line in lines:
            if line.startswith("alias"):
                alias_listbox.insert(tk.END, line.strip())

# Alias silme fonksiyonu
def delete_alias():
    selected_alias = alias_listbox.get(tk.ACTIVE)
    if selected_alias:
        alias_name = selected_alias.split()[1].split('=')[0]
        with open(os.path.expanduser("~/.bash_aliases"), "r") as f:
            lines = f.readlines()
        with open(os.path.expanduser("~/.bash_aliases"), "w") as f:
            for line in lines:
                if not line.startswith(f"alias {alias_name}="):
                    f.write(line)
        os.system("source ~/.bashrc")
        messagebox.showinfo("Başarılı", f"'{alias_name}' alias'ı başarıyla silindi.")
        list_aliases()

# Alias ekleme butonu
add_button = ttk.Button(root, text="Alias Ekle", command=add_alias)
add_button.pack(pady=10)

# Alias listesi ve Scrollbar ekleme
alias_list_frame = tk.Frame(root)
alias_list_frame.pack(pady=10)

alias_listbox = tk.Listbox(alias_list_frame, width=60, height=10)
alias_listbox.pack(side="left", fill="both", expand=True)

scrollbar = ttk.Scrollbar(alias_list_frame, orient="vertical", command=alias_listbox.yview)
scrollbar.pack(side="right", fill="y")

alias_listbox.config(yscrollcommand=scrollbar.set)

# Alias silme butonu
delete_button = ttk.Button(root, text="Alias Sil", command=delete_alias)
delete_button.pack(pady=5)

# Tıklanabilir footer ekleme fonksiyonu
def open_website(event):
    webbrowser.open("https://algyazilim.com")

# Footer etiketi
footer_label = tk.Label(root, text="ALG Yazilim Inc.", font=("Courier", 10, "underline"), fg="blue", cursor="hand2")
footer_label.pack(side="bottom", pady=5)
footer_label.bind("<Button-1>", open_website)

# Uygulama başlatıldığında mevcut alias'ları listele
list_aliases()

# Uygulamayı başlat
root.mainloop()
Python

Kayıt Edelim

CTRL + O
CTRL + X

Doğrudan Çalıştırmak İçin

$ python3 aliasGUI.py
Bash

Derlemek İçin

$ pyinstaller --onefile --noconsole aliasGUI.py
Bash
NOT: Derleme İşlemi İçin pyinstaller kurulu olmalıdır. Kurulu Değilse Kurmak İçin.
$ pip install pyinstalle