Program / Yazılım fikri

Linux ve genel olarak Unix felsefesi dendiğinde akla gelen ilk kural şudur: “Bir işi yap ve onu en iyi şekilde yap” (Do one thing and do it well).

Bu bağlamda, “All-in-One” (AIO - Hepsi bir arada) yaklaşımı teorik olarak Linux felsefesine aykırıdır.

5 Beğeni

Hocam üç tane daha ekleyin.

Trinity (depolarda yok).

LXDE.

Deepin ya da başka birşey.

O radyo düğmelerinin yanına masaüstü ortamlarının resmi simgelerini gömün.

2 Beğeni

Resimi sildim hocam. Sistem üzerine farklı masaüstü kurulunca haliyle farklı metin editörleri, video oynatıcılar, resim görüntüleyiciler, terminaller vs. kuruluyor ister istemez can sıkıcı durum maalesef. En güzeli ISO da gelen masaüstü ortamı.

1 Beğeni

O durum öyle; ek bir masaüstü ortamı kurarsanız, onun “goodies” eklentileri de kurulur. Daha önceki masaüstünü temiz kaldırıp, kalıntılarını bilerek elle silmelisiniz. Ama bu o kadar da kötü birşey değil bence.

Uygulama iyiydi bence. Elinize sağlık, güzel fikir.

Size yüzde yüz katılıyorum. Yapay zeka ile programlama ezbere iş yani. Bir uygulama için önce bir resim taslağı oluşturuyorum sonra bana bu resimdeki gibi bir uygulama yap diyorum. İlk yapılan uygulama bir nebze güzel ancak şunu da ekle bunu da ekle dediğim zaman uygulamanın içine ediyor. O sebeple yapay zeka ile uygulama yapmak yine bir programcının işi. Özellikle sıfırdan akademik bir uygulama falan yapmaya kalkışmak mümkün değil. Hani derler ya işi ehline bırakmak lazım. Kafamda çok çılgın projeler var ama maalesef yazılım bilgim zayıf. Arada yz ile bir şeyler yapmaya çalışıyorum. Kendi bilgisayarımda kullanabileceğim uygulamalar.

1 Beğeni

Hocam bu işler için genç ve vaktin bol olması lazım. Bizim yaş 48 oldu. Benim Linux ile tanışmam yaklaşık 20 seneden fazladır. Sistem ile ilgili çok şeyi denedik tecrübe edindik. Hatta kendi ISO muzu yapmayı bile öğrendik. Zamanım sınırlı maalesef işlerim yoğun ayrıca iki çocuk var. Vakit buldukça kendi çapımda bir şeyler yapmaya çalışıyorum. Ama gençlere tavsiyem yapabileceğinizin en iyisini yapın derim. Kafa dinçken ve vaktiniz varken.

2 Beğeni

Evet ben de her projemde YZ kullandıysam belirtiyorum. Ancak hiç kodlama bilmeyen birisi için AI / YZ çok sorun çıkarabilir. Pro versiyon kullanmama rapmen minnacık değişiklikler istediğimizde sistemi komple bozabiliyor. Kafasına göre ekleme çıkarma yapabiliyor. O yüzden hem işi bilmek hem de çok detaylı ve dikkatli kontrol etmek lazım.

Ama hala proje fikirleri gelmiyor başlık altında :slight_smile:

TagCorder

Mp3 ve mümkün olan diğer ses dosyalarının etiketlerini düzenleme/silme/albüm kapağı gömme uygulaması.

Linux tarafında yok mu? Var. Ama saçmalık derecesinde ve delicesine karmaşık. Aya roket gönermeyeceğiz, etiketleri düzenleyip/silip, bir resim sürükle bırak yapacağız.

-Çoklu dosyaları sol panele (liste) sürükleyip bırakma.
-Sol panelde istenirse tümünü seçme, istenirse birini/karışık seçme yaparak sadece onlara uygulama. Toptan uygulayabilme.
-Sağ tarafta QLine tarzı veri giriş yerleri, solunda,

Parça adı:
Sanatçı:
Albüm adı:
Yılı:
Hed:
Höd:

Şeklinde placeholder etiketler.

Sol alt köşede resim sürükleme-bırakma alanı. Sürüklenip bırakıldığında otomatik resize işlemi yaparak 400x400 yapar. En sağda, altta, Yeşil ya da mavi renkte Apply butonu, yanında iptal/kapat, yanında Language(çeviriden muaf olmalıdır), yanında Hakkında. Hakkındayla kapatı yer değiştir vazgeçtim.

Al sana benzer yazılım:

Bu bir windows yazılımı. İçerikte sağ panel sol panel yer değiştir, aynısı olmasın.

1 Beğeni




isoyap.py kodları:

import sys
import os
import subprocess
from PyQt6.QtWidgets import (QApplication, QWizard, QWizardPage, QVBoxLayout, 
                             QLabel, QLineEdit, QComboBox, QCheckBox, QTextEdit, 
                             QPlainTextEdit, QMessageBox)
from PyQt6.QtCore import Qt

class ISOBuilderWizard(QWizard):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Debian Custom ISO Builder")
        self.setFixedSize(700, 550)
        
        # Sayfaları Tanımla
        self.addPage(DistroPage())
        self.addPage(DesktopPage())
        self.addPage(AdvancedPage())
        self.addPage(ExecutionPage())
        
        self.button(QWizard.WizardButton.FinishButton).clicked.connect(self.generate_and_run)

    def generate_and_run(self):
        # Kullanıcı seçimlerini al
        iso_name = self.field("iso_name")
        distro = self.field("distro")
        desktop = self.field("desktop_env")
        extra_apps = self.field("extra_apps")
        compression = self.field("compression_type")
        fw_enabled = self.field("fw_enabled")

        # Masaüstü paket eşleşmesi
        desktops = {
            "Cinnamon": "cinnamon",
            "XFCE": "xfce4 xfce4-goodies",
            "GNOME": "gnome-core",
            "KDE Plasma": "kde-standard",
            "MATE": "mate-desktop-environment",
            "Sadece CLI": ""
        }
        
        selected_desktop = desktops.get(desktop, "")
        firmware_pkgs = "firmware-linux-nonfree firmware-misc-nonfree firmware-iwlwifi intel-microcode amd64-microcode" if fw_enabled else ""

        # Dinamik Script İçeriği
        script_content = f"""#!/usr/bin/sh
set -ex
apt update
apt install curl debootstrap xorriso squashfs-tools mtools grub-pc-bin grub-efi-amd64-bin -y

mkdir -p chroot || true
export DEBIAN_FRONTEND=noninteractive

debootstrap --arch=amd64 {distro} chroot http://deb.debian.org/debian/

for i in dev dev/pts proc sys; do mount -o bind /$i chroot/$i; done

cat > chroot/etc/apt/sources.list << EOF
deb http://deb.debian.org/debian {distro} main contrib non-free non-free-firmware
EOF

chroot chroot apt update -y
chroot chroot apt install -y live-boot live-config live-config-systemd grub-pc-bin grub-efi-amd64-bin shim-signed calamares calamares-settings-debian

# Masaüstü ve Ek Paketler
chroot chroot apt install -y xserver-xorg xinit desktop-base linux-image-amd64 {selected_desktop} {extra_apps}

# Firmware
{f"chroot chroot apt install -y {firmware_pkgs}" if fw_enabled else "# Firmware atlandı"}

# Temizlik ve ISO Hazırlık
chroot chroot apt autoremove -y
chroot chroot apt clean
rm -rf chroot/var/lib/apt/lists/*

mkdir -p debian-live/live || true
while umount -lf -R chroot/* 2>/dev/null ; do :; done

mksquashfs chroot debian-live/live/filesystem.squashfs -comp {compression}

cp -pf $(ls -v chroot/boot/vmlinuz-* | tail -n 1) debian-live/live/vmlinuz
cp -pf $(ls -v chroot/boot/initrd.img-* | tail -n 1) debian-live/live/initrd.img

mkdir -p debian-live/boot/grub/
cat > debian-live/boot/grub/grub.cfg << EOF
set default=0
set timeout=5
menuentry "Debian Live ({desktop})" {{
    linux /live/vmlinuz boot=live components locales=tr_TR.UTF-8 keyboard-layouts=tr quiet splash
    initrd /live/initrd.img
}}
EOF

grub-mkrescue debian-live -o {iso_name}.iso
"""
        # Scripti dosyaya yaz
        with open("build_custom.sh", "w") as f:
            f.write(script_content)
        
        # Terminalde çalıştır
        subprocess.Popen(["pkexec", "sh", "build_custom.sh"])

# --- SAYFA TANIMLAMALARI ---

class DistroPage(QWizardPage):
    def __init__(self):
        super().__init__()
        self.setTitle("1. Temel Bilgiler")
        layout = QVBoxLayout()
        layout.addWidget(QLabel("ISO Dosya Adı:"))
        self.iso_name = QLineEdit("custom-debian")
        layout.addWidget(self.iso_name)
        
        layout.addWidget(QLabel("Debian Sürümü:"))
        self.distro = QComboBox()
        self.distro.addItems(["stable", "testing", "sid"])
        layout.addWidget(self.distro)
        
        self.setLayout(layout)
        self.registerField("iso_name", self.iso_name)
        self.registerField("distro", self.distro)

class DesktopPage(QWizardPage):
    def __init__(self):
        super().__init__()
        self.setTitle("2. Yazılım ve Masaüstü")
        layout = QVBoxLayout()
        
        layout.addWidget(QLabel("Masaüstü Ortamı:"))
        self.desktop_env = QComboBox()
        self.desktop_env.addItems(["Cinnamon", "XFCE", "GNOME", "KDE Plasma", "MATE", "Sadece CLI"])
        layout.addWidget(self.desktop_env)
        
        layout.addWidget(QLabel("Ek Paketler (aralarında boşluk bırakın):"))
        self.extra_apps = QPlainTextEdit()
        self.extra_apps.setPlaceholderText("vlc firefox-esr gimp htop...")
        layout.addWidget(self.extra_apps)
        
        self.setLayout(layout)
        self.registerField("desktop_env", self.desktop_env)
        self.registerField("extra_apps", self.extra_apps)

class AdvancedPage(QWizardPage):
    def __init__(self):
        super().__init__()
        self.setTitle("3. Gelişmiş Ayarlar")
        layout = QVBoxLayout()
        
        layout.addWidget(QLabel("Sıkıştırma Algoritması (SquashFS):"))
        self.compression = QComboBox()
        self.compression.addItems(["xz", "gzip", "zstd", "lz4"])
        layout.addWidget(self.compression)
        
        self.fw_enabled = QCheckBox("Non-free Firmware ve Sürücüleri Dahil Et")
        self.fw_enabled.setChecked(True)
        layout.addWidget(self.fw_enabled)
        
        self.setLayout(layout)
        self.registerField("compression_type", self.compression)
        self.registerField("fw_enabled", self.fw_enabled)

class ExecutionPage(QWizardPage):
    def __init__(self):
        super().__init__()
        self.setTitle("4. Hazır!")
        layout = QVBoxLayout()
        layout.addWidget(QLabel("Seçimleriniz tamamlandı. 'Bitir' butonuna bastığınızda terminal açılacak ve ISO oluşturma süreci başlayacaktır.\n\nNot: Şifreniz istenebilir."))
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    wizard = ISOBuilderWizard()
    wizard.show()
    sys.exit(app.exec())

Evet bu benim aklımdaki projelerden biri. İsteyen geliştirebilir. Özellikle Pardus için böyle bir şey yapılsa efsane olurdu. İstediğiniz masaüstü ortamı ve uygulamalar ile gelen bir Pardus ISO :slight_smile:

https://forum.pardus.org.tr/t/isocu-dosyalarinizdan-sinirsiz-iso-yapin/31265/3

Isocu adında bir uygulama yaptım, inceleyip karşılaştırabilirsiniz

Konuyu açtım ama herşeyi ben yapacağım anlamında açmadım. Amacım ihtiyaçların belirlenmesi ve elini taşın altına koyacak kişilerin ihtiyaçları gidermesi. Bu yüzden yanlış anlaşılma olmasın :slight_smile:

Bakalım ihtiyacı belirten fikirler gelsin ki ben ve diğer arkadaşlar da doğru yere güç harcasın.

Namaz vakti vb önerilerin hepsini dikkatle inceliyorum merak etmeyin. Ben pyqt 'yi Gtk’dan şahsen daha çok seviyorum. Python candır bence öyle. Varsa program fikriniz ya da şu olsa daha iyi olur dediğiniz bir şey lütfen yazın.

Namaz vakitlerini gösteren güzel bir uygulama isteğinize göre yapıyorum :wave:

  1. Diyanet vakitlerini kullanmadım, api var, talep edince diyanet api veriyor ancak limit var, günde 5 sorgu yada toplam 100 sorgu vb gibi bana çok kullanışlı gelmedi, başka bir yerden vakit verisi çekiyorum, dolayısı ile 1-2 dk oynuyor ama temelde iş görür. 2 dk kendinize opsiyon ayırın

  2. sesli ve baloncuk uyarı ekledim, şu kadar kala uyar diye seçebiliyorsunuz

  3. sistem tepsisinde çalışıyor hoş yeşil bir ikonu var.

  4. kurduktan sonra kendisini otomatik başlatmaya ekliyor, arka planda çalışıyor.

5.Uzantı olarak değil HUD penceresi şeklinde gösteriyor daha zarif oldu.

Testleri bitireyim, depoya ekleyince konu açıp paylaşırım.

Özel bir talebiniz varsa buradan yada mesaj ile iletirseniz sevinirim

Öncelikle nazilliye selam olsun. Ben de Ege’liyim. Sana da çok uzak sayılmam.

Yıllık olmaz, iss nin konumuna (ip bazlı) göre senin için vakti verecek.

Online çalışması ileride gelebilecek güncellemeler için güncelleme kontrol et tıklayarak yapmanda fadalı ve gerekli.

ramazan için +5 dk gibi (istediğin kadar) opsiyon seçeneği ekleriz ama bu sürümde değil.

Bu arada Pardus sürümün ne?

1 Beğeni

Çabanız çok güzel ve ihtiyacınızı giderdiyse ne mutlu.

Ben sizin fikrinizden yola çıkarak bir uygulama yapıyorum.

Sistem neredeyseniz oranın vakitlerini gösteriyor, sesli ve görüntülü vakit uyarısı var ve daha bir çok süpriz sadece 1 gün test edeyim :slight_smile:

1 Beğeni

https://forum.pardus.org.tr/t/namaz-vakti-uygulamasi/31323

Al bakalım konuyu açtım. Benim yaptığım da bu şekilde oldu.

Hangisi işinize yararsa onu kullanın.

Namaz Vakitleri uygulamamız

www.tarikvardar.com.tr web sitem ve https://github.com/tvardar/namaz-vakti github sayfam da yayında.

2

Buna gerek yok.

Öncelikle buradan Nazilli’nin ilçe kodunun 9265 olduğunu öğrendik.

Uç birimden şu komutu verebilirsiniz.

curl -s 'https://ezanvakti.emushaf.net/vakitler/9265' | jq -r '.[] | .MiladiTarihUzun + "\t" + .Imsak + " " + .Gunes + " " + .Ogle + " " + .Ikindi + " " + .Aksam + " " + .Yatsi' > nazilli_vakit.txt

Daha sonra içeriğine bakabiliriz.

cat nazilli_vakit.txt

07 Ocak 2026 Çarşamba   06:49 08:16 13:18 15:49 18:10 19:31
08 Ocak 2026 Perşembe   06:49 08:16 13:18 15:49 18:11 19:32
09 Ocak 2026 Cuma       06:49 08:16 13:19 15:50 18:12 19:33

Zamanında, geliştirdiğimiz uygulama uç birimden çalışıyordu.

Namaz vakti uygulamasın için https://forum.pardus.org.tr/t/namaz-vakti-uygulamasi/31323/15 konuyu açmıştım.

Geri dönüşler neticesinde, repoları (depoları) sıfırlayıp yeniden hazırlayıp;

wayland, x11 sorun çıkarmayan

Dakika sorunu yaşatmayacak

Tüm dünya vakitlerini diyanete uyumlu gösteren

Temel olarak tespit edilmiş sorunları giderilmiş şekilde halloldu.

Github ve Web sitemdeki eski sorunlu sürümleri sildim.

İndirmek ve kullanmak / denemek için :

www.tarikvardar.com.tr web sitemden (en kolayı) ya da https://github.com/tvardar/namaz-vakti github adresimden indirip kurabilirsiniz.

Bu defa paketle dosyasını pardus 23 / 25 ayırmadan hazırladım (tümüyle uyumlu)

Pardus 23 ve Pardus 25 kullanıcıları için ayrı ayrı kurulumu detaylı anlattım. Hayırlı olsun.

Geri dönüşlerinizi bekliyorum.

1 Beğeni

Topluluk olarak deneyapkart agent uygulaması pardus mağazalarına eklenmesi icin calısma yapabiliriz bu sayede Eğitim kurumların pardusa gecisi dahada yaygınlastırılır

1 Beğeni

Bu konu son yanıttan 30 gün sonra otomatik olarak kapatıldı. Yeni yanıtlara artık izin verilmiyor.