code:
[Global]
IconName=yakuake
Comment=Yakuake
Comment[bg]=Yakuake
Comment[ca]=Yakuake
Comment[ca@valencia]=Yakuake
Comment[cs]=Yakuake
Comment[da]=Yakuake
Comment[de]=Yakuake
Comment[el]=Yakuake
Comment[es]=Yakuake
Comment[et]=Yakuake
Comment[fi]=Yakuake
Comment[ga]=Yakuake
Comment[gl]=Yakuake
Comment[hu]=Yakuake
Comment[it]=Yakuake
Comment[km]=Yakuake
Comment[lt]=Yakuake
Comment[nb]=Yakuake
Comment[nds]=Yakuake
Comment[nl]=Yakuake
Comment[pa]=ਯਾਕੁਕੀ
Comment[pl]=Yakuake
Comment[pt]=Yakuake
Comment[pt_BR]=Yakuake
Comment[ro]=Yakuake
Comment[sk]=Yakuake
Comment[sr]=Јакуаке
Comment[sr@ijekavian]=Јакуаке
Comment[sr@ijekavianlatin]=Yakuake
Comment[sr@latin]=Yakuake
Comment[sv]=Yakuake
Comment[tr]=Yakuake
Comment[ug]=Yakuake
Comment[uk]=Yakuake
Comment[x-test]=xxYakuakexx
Comment[zh_CN]=Yakuake
Comment[zh_TW]=Yakuake

[Event/startup]
Name=Startup
Name[ca]=Inici
Name[ca@valencia]=Inici
Name[cs]=Spuštění
Name[da]=Opstart
Name[de]=Programmstart
Name[el]=Εκκίνηση
Name[es]=Inicio
Name[et]=Käivitamine
Name[fi]=Käynnistys
Name[gl]=Inicio
Name[hu]=Indulás
Name[it]=Avvio
Name[km]=ចាប់ផ្ដើម
Name[lt]=Paleidimas
Name[nb]=Oppstart
Name[nds]=Start
Name[nl]=Opstarten
Name[pa]=ਸ਼ੁਰੂਆਤ
Name[pl]=Uruchamianie
Name[pt]=Arranque
Name[pt_BR]=Inicialização
Name[ro]=Pornire
Name[sk]=Spustenie
Name[sr]=Покретање
Name[sr@ijekavian]=Покретање
Name[sr@ijekavianlatin]=Pokretanje
Name[sr@latin]=Pokretanje
Name[sv]=Start
Name[tr]=Başlangıç
Name[ug]=قوزغىلىش
Name[uk]=Запуск
Name[x-test]=xxStartupxx
Name[zh_CN]=启动
Name[zh_TW]=啟動
Comment=Yakuake has started
Comment[ca]=S'ha engegat el Yakuake
Comment[ca@valencia]=S'ha engegat el Yakuake
Comment[cs]=Yakuake byl spuštěn
Comment[da]=Yakuake er startet
Comment[de]=Yakuake wurde gestartet
Comment[el]=Το Yakuake έχει ξεκινήσει
Comment[es]=Yakuake se ha iniciado
Comment[et]=Yakuake on käivitatud
Comment[fi]=Yakuake on käynnistynyt
Comment[gl]=O Yakuake foi iniciado
Comment[hu]=A Yakuake elindult
Comment[it]=Yakuake è avviato
Comment[km]=Yakuake បានចាប់ផ្ដើម
Comment[lt]=Yakuake paleistas
Comment[nb]=Yakuake har startet
Comment[nds]=Yakuake hett start.
Comment[nl]=Yakuake is opgestart
Comment[pa]=ਯਾਕੂਕੀ ਚਾਲੂ ਹੋਇਆ
Comment[pl]=Yakuake został uruchomiony
Comment[pt]=O Yakuake foi iniciado
Comment[pt_BR]=O Yakuake foi iniciado
Comment[ro]=Yakuake s-a pornit
Comment[sk]=Yakuake bolo spustené
Comment[sr]=Јакуаке је покренут
Comment[sr@ijekavian]=Јакуаке је покренут
Comment[sr@ijekavianlatin]=Yakuake je pokrenut
Comment[sr@latin]=Yakuake je pokrenut
Comment[sv]=Yakuake har startats
Comment[tr]=Yakuake başlatıldı
Comment[uk]=Yakuake запущено
Comment[x-test]=xxYakuake has startedxx
Comment[zh_CN]=Yakuake 已启动
Comment[zh_TW]=Yakuake 已啟動
Action=Popup

[Event/silence]
Name=Silence detected
Name[ca]=S'ha detectat silenci
Name[ca@valencia]=S'ha detectat silenci
Name[cs]=Detekováno ticho
Name[da]=Stilhed detekteret
Name[de]=Keine Aktivität festgestellt
Name[el]=Ανιχνεύθηκε αδράνεια
Name[es]=Silencio detectado
Name[et]=Tuvastati vaikus
Name[fi]=Hiljaisuutta havaittu
Name[gl]=Silencio detectado
Name[hu]=Csend érzékelve
Name[it]=Inattività rilevata
Name[km]=បានរកឃើញភាពស្ងាត់
Name[lt]=Aptikta tyla
Name[nb]=Stillhet oppdaget
Name[nds]=Still opdeckt
Name[nl]=Stilte ontdekt
Name[pa]=ਚੁੱਪ ਖੋਜਿਆ ਗਿਆ
Name[pl]=Wykryto ciszę
Name[pt]=Silêncio detectado
Name[pt_BR]=Silêncio detectado
Name[ro]=Tăcere detectată
Name[sk]=Detekované ticho
Name[sr]=Откривена тишина
Name[sr@ijekavian]=Откривена тишина
Name[sr@ijekavianlatin]=Otkrivena tišina
Name[sr@latin]=Otkrivena tišina
Name[sv]=Tystnad funnen
Name[tr]=Sessizlik belirlendi
Name[uk]=Виявлено бездіяльність
Name[x-test]=xxSilence detectedxx
Name[zh_CN]=探测到静默
Name[zh_TW]=偵測到沉默狀態
Comment=Silence detected in a monitored terminal or session
Comment[ca]=S'ha detectat silenci en un terminal vigilat o sessió
Comment[ca@valencia]=S'ha detectat silenci en un terminal vigilat o sessió
Comment[cs]=Detekováno ticho v monitorovaném terminálu nebo sezení
Comment[da]=Stilhed detekteret i en overvåget terminalsession
Comment[de]=In einem überwachten Terminal oder einer überwachten Sitzung wird keine Aktivität festgestellt
Comment[el]=Ανιχνεύθηκε αδράνεια σε ένα ελεγχόμενο τερματικό ή συνεδρία
Comment[es]=Se ha detectado silencio en una terminal o sesión monitoreada
Comment[et]=Jälgitavas terminalis või seansis tuvastati vaikus
Comment[fi]=Hiljaisuutta havaittu tarkkaillussa päätteessä tai istunnossa
Comment[gl]=Silencio detectado nunha terminal ou sesión monitorizada
Comment[hu]=Csend érzékelve egy figyelt terminálon vagy munkamenetben
Comment[it]=Inattività rilevata in un terminale o sessione monitorata
Comment[km]=បានរកឃើញភាពស្ងាត់នៅក្នុងសម័យ ឬស្ថានីយដែលបានត្រួតពិនិត្យ
Comment[lt]=Stebimoje terminale ar sesijoje pastebėta tyla
Comment[nb]=Det er oppdaget stillhet i en terminal eller økt som er overvåket
Comment[nds]=En beluurt Konsool oder Törn is still
Comment[nl]=Stilte ontdekt in een gevolgde terminal of sessie
Comment[pl]=Wykryto ciszę w monitorowanej sesji terminala
Comment[pt]=Silêncio detectado num terminal ou sessão vigiado
Comment[pt_BR]=Silêncio detectado em um terminal ou sessão monitorado
Comment[ro]=A fost detectată tăcere într-o sesiune sau terminal monitorizat
Comment[sk]=Detekované ticho v monitorovanom termináli alebo sedení
Comment[sr]=Откривена је тишина у надгледаном терминалу или сесији
Comment[sr@ijekavian]=Откривена је тишина у надгледаном терминалу или сесији
Comment[sr@ijekavianlatin]=Otkrivena je tišina u nadgledanom terminalu ili sesiji
Comment[sr@latin]=Otkrivena je tišina u nadgledanom terminalu ili sesiji
Comment[sv]=Tystnad funnen i en bevakad terminal eller session
Comment[tr]=İzlenen uçbirimde ya da oturumda sessizlik belirlendi
Comment[uk]=У сеансі або терміналі, за яким ведеться спостереження виявлено бездіяльність
Comment[x-test]=xxSilence detected in a monitored terminal or sessionxx
Comment[zh_CN]=在监视的终端或会话中探测到静默
Comment[zh_TW]=在一個監控中的終端機或工作階段偵測到沉默狀態
Action=Popup

[Event/activity]
Name=Activity detected
Name[ca]=S'ha detectat activitat
Name[ca@valencia]=S'ha detectat activitat
Name[cs]=Detekována aktivita
Name[da]=Aktivitet detekteret
Name[de]=Aktivität festgestellt
Name[el]=Ανιχνεύθηκε δραστηριότητα
Name[es]=Actividad detectada
Name[et]=Tuvastati aktiivsus
Name[fi]=Aktiivisuutta havaittu
Name[gl]=Actividade detectada
Name[hu]=Aktivitás észlelve
Name[it]=Attività rilevata
Name[km]=សកម្មភាពដែលបានរកឃើញ
Name[lt]=Aptikta veikla
Name[nb]=Aktivitet oppdaget
Name[nds]=Aktiviteet opdeckt
Name[nl]=Activiteit ontdekt
Name[pa]=ਐਕਟਵਿਟੀ ਖੋਜੀ ਗਈ
Name[pl]=Wykryto aktywność
Name[pt]=Actividade detectada
Name[pt_BR]=Atividade detectada
Name[ro]=Activitate detectată
Name[sk]=Detekovaná aktivita
Name[sr]=Откривена активност
Name[sr@ijekavian]=Откривена активност
Name[sr@ijekavianlatin]=Otkrivena aktivnost
Name[sr@latin]=Otkrivena aktivnost
Name[sv]=Aktivitet funnen
Name[tr]=Etkinlik belirlendi
Name[uk]=Виявлено діяльність
Name[x-test]=xxActivity detectedxx
Name[zh_CN]=探测到活动
Name[zh_TW]=偵測到活動
Comment=Activity detected in a monitored terminal or session
Comment[ca]=S'ha detectat activitat en un terminal vigilat o sessió
Comment[ca@valencia]=S'ha detectat activitat en un terminal vigilat o sessió
Comment[cs]=Detekována aktivita v monitorovaném terminálu nebo sezení
Comment[da]=Aktivitet detekteret i en overvåget terminal eller session
Comment[de]=In einem überwachten Terminal oder einer überwachten Sitzung wird Aktivität festgestellt
Comment[el]=Ανιχνεύθηκε δραστηριότητα σε ένα ελεγχόμενο τερματικό ή συνεδρία
Comment[es]=Se ha detectado actividad en una terminal o sesión monitoreada
Comment[et]=Jälgitavas terminalis või seansis tuvastati aktiivsus
Comment[fi]=Aktiivisuutta havaittu tarkkaillussa päätteessä tai istunnossa
Comment[gl]=Actividade detectada nunha terminal ou sesión monitorizada
Comment[hu]=Aktivitás érzékelve egy figyelt terminálon vagy munkamenetben
Comment[it]=Attività rilevata in un terminale o sessione monitorata
Comment[km]=សកម្មភាពដែលបានរកឃើញនៅក្នុងសម័យ ឬស្ថានីយដែលបានត្រួតពិនិត្យ
Comment[lt]=Stebimoje terminale ar sesijoje pastebėta veikla
Comment[nb]=Det er oppdaget aktivitet i en terminal eller økt som er overvåket
Comment[nds]=En beluurt Konsool oder Törn is Aktiviteet
Comment[nl]=Activiteit ontdekt in een gevolgde terminal of sessie
Comment[pl]=Wykryto aktywność w monitorowanej sesji terminala
Comment[pt]=Actividade detectada num terminal ou sessão vigiado
Comment[pt_BR]=Atividade detectada em um terminal ou sessão monitorado
Comment[ro]=A fost detectată activitate într-o sesiune sau terminal monitorizat
Comment[sk]=Detekovaná aktivita v monitorovanom termináli alebo sedení
Comment[sr]=Откривена је активност у надгледаном терминалу или сесији
Comment[sr@ijekavian]=Откривена је активност у надгледаном терминалу или сесији
Comment[sr@ijekavianlatin]=Otkrivena je aktivnost u nadgledanom terminalu ili sesiji
Comment[sr@latin]=Otkrivena je aktivnost u nadgledanom terminalu ili sesiji
Comment[sv]=Aktivitet funnen i en bevakad terminal eller session
Comment[tr]=İzlenen uçbirimde ya da oturumda etkinlik belirlendi
Comment[uk]=У сеансі або терміналі, за яким ведеться спостереження виявлено діяльність
Comment[x-test]=xxActivity detected in a monitored terminal or sessionxx
Comment[zh_CN]=在监视的终端或会话中探测到活动
Comment[zh_TW]=在一個監控中的終端機或工作階段偵測到有活動
Action=Popup

[Event/BellVisible]
Name=Bell in Visible Session
Name[bs]=Zvono u vidljivoj sesiji
Name[ca]=Timbre en una sessió visible
Name[cs]=Zvonek ve viditelném sezení
Name[da]=Bip i synlig session
Name[de]=Signalton in sichtbarer Sitzung
Name[el]=Ηχητικό σήμα σε ορατή συνεδρία
Name[et]=Heli nähtavas seansis
Name[fi]=Äänimerkki näkyvässä istunnossa
Name[ga]=Cloigín i Seisiún Infheicthe
Name[gl]=Badalada na sesión visíbel
Name[hu]=Csengő a látható munkamenetben
Name[it]=Campana in sessione visibile
Name[lt]=Skambutis matomoje sesijoje
Name[nb]=Varsel i synlig økt
Name[nl]=Geluidssignaal in zichtbare sessie
Name[nn]=Bjølle i synleg økt
Name[pl]=Dzwonek w widocznej sesji
Name[pt]=Campainha numa Sessão Visível
Name[pt_BR]=Campainha na sessão visível
Name[ro]=Clopoțel în sesiune vizibilă
Name[se]=Divga oainnus bargovuorus
Name[sk]=Zvonček v zobrazenom sedení
Name[sr]=Звоно у видљивој сесији
Name[sr@ijekavian]=Звоно у видљивој сесији
Name[sr@ijekavianlatin]=Zvono u vidljivoj sesiji
Name[sr@latin]=Zvono u vidljivoj sesiji
Name[sv]=Ljudsignal i synlig session
Name[uk]=Гудок у видимий сеанс
Name[x-test]=xxBell in Visible Sessionxx
Name[zh_CN]=可见会话中的响铃
Name[zh_TW]=可見工作階段響鈴
Comment=Bell emitted within a visible session
Comment[bs]=Oglašeno je zvono unutar vidljive sesije
Comment[ca]=Timbre emès en una sessió visible
Comment[cs]=Zvonek spuštěný ve viditelném sezení
Comment[da]=Bip udsendt indenfor en synlig session
Comment[de]=Signalton, der in einer sichtbaren Sitzung ertönt
Comment[el]=Ηχητικό σήμα εκπέμπεται σε ορατή συνεδρία
Comment[et]=Heli nähtavas seansis
Comment[fi]=Äänimerkki lähetetty näkyvässä istunnossa
Comment[ga]=Baineadh an cloigín i seisiún infheicthe
Comment[gl]=Badalada emitida nunha sesión visíbel
Comment[hu]=Csengetés a látható munkamenetben
Comment[it]=Campana emessa in una sessione visibile
Comment[lt]=Matomos sesijos metu skambutis neveiks
Comment[nb]=Signal sendt ut fra en synlig økt
Comment[nl]=Geluidssignaal aangeroepen in zichtbare sessie
Comment[nn]=Bjøllesignal sendt i ei synleg økt
Comment[pl]=Dzwonek uruchamiany w widocznej sesji
Comment[pt]=Campainha emitida dentro de uma sessão visível
Comment[pt_BR]=Campainha emitida dentro de uma sessão visível
Comment[ro]=Clopoțel emis în cadrul unei sesiuni vizibile
Comment[se]=Divgasignála sáddejuvvui oainnus bargovuorus
Comment[sk]=Zvonček poslaný v zobrazenom sedení
Comment[sr]=Емитовано је звоно унутар видљиве сесије.
Comment[sr@ijekavian]=Емитовано је звоно унутар видљиве сесије.
Comment[sr@ijekavianlatin]=Emitovano je zvono unutar vidljive sesije.
Comment[sr@latin]=Emitovano je zvono unutar vidljive sesije.
Comment[sv]=Ljudsignal avgiven inne i en synlig session
Comment[uk]=Звучить гудок у видимому сеансі
Comment[x-test]=xxBell emitted within a visible sessionxx
Comment[zh_CN]=可见会话中发生的响铃
Comment[zh_TW]=可見工作階段中的響鈴行為
Action=None

[Event/BellInvisible]
Name=Bell in Non-Visible Session
Name[bs]=Zvono u zaklonjenoj sesiji
Name[ca]=Timbre en una sessió no visible
Name[cs]=Zvonek ve skrytém sezení
Name[da]=Bip i ikke-synlig session
Name[de]=Signalton in nicht sichtbarer Sitzung
Name[el]=Ηχητικό σήμα σε μη ορατή συνεδρία
Name[et]=Heli nähtamatus seansis
Name[fi]=Äänimerkki näkymättömässä istunnossa
Name[ga]=Cloigín i Seisiún Dofheicthe
Name[gl]=Badalada nunha sesión non visíbel
Name[hu]=Csengő a nem látható munkamenetben
Name[it]=Campana in sessione non visibile
Name[lt]=Skambutis nematomoje sesijoje
Name[nb]=Varsel i ikke-synlig økt
Name[nl]=Geluidssignaal in niet-zichtbare sessie
Name[nn]=Bjølle i ikkje-synleg økt
Name[pl]=Dzwonek w niewidocznej sesji
Name[pt]=Campainha numa Sessão Invisível
Name[pt_BR]=Campainha na sessão não visível
Name[ro]=Clopoțel în sesiune nevizibilă
Name[se]=Divga oaidnemeahttun bargovuorus
Name[sk]=Zvonček v nezobrazenom sedení
Name[sr]=Звоно у сесији која није видљива
Name[sr@ijekavian]=Звоно у сесији која није видљива
Name[sr@ijekavianlatin]=Zvono u sesiji koja nije vidljiva
Name[sr@latin]=Zvono u sesiji koja nije vidljiva
Name[sv]=Ljudsignal i icke-synlig session
Name[uk]=Гудок у невидимому сеансі
Name[x-test]=xxBell in Non-Visible Sessionxx
Name[zh_CN]=不可见会话中的响铃
Name[zh_TW]=非可見工作階段的響鈴
Comment=Bell emitted within a non-visible session
Comment[bs]=Oglašeno je zvono unutar zaklonjene sesije
Comment[ca]=Timbre emès en una sessió no visible
Comment[cs]=Zvonek spuštěný ve skrytém sezení
Comment[da]=Bip udsendt indenfor en ikke-synlig session
Comment[de]=Signalton, der in einer nicht sichtbaren Sitzung ertönt
Comment[el]=Ηχητικό σήμα εκπέμπεται σε μη ορατή συνεδρία
Comment[et]=Heli nähtamatus seansis
Comment[fi]=Äänimerkki lähetetty näkymättömässä istunnossa
Comment[ga]=Baineadh an cloigín i seisiún dofheicthe
Comment[gl]=Badalada emitida nunha sesión non visíbel
Comment[hu]=Csengetés a nem látható munkamenetben
Comment[it]=Campana emessa in una sessione non visibile
Comment[lt]=Nematomos sesijos metu skambutis neveiks
Comment[nb]=Signal sendt ut i en økt som ikke er synlig
Comment[nl]=Geluidssignaal aangeroepen in niet-zichtbare sessie
Comment[nn]=Bjøllesignal sendt i ei ikkje-synleg økt
Comment[pl]=Dzwonek uruchamiany w niewidocznej sesji
Comment[pt]=Campainha emitida dentro de uma sessão não-visível
Comment[pt_BR]=Campainha emitida dentro de uma sessão não visível
Comment[ro]=Clopoțel emis în cadrul unei sesiuni nevizibile
Comment[se]=Divgasignála sáddejuvvui oaidnemeahttun bargovuorus
Comment[sk]=Zvonček poslaný v nezobrazenom sedení
Comment[sr]=Емитовано је звоно у сесији која није видљива.
Comment[sr@ijekavian]=Емитовано је звоно у сесији која није видљива.
Comment[sr@ijekavianlatin]=Emitovano je zvono u sesiji koja nije vidljiva.
Comment[sr@latin]=Emitovano je zvono u sesiji koja nije vidljiva.
Comment[sv]=Ljudsignal avgiven inne i en icke-synlig session
Comment[uk]=Звучить гудок у невидимому сеансі
Comment[x-test]=xxBell emitted within a non-visible sessionxx
Comment[zh_CN]=不可见会话中发生的响铃
Comment[zh_TW]=非可見工作階段中的響鈴行為
Sound=KDE-Sys-App-Message.ogg
Action=Popup


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>yakuake</Name>
        <Homepage>http://extragear.kde.org/apps/yakuake</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <Icon>yakuake</Icon>
        <IsA>app:gui</IsA>
        <Summary>Very powerful Quake style Konsole for KDE4</Summary>
        <Description>The name comes from Yet Another Kuake (thus YaKuake). Its behaviour is similar to the console of the Quake game.</Description>
        <Archive sha1sum="4abe2401f7745861d44a11f47d036c9c535464a1" type="tarxz">mirrors://kde/stable/yakuake/3.0.4/src/yakuake-3.0.4.tar.xz</Archive>
        <BuildDependencies>
            <Dependency versionFrom="5.7.1">qt5-base-devel</Dependency>
            <Dependency>libX11-devel</Dependency>
            <Dependency versionFrom="5.7.1">qt5-x11extras-devel</Dependency>
            <Dependency>knewstuff-devel</Dependency>
            <Dependency>kio-devel</Dependency>
            <Dependency>kparts-devel</Dependency>
            <Dependency>knotifyconfig-devel</Dependency>
            <Dependency>karchive-devel</Dependency>
            <Dependency>kcoreaddons-devel</Dependency>
            <Dependency>kconfig-devel</Dependency>
            <Dependency>kcrash-devel</Dependency>
            <Dependency>kdbusaddons-devel</Dependency>
            <Dependency>kglobalaccel-devel</Dependency>
            <Dependency>ki18n-devel</Dependency>
            <Dependency>kiconthemes-devel</Dependency>
            <Dependency>knewstuff-devel</Dependency>
            <Dependency>knotifications-devel</Dependency>
            <Dependency>kparts-devel</Dependency>
            <Dependency>kwidgetsaddons-devel</Dependency>
            <Dependency>kwindowsystem-devel</Dependency>
            <Dependency>gettext-devel</Dependency>
            <Dependency>extra-cmake-modules</Dependency>
            <Dependency>kwayland-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>yakuake</Name>
        <RuntimeDependencies>
            <Dependency versionFrom="5.7.1">qt5-base</Dependency>
            <Dependency versionFrom="5.7.1">qt5-x11extras</Dependency>
            <Dependency>kio</Dependency>
            <Dependency>kcrash</Dependency>
            <Dependency>ki18n</Dependency>
            <Dependency>kparts</Dependency>
            <Dependency>kconfig</Dependency>
            <Dependency>kxmlgui</Dependency>
            <Dependency>karchive</Dependency>
            <Dependency>kservice</Dependency>
            <Dependency>knewstuff</Dependency>
            <Dependency>kwayland</Dependency>
            <Dependency>kcoreaddons</Dependency>
            <Dependency>kdbusaddons</Dependency>
            <Dependency>kiconthemes</Dependency>
            <Dependency>kglobalaccel</Dependency>
            <Dependency>knotifyconfig</Dependency>
            <Dependency>kwindowsystem</Dependency>
            <Dependency>kconfigwidgets</Dependency>
            <Dependency>knotifications</Dependency>
            <Dependency>kwidgetsaddons</Dependency>
            <Dependency>libX11</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="config">/etc/xdg</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="library">/usr/lib/qt5</Path>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
        <AdditionalFiles>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/kde4/apps/yakuake/yakuake.notifyrc">yakuake.notifyrc</AdditionalFile>
        </AdditionalFiles>
    </Package>

    <History>
        <Update release="4">
            <Date>2017-09-16</Date>
            <Version>3.0.4</Version>
            <Comment>Rebuild for new Toolchain.</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="3">
            <Date>2017-03-02</Date>
            <Version>3.0.2</Version>
            <Comment>Rebuild for new Toolchain.</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-23</Date>
            <Version>3.0.2</Version>
            <Comment>Release bump</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-03-07</Date>
            <Version>3.0.2</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>

repo_name: ayhanyalcinsoy/main


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>yakuake</Name>
        <Summary xml:lang="tr">KDE5 için Quake tarzı oldukça güçlü bir Konsole</Summary>
        <Description xml:lang="tr">İsmi Bir Başka Kuake (Yet Another Kuake - YaKuake) sözcüklerinden gelmektedir. Quake oyunundaki konsola benzer.</Description>
    </Source>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def build():
    pisitools.dosed("Makefile", "MANDIR = /usr/man", "MANDIR = /usr/share/man")
    autotools.make("-C po update-po")
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.remove("/usr/sbin/ntsysv")
    pisitools.remove("/sbin/chkconfig")
    pisitools.remove("/usr/share/man/man8/chkconfig.8")
    pisitools.remove("/usr/share/man/man8/ntsysv.8")
    pisitools.removeDir("/usr/share/man/man5")
    pisitools.removeDir("/sbin")

    pisitools.dodoc("COPYING")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>alternatives</Name>
        <Homepage>http://git.fedorahosted.org/git/?p=chkconfig.git;a=summary</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>Alternative management system</Summary>
        <Description>alternatives creates, removes, maintains and displays information about the symbolic links comprising the alternatives system. Alternatives system determines the defaults when several programs fulfilling the same or similar functions to be installed on a single system at the same time.</Description>
        <Archive sha1sum="d2111640833792e96859559113c89467ea0f9a80" type="targz">https://github.com/fedora-sysv/chkconfig/archive/chkconfig-1.3.63.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>popt-devel</Dependency>
            <Dependency>newt-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>alternatives</Name>
        <Files>
            <Path fileType="config">/etc</Path>
            <Path fileType="executable">/usr/sbin</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/var</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-01-26</Date>
            <Version>1.3.63</Version>
            <Comment>Rebuild for new toolchain.</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-02</Date>
            <Version>1.3.63</Version>
            <Comment>Rebuild</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-03-05</Date>
            <Version>1.3.63</Version>
            <Comment>First release</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>alternatives</Name>
        <Summary xml:lang="tr">Alternatif yönetim sistemi</Summary>
        <Description xml:lang="tr">alternatives, alternatives sisteminin parçası olan sembolik bağlantıları oluşturan, silen, yöneten ve bunlar hakkında bilgi gösteren araçtır. Alternatives sistemi, birbirine benzer ya da aynı işlevleri sunan programların aynı anda aynı sisteme kurulduğu zamanlarda öntanımlıları belirler.</Description>
    </Source>
</PISI>


code:
<PISI>
    <Name>x11.util</Name>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    autotools.configure("--with-mapdir=/usr/share/fonts/util")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("ChangeLog", "COPYING", "README")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>font-util</Name>
        <Homepage>http://www.x.org/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>MIT</License>
        <IsA>app:console</IsA>
        <Summary>X.Org font utilities</Summary>
        <Description>font-util package contains core font utilities for the Xorg XWindow system.</Description>
        <Archive sha1sum="0b16add3637c64b0bbaf1dd223b71b0421100c20" type="tarbz2">mirrors://xorg/individual/font/font-util-1.3.1.tar.bz2</Archive>
        <BuildDependencies>
            <Dependency>zlib-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>font-util</Name>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
            <Path fileType="data">/usr/share/fonts</Path>
            <Path fileType="data">/usr/share/aclocal</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="man">/usr/share/man</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-01-26</Date>
            <Version>1.3.1</Version>
            <Comment>Rebuild</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-02</Date>
            <Version>1.3.1</Version>
            <Comment>Rebuild</Comment>
            <Name>Burak Ertürk</Name>
            <Email>burakerturk@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-05-10</Date>
            <Version>1.3.1</Version>
            <Comment>First release</Comment>
            <Name>Burak Ertürk</Name>
            <Email>burakerturk@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>font-util</Name>
        X.Org font araçları
        Utilitaires de fontes de X.Org
        X.Org Schrift Werkzeuge
    </Source>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import pythonmodules

def install():
    pythonmodules.install("--install-lib=/usr/lib/pardus")

    pisitools.dosym("zorg-cli", "/usr/bin/zorg")

    # This is now provided by xorg-server package.
    pisitools.remove("/usr/share/X11/DriversDB")


code:
# -*- coding: utf-8 -*-

from pisi.version import Version

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    if fromVersion and Version("0.90") <= Version(fromVersion) <= Version("0.96"):
        from zorg import config

        busId = call("zorg", "Xorg.Display", "activeDeviceID")
        device = config.getDeviceInfo(busId)

        if device:
            config.saveDeviceInfo(device)
            config.saveXorgConfig(device)

    if fromRelease and int(fromRelease) < 81:
        from zorg import config

        layout, variant = config.getKeymapOld()
        config.saveKeymap(layout, variant)


code:
# -*- coding: utf-8 -*-

import os

import comar
from pardus.sysutils import *

from zorg.config import *
from zorg.consts import *
from zorg.probe import *
from zorg.utils import *

kernel_module_file = os.path.join(config_dir, "kernel_module")

def getDevice():
    bus = configuredBus()
    if not bus:
        return None

    return getDeviceInfo(bus)

def getDeviceOutput(output):
    dev = getDevice()
    if not dev:
        return None, None

    if output not in dev.outputs:
        dev.outputs[output] = Output(output)

    return dev, dev.outputs[output]

# Model methods

def ready(boot):
    opts = {}

    if boot:
        opts = get_kernel_option("xorg")

    if "keymap" in opts:
        keymap = opts["keymap"].split("/", 1)
        setKeymap(*keymap)

    if "safe" in opts:
        return False

    driver = opts.get("driver")

    if driver or "probe" in opts:
        return initialConfig(driver)

    busId = configuredBus()
    if not busId:
        return initialConfig()

    if boot:
        # Check if the active card is changed
        try:
            device = getDeviceInfo(busId)
        except IOError:
            # Device is not present on specified bus.
            # Check if the new device is configured before.
            newBus = getPrimaryCard()
            if newBus:
                device = getDeviceInfo(VideoDevice(newBus).bus_id)
                if device and not device.isChanged():
                    # Yes, it is configured before.
                    # Reenable driver and write xorg.conf.
                    device.enableDriver()
                    saveXorgConfig(device)
                else:
                    # This is a different card.
                    return initialConfig()
            else:
                # No card is present. Return True in order to
                # start with a manually edited xorg.conf.
                return True
        else:
            if not device or device.isChanged():
                return initialConfig()

    # Check kernel module. Later, this should be done
    # with Xorg.Driver.ready method.
    if os.path.exists(kernel_module_file):
        kernelModule = file(kernel_module_file).read()
        if run("/sbin/modprobe", "-i", kernelModule) and kernelModule != "fglrx":
            return False

    return True

def initialConfig(preferredDriver=None):
    bus = getPrimaryCard()

    if bus:
        device = VideoDevice(bus)
    else:
        # This machine might be a terminal server with no video cards.
        # We start X and leave the decision to the user.
        log_debug("No video card found.")
        return True

    if preferredDriver is None:
        preferredDriver = device.preferredDriver()

    device.setDriver(preferredDriver)

    saveDeviceInfo(device)
    saveXorgConfig(device)

    return True

def safeConfig():
    bus = getPrimaryCard()

    if bus:
        device = VideoDevice(bus)
    else:
        # See the comment in initialConfig
        return True

    device.setDriver("vesa")
    device.depth = 16
    device.outputs["default"] = Output("default")
    device.monitors["default"] = Monitor()

    saveDeviceInfo(device)
    saveXorgConfig(device)

    return True

# FIXME Confusing method name
def activeDeviceID():
    return configuredBus()

def listDrivers():
    drivers = listAvailableDrivers()

    link = comar.Link()
    packages = list(link.Xorg.Driver)
    for package in packages:
        try:
            info = link.Xorg.Driver[package].getInfo()
        except dbus.DBusException:
            continue
        alias = str(info["alias"])
        driver = str(info["xorg-module"])
        drivers.append(alias)
        if driver in drivers:
            drivers.remove(driver)

    return sorted(drivers)

def setDriver(driver):
    dev = getDevice()
    if dev:
        dev.setDriver(driver)
        saveDeviceInfo(dev)

def setDepth(depth):
    dev = getDevice()
    if dev:
        dev.depth = depth
        saveDeviceInfo(dev)

def setOutput(output, enabled, ignored):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setEnabled(enabled)
        out.setIgnored(ignored)

        saveDeviceInfo(dev)

def setMode(output, resolution, rate):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setMode(resolution, rate)

        saveDeviceInfo(dev)

def setOrientation(output, rotation, reflection):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setOrientation(rotation, reflection)

        saveDeviceInfo(dev)

def setPosition(output, position, arg):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setPosition(position, arg)

        saveDeviceInfo(dev)

def setMonitor(output, vendor, model, horizSync, vertRefresh):
    dev, out = getDeviceOutput(output)

    if dev:
        if model:
            mon = Monitor()
            mon.vendor  = vendor
            mon.model   = model
            mon.hsync   = horizSync
            mon.vref    = vertRefresh
            dev.monitors[output] = mon
        elif output in dev.monitors:
            del dev.monitors[output]
        else:
            return

        saveDeviceInfo(dev)

def syncConfigs():
    dev = getDevice()
    if dev:
        saveXorgConfig(dev)

def setKeymap(layout, variant=""):
    saveKeymap(layout, variant)


code:
Index: zorg-2.0.4/zorg/config.py
===================================================================
--- zorg-2.0.4.orig/zorg/config.py
+++ zorg-2.0.4/zorg/config.py
@@ -11,6 +11,21 @@ from zorg.parser import *
 from zorg.probe import VideoDevice, Monitor, Output
 from zorg.utils import *

+KEYMAP_CONF_TEMPLATE="""\
+# This file is generated by zorg. If you want to change settings
+# in this file, edit the file 10-keyboard.conf in the same
+# directory.
+
+Section "InputClass"
+    Identifier      "Configured Keymap"
+    MatchIsKeyboard "on"
+    MatchTag        "use_configured_keymap"
+
+    %(comment_layout)sOption          "xkb_layout"    "%(layout)s"
+    %(comment_variant)sOption          "xkb_variant"   "%(variant)s"
+EndSection
+"""
+
 def saveXorgConfig(card):
     parser = XorgParser()

@@ -265,7 +280,7 @@ def saveDeviceInfo(card):
     f = open(consts.config_file, "w")
     f.write(doc.toPrettyString().replace("\n\n", ""))

-def getKeymap():
+def getKeymapOld():
     layout = None
     variant = ""

@@ -297,24 +312,44 @@ def getKeymap():

     return layout, variant

-def saveKeymap(layout, variant=""):
-    if not os.path.exists(consts.config_dir):
-        os.mkdir(consts.config_dir, 0755)
+def getKeymap():
+    layout = None
+    variant = ""

     try:
-        doc = piksemel.parse(consts.config_file)
+        p = XorgParser()
+        p.parseFile(consts.keymap_conf)
+        section = p.getSections("InputClass")[0]
+        layout = section.get("xkb_layout")
+        variant = section.get("xkb_variant", "")
+
     except OSError:
-        doc = piksemel.newDocument("ZORG")
+        pass
+
+    if not layout:
+        from pardus.localedata import languages

-    keyboardTag = doc.getTag("Keyboard")
+        try:
+            language = file("/etc/mudur/language").read().strip()
+        except IOError:
+            language = "en"
+
+        if not languages.has_key(language):
+            language = "en"

-    if keyboardTag:
-        keyboardTag.hide()
+        keymap = languages[language].keymaps[0]
+        layout = keymap.xkb_layout
+        variant = keymap.xkb_variant

-    keyboardTag = doc.insertTag("Keyboard")
-    keyboardTag.insertTag("Layout").insertData(layout)
-    if variant:
-        keyboardTag.insertTag("Variant").insertData(variant)
+    return layout, variant

-    f = file(consts.config_file, "w")
-    f.write(doc.toPrettyString().replace("\n\n", ""))
+def saveKeymap(layout, variant=""):
+    opts = {"layout": layout,
+            "variant": variant,
+            "comment_layout": "" if layout else "#",
+            "comment_variant": "" if variant else "#"}
+
+    with open(consts.keymap_conf, "w") as f:
+        f.write(KEYMAP_CONF_TEMPLATE % opts)
+        f.flush()
+        os.fsync(f.fileno())
Index: zorg-2.0.4/zorg/consts.py
===================================================================
--- zorg-2.0.4.orig/zorg/consts.py
+++ zorg-2.0.4/zorg/consts.py
@@ -8,6 +8,7 @@ data_dir    = "/usr/share/X11"
 modules_dir = "/usr/lib/xorg/modules"

 xorg_conf_file      = "/etc/X11/xorg.conf"
+keymap_conf         = "/etc/X11/xorg.conf.d/00-configured-keymap.conf"
 config_file         = join(config_dir,  "config.xml")
 configured_bus_file = join(config_dir,  "configured_bus")
 drivers_file        = join(data_dir,    "DriversDB")


code:
Index: zorg-cli
===================================================================
--- zorg-cli	(revision 31546)
+++ zorg-cli	(revision 31547)
@@ -94,8 +94,12 @@
         setDriver(opts.driver)

     elif opts.keymap:
-        keymap = opts.keymap.split("/", 1)
-        link.Xorg.Display["zorg"].setKeymap(*keymap)
+        if "/" in opts.keymap:
+            layout, variant = opts.keymap.split("/", 1)
+        else:
+            layout, variant = opts.keymap, ""

+        link.Xorg.Display["zorg"].setKeymap(layout, variant)
+
     else:
         parser.print_help()


code:
Section "Module"
    SubSection "extmod"
        Option  "omit xfree86-dga" "true"
    EndSubSection
EndSection

Section "ServerFlags"
    Option  "BlankTime" "0"
    Option  "OffTime" "0"
    Option  "SuspendTime" "0"
    Option  "AllowMouseOpenFail" "true"
    Option  "StandbyTime" "0"
EndSection

Section "Device"
    Identifier  "VideoCard"
    Driver  "vesa"
EndSection

Section "Screen"
    Identifier  "Screen"
    Device  "VideoCard"
    Monitor "Default Monitor"
    DefaultDepth    16
    SubSection "Display"
        Depth   16
        Modes "800x600" "640x480"
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier  "Layout"
    Screen  "Screen"
EndSection

Section "Monitor"
    Identifier  "Default Monitor"
    HorizSync   31.5 - 50
    VertRefresh 50 - 70
EndSection


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>zorg</Name>
        <Homepage>http://www.pisilinux.org</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>Çomar's X configuration tools</Summary>
        <Description>zorg is a set of X configuration tools and monitor and display adapter database files.</Description>
        <Archive sha1sum="e643f28430d9c6f190a5164e87960ae0094f0cd0" type="targz">https://github.com/forYali/zorg/archive/2.0.4.tar.gz</Archive>
        <Patches>
            <Patch level="1">keyboard-config.patch</Patch>
            <!--Patch>setkeymap-signature.patch</Patch-->
        </Patches>
    </Source>

    <Package>
        <Name>zorg</Name>
        <Files>
            <Path fileType="executable">/sbin</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="data">/usr/share/X11</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/var/lib/zorg</Path>
        </Files>
        <AdditionalFiles>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/X11/xorg-safe.conf">xorg-safe.conf</AdditionalFile>
        </AdditionalFiles>
        <Provides>
            <COMAR script="xorg.display.py">Xorg.Display</COMAR>
            <COMAR script="package.py">System.Package</COMAR>
        </Provides>
    </Package>

    <History>
        <Update release="1">
            <Date>2017-03-05</Date>
            <Version>2.0.4</Version>
            <Comment>First release</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>zorg</Name>
        Çomar'ın X yapılandırma araçları
        <Description xml:lang="tr">X yapılandırma araçları, monitör ve ekran kartı veritabanları</Description>
        <Description xml:lang="fr">outils de configuration de X, fichiers de base de données des écrans et des cartes vidéo.</Description>
        Çomar's X-Konfigurationtools
    </Source>
</PISI>


code:
{
  "editor.fontFamily": "SFMono Nerd Font Mono",
    "glassit.alpha": 51,
    "window.titleBarStyle": "custom",

    "editor.renderWhitespace": "all"

    // Set default terminal
    //"terminal.integrated.shell.linux": "/usr/bin/fish",

    // Theme Settings
    "workbench.colorCustomizations": {
    // non-standard, transparency patched version only
    "workbench.background": "#00000080",

    // VSC colors
    // ref: https://code.visualstudio.com/api/references/theme-color
    "activityBar.background": "#00000069",
    "activityBar.border":"#252a30",
	 "activityBar.activeBackground":"#00000069",

    //"editor.lineHighlightBackground": "#ffffff21",
    //"editor.background":"#0a0e13",

    //"editorGroupHeader.tabsBackground" :"#090c10",
    //"editorGroupHeader.border": "#0f1319", //#252a30
    //"editorGroupHeader.tabsBorder":"#252a30",

    //"tab.activeBackground": "#040608",
    //"tab.inactiveBackground": "#090c10",
    //"tab.unfocusedActiveBackground": "#090c10",
    //"tab.activeBorderTop": "#bb652f",
    //"tab.border": "#00000000",

    "list.activeSelectionBackground": "#00000040",
    "list.hoverBackground": "#00000040",
    "list.inactiveSelectionBackground": "#00000040",

    //"sideBar.background": "#00000080",
    //"sideBarSectionHeader.background": "#00000000",

    "statusBar.background": "#0000008f",
    "statusBar.noFolderBackground": "#00000485",
    "statusBar.border":"#252a30",

    "titleBar.activeBackground": "#00000069",
    "titleBar.border": "#252a30"
  },
  "workbench.startupEditor": "none",
  "workbench.productIconTheme": "material-product-icons",
  "workbench.iconTheme": "vscode-simpler-icons",
  "window.menuBarVisibility": "compact"
}

repo_name: noescape/dot

path: .config/Code - OSS/settings.json

license: mit


code:
[global]

monitor                     = 0

font                        = "Source Code Pro 11"
frame_width                 = 1
gap_size                    = 5
transparency                = 50
separator_height            = 4
separator_color             = foreground
corner_radius               = 0
padding                     = 8
horizontal_padding          = 8
origin                      = top-right
offset                      = 10x30
width                       = 300
height                      = 400

 icon_theme                  = Stylish
 icon_position               = left
 min_icon_size               = 64
 max_icon_size               = 64
 text_icon_padding           = 15

progress_bar                = true
progress_bar_height         = 10
progress_bar_frame_width    = 1
progress_bar_min_width      = 150
progress_bar_max_width      = 300

sort                        = yes
line_height                 = 2
markup                      = full
format                      = "<b>%s</b>\n%b"
alignment                   = center
timeout                     = 3
vertical_alignment          = center
ellipsize                   = end
ignore_newline              = no
stack_duplicates            = false
indicate_hidden             = false
show_indicators             = false
browser                     = /usr/bin/firefox
title                       = Dunst
class                       = dunst

mouse_left_click            = open_url, close_current, do_action

[urgency_low]
frame_color                 = "#ffffff"
background                  = "#000001"
foreground                  = "#ffffff"

[urgency_normal]
frame_color                 = "#ffffff"
background                  = "#000001"
foreground                  = "#ffffff"

[urgency_critical]
frame_color                 = "#ffffff"
background                  = "#000001"
foreground                  = "#ffffff"
timeout                     = 10

# vim:ft=cfg

path: .config/dunst/dunstrc


code:
if status is-interactive
    set -x PATH /usr/share/dotnet/:$PATH
    set -x PATH $PATH /home/lour/.dotnet/tools
    set -U fish_greeting
end


code:
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3400
SETUVAR fish_color_autosuggestion:555\x1ebrblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr


code:
function fish_prompt
  set -l last_status $status

  if set -q SSH_TTY
  set -g fish_color_host brred
end

  if not set -q __fish_git_prompt_show_informative_status
    set -g __fish_git_prompt_show_informative_status 1
  end
  if not set -q __fish_git_prompt_color_branch
    set -g __fish_git_prompt_color_branch brmagenta
  end
  if not set -q __fish_git_prompt_showupstream
    set -g __fish_git_prompt_showupstream "informative"
  end
  if not set -q __fish_git_prompt_showdirtystate
    set -g __fish_git_prompt_showdirtystate "yes"
  end
  if not set -q __fish_git_prompt_color_stagedstate
    set -g __fish_git_prompt_color_stagedstate yellow
  end
  if not set -q __fish_git_prompt_color_invalidstate
    set -g __fish_git_prompt_color_invalidstate red
  end
  if not set -q __fish_git_prompt_color_cleanstate
    set -g __fish_git_prompt_color_cleanstate brgreen
  end

  printf '%s%s %s%s%s%s ' (set_color $fish_color_host) (prompt_hostname) (set_color $fish_color_cwd) (prompt_pwd) (set_color normal) (__fish_git_prompt)

  if not test $last_status -eq 0
    set_color $fish_color_error
  end
  echo -n '$ '
  set_color normal
end


code:
! FONT

font_family      SFMono Nerd Font Mono
bold_font        auto
italic_font      auto
bold_italic_font auto

font_size 11.0

background #000001
foreground #444649
cursor #ffffff
selection_background #303030
color0 #141414
color8 #262626
color1 #c06c43
color9 #dd7c4c
color2 #afb979
color10 #cbd88c
color3 #c2a86c
color11 #e1c47d
color4 #495154
color12 #5a5d61
color5 #b4be7b
color13 #d0db8e
color6 #778284
color14 #8a989a
color7 #feffd3
color15 #feffd3
selection_foreground #141414

url_color #e92741

confirm_os_window_close   	0

background_opacity          0.9


code:
#################################
#             Shadows           #
#################################

# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = false;

# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 7;

# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75

# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;

# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;

# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0

# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0

# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0

# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"

# Specify a list of conditions of windows that should have no shadow.
#
# examples:
#   shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
  "name = 'Notification'",
  "class_g = 'dunstrc'",
  "_GTK_FRAME_EXTENTS@:c"
];

# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []

# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
#    shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""

# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false

#################################
#           Fading              #
#################################

# Fade windows in/out when opening/closing and when opacity changes,
#  unless no-fading-openclose is used.
# fading = false
fading = false;

# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;

# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;

# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10

# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []

# Do not fade on window open/close.
# no-fading-openclose = false

# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false

#################################
#   Transparency / Opacity      #
#################################

# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 0.95;

# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 0.9;

# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;

# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0

# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0

# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'firefox'" ];

# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0

# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
#    opacity-rule = [ "80:class_g = 'URxvt'" ];
#
opacity-rule = ["80:class_g = 'kitty'",
                "100:class_g = 'firefox'",
                "80:class_g = 'Spotify'",
                "100:class_g = 'dunst'",
                "80:class_g = 'dmenu'"
                ]

#################################
#           Corners             #
#################################

# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 0

# Exclude conditions for rounded corners.
rounded-corners-exclude = [
  "window_type = 'dock'",
  "window_type = 'desktop'"
];

#################################
#     Background-Blurring       #
#################################

# Parameters for background blurring, see the *BLUR* section for more information.
blur-method = "dual_kawase"
blur-size = 12
#
# blur-deviation = false
#
blur-strength = 10

# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false

# Blur background of windows when the window frame is not opaque.
# Implies:
#    blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false

# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false

# Specify the blur convolution kernel, with the following format:
# example:
#   blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";

# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
  "window_type = 'dock'",
  "window_type = 'desktop'",
  "class_g = 'firefox'",
  "class_g = 'dunst'",
  "_GTK_FRAME_EXTENTS@:c"
];

#################################
#       General Settings        #
#################################

# Enable remote control via D-Bus. See the man page for more details.
# dbus = true

# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false

# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx"
#backend = "xrender";

# Enable/disable VSync.
vsync = false
# vsync = true;

# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false

# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;

# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;

# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;

# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;

# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false

# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false

# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0

# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []

# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;

# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# detect-client-leader = false

# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1

# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []

# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
glx-no-stencil = true;

# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false

# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;

# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false

# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"

# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
#   "my_shader.frag:window_type != 'dock'"
# ]

# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false

# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false

# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0

# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false

# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []

# Set the log level. Possible values are:
#  "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";

# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"

# Show all X errors (for debugging)
# show-all-xerrors = false

# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"

# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
#     "unknown", "desktop", "dock", "toolbar", "menu", "utility",
#     "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
#     "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
#   fade, shadow:::
#     Controls window-type-specific shadow and fade settings.
#
#   opacity:::
#     Controls default opacity of the window type.
#
#   focus:::
#     Controls whether the window of this type is to be always considered focused.
#     (By default, all window types except "normal" and "dialog" has this on.)
#
#   full-shadow:::
#     Controls whether shadow is drawn under the parts of the window that you
#     normally won't be able to see. Useful when the window has parts of it
#     transparent, and you want shadows in those areas.
#
#   clip-shadow-above:::
#     Controls whether shadows that would have been drawn above the window should
#     be clipped. Useful for dock windows that should have no shadow painted on top.
#
#   redir-ignore:::
#     Controls whether this type of windows should cause screen to become
#     redirected again after been unredirected. If you have unredir-if-possible
#     set, and doesn't want certain window to cause unnecessary screen redirection,
#     you can set this to `true`.
#
wintypes:
{
  tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
  dock = { shadow = false; clip-shadow-above = true; }
  dnd = { shadow = false; }
  popup_menu = { opacity = 0.8; }
  dropdown_menu = { opacity = 0.8; }
};


code:
#!/usr/bin/sh

for path in "$@"; do
    file_name="$(basename "$path")"
    dir_name="$(dirname "$path")"
    case "$file_name" in .*)
        mv -v -- "$path" "$dir_name/${file_name#.}"
        ;;
    *)
        mv -v -- "$path" "$dir_name/.$file_name"
        ;;
    esac
done

printf "Press ENTER to continue"
read -r


code:
import os
import subprocess

import ranger.api.commands as ranger

class fzf(ranger.Command):
    """
    :fzf_select
    Find a file using fzf.
    With a prefix argument select only directories.
    """

    def execute(self):
        if self.quantifier:
            # match only directories
            command = "find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        else:
            # match files and directories
            command = "find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        fzf = self.fm.execute_command(command, stdout=subprocess.PIPE)
        stdout, _ = fzf.communicate()
        if fzf.returncode == 0:
            fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
            if os.path.isdir(fzf_file):
                self.fm.cd(fzf_file)
            else:
                self.fm.select_file(fzf_file)


code:
set preview_images true
set preview_images_method kitty

default_linemode devicons

map <alt>h kitty ./keybinds/dotify.sh %s
map f fzf


code:
# vim: ft=cfg
#
# This is the configuration file of "rifle", ranger's file executor/opener.
# Each line consists of conditions and a command.  For each line the conditions
# are checked and if they are met, the respective command is run.
#
# Syntax:
#   <condition1> , <condition2> , ... = command
#
# The command can contain these environment variables:
#   $1-$9 | The n-th selected file
#   $@    | All selected files
#
# If you use the special command "ask", rifle will ask you what program to run.
#
# Prefixing a condition with "!" will negate its result.
# These conditions are currently supported:
#   match <regexp> | The regexp matches $1
#   ext <regexp>   | The regexp matches the extension of $1
#   mime <regexp>  | The regexp matches the mime type of $1
#   name <regexp>  | The regexp matches the basename of $1
#   path <regexp>  | The regexp matches the absolute path of $1
#   has <program>  | The program is installed (i.e. located in $PATH)
#   env <variable> | The environment variable "variable" is non-empty
#   file           | $1 is a file
#   directory      | $1 is a directory
#   number <n>     | change the number of this command to n
#   terminal       | stdin, stderr and stdout are connected to a terminal
#   X              | A graphical environment is available (darwin, Xorg, or Wayland)
#
# There are also pseudo-conditions which have a "side effect":
#   flag <flags>  | Change how the program is run. See below.
#   label <label> | Assign a label or name to the command so it can
#                 | be started with :open_with <label> in ranger
#                 | or `rifle -p <label>` in the standalone executable.
#   else          | Always true.
#
# Flags are single characters which slightly transform the command:
#   f | Fork the program, make it run in the background.
#     |   New command = setsid $command >& /dev/null &
#   r | Execute the command with root permissions
#     |   New command = sudo $command
#   t | Run the program in a new terminal.  If $TERMCMD is not defined,
#     | rifle will attempt to extract it from $TERM.
#     |   New command = $TERMCMD -e $command
# Note: The "New command" serves only as an illustration, the exact
# implementation may differ.
# Note: When using rifle in ranger, there is an additional flag "c" for
# only running the current file even if you have marked multiple files.

#-------------------------------------------
# Websites
#-------------------------------------------
# Rarely installed browsers get higher priority; It is assumed that if you
# install a rare browser, you probably use it.  Firefox/konqueror/w3m on the
# other hand are often only installed as fallback browsers.
ext x?html?, has surf,             X, flag f = surf -- file://"$1"
ext x?html?, has vimprobable,      X, flag f = vimprobable -- "$@"
ext x?html?, has vimprobable2,     X, flag f = vimprobable2 -- "$@"
ext x?html?, has qutebrowser,      X, flag f = qutebrowser -- "$@"
ext x?html?, has dwb,              X, flag f = dwb -- "$@"
ext x?html?, has jumanji,          X, flag f = jumanji -- "$@"
ext x?html?, has luakit,           X, flag f = luakit -- "$@"
ext x?html?, has uzbl,             X, flag f = uzbl -- "$@"
ext x?html?, has uzbl-tabbed,      X, flag f = uzbl-tabbed -- "$@"
ext x?html?, has uzbl-browser,     X, flag f = uzbl-browser -- "$@"
ext x?html?, has uzbl-core,        X, flag f = uzbl-core -- "$@"
ext x?html?, has midori,           X, flag f = midori -- "$@"
ext x?html?, has opera,            X, flag f = opera -- "$@"
ext x?html?, has firefox,          X, flag f = librewolf -- "$@"
ext x?html?, has seamonkey,        X, flag f = seamonkey -- "$@"
ext x?html?, has iceweasel,        X, flag f = iceweasel -- "$@"
ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@"
ext x?html?, has chromium,         X, flag f = chromium -- "$@"
ext x?html?, has google-chrome,    X, flag f = google-chrome -- "$@"
ext x?html?, has epiphany,         X, flag f = epiphany -- "$@"
ext x?html?, has konqueror,        X, flag f = konqueror -- "$@"
ext x?html?, has elinks,            terminal = elinks "$@"
ext x?html?, has links2,            terminal = links2 "$@"
ext x?html?, has links,             terminal = links "$@"
ext x?html?, has lynx,              terminal = lynx -- "$@"
ext x?html?, has w3m,               terminal = w3m "$@"

#-------------------------------------------
# Misc
#-------------------------------------------
# Define the "editor" for text files as first action
mime ^text,  label editor = nvim -- "$@"
mime ^text,  label pager  = "$PAGER" -- "$@"
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = nvim -- "$@"
!mime ^text, label pager,  ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"

ext 1                         = man "$1"
ext s[wmf]c, has zsnes, X     = zsnes "$1"
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
ext nes, has fceux, X         = fceux "$1"
ext exe                       = wine "$1"
name ^[mM]akefile$            = make

#--------------------------------------------
# Scripts
#-------------------------------------------
ext py  = python -- "$1"
ext pl  = perl -- "$1"
ext rb  = ruby -- "$1"
ext js  = node -- "$1"
ext sh  = sh -- "$1"
ext php = php -- "$1"

#--------------------------------------------
# Audio without X
#-------------------------------------------
mime ^audio|ogg$, terminal, has mpv      = mpv -- "$@"
mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
mime ^audio|ogg$, terminal, has mplayer  = mplayer -- "$@"
ext midi?,        terminal, has wildmidi = cmus -- "$@"

#--------------------------------------------
# Video/Audio with a GUI
#-------------------------------------------
mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
mime ^video,       has mpv,      X, flag f = mpv -- "$@"
mime ^video,       has mpv,      X, flag f = mpv --fs -- "$@"
mime ^video,       has mplayer2, X, flag f = mplayer2 -- "$@"
mime ^video,       has mplayer2, X, flag f = mplayer2 -fs -- "$@"
mime ^video,       has mplayer,  X, flag f = mplayer -- "$@"
mime ^video,       has mplayer,  X, flag f = mplayer -fs -- "$@"
mime ^video|audio, has vlc,      X, flag f = vlc -- "$@"
mime ^video|audio, has totem,    X, flag f = totem -- "$@"
mime ^video|audio, has totem,    X, flag f = totem --fullscreen -- "$@"

#--------------------------------------------
# Video without X
#-------------------------------------------
mime ^video, terminal, !X, has mpv       = mpv -- "$@"
mime ^video, terminal, !X, has mplayer2  = mplayer2 -- "$@"
mime ^video, terminal, !X, has mplayer   = mplayer -- "$@"

#-------------------------------------------
# Documents
#-------------------------------------------
ext pdf, has llpp,     X, flag f = llpp "$@"
ext pdf, has zathura,  X, flag f = zathura -- "$@"
ext pdf, has mupdf,    X, flag f = mupdf "$@"
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
ext pdf, has apvlv,    X, flag f = apvlv -- "$@"
ext pdf, has xpdf,     X, flag f = xpdf -- "$@"
ext pdf, has evince,   X, flag f = evince -- "$@"
ext pdf, has atril,    X, flag f = atril -- "$@"
ext pdf, has okular,   X, flag f = okular -- "$@"
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
ext pdf, has open,     X, flag f = open "$@"

ext docx?, has catdoc,       terminal = catdoc -- "$@" | "$PAGER"

ext                        sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric,    X, flag f = gnumeric -- "$@"
ext                        sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread,     X, flag f = kspread -- "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice,     X, flag f = soffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice,     X, flag f = ooffice "$@"

ext djvu, has zathura,X, flag f = zathura -- "$@"
ext djvu, has evince, X, flag f = evince -- "$@"
ext djvu, has atril,  X, flag f = atril -- "$@"
ext djvu, has djview, X, flag f = djview -- "$@"

ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
ext epub, has zathura,      X, flag f = zathura -- "$@"
ext epub, has mupdf,        X, flag f = mupdf -- "$@"
ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"

ext cbr,  has zathura,      X, flag f = zathura -- "$@"
ext cbz,  has zathura,      X, flag f = zathura -- "$@"

#-------------------------------------------
# Images
#-------------------------------------------
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display,  X, flag f = display -- "$@"

mime ^image, has imv,       X, flag f = imv -- "$@"
mime ^image, has pqiv,      X, flag f = pqiv -- "$@"
mime ^image, has sxiv,      X, flag f = sxiv -- "$@"
mime ^image, has feh,       X, flag f = feh -- "$@"
mime ^image, has mirage,    X, flag f = mirage -- "$@"
mime ^image, has ristretto, X, flag f = ristretto "$@"
mime ^image, has eog,       X, flag f = eog -- "$@"
mime ^image, has eom,       X, flag f = eom -- "$@"
mime ^image, has nomacs,    X, flag f = nomacs -- "$@"
mime ^image, has geeqie,    X, flag f = geeqie -- "$@"
mime ^image, has gpicview,  X, flag f = gpicview -- "$@"
mime ^image, has gwenview,  X, flag f = gwenview -- "$@"
mime ^image, has gimp,      X, flag f = gimp -- "$@"
ext xcf,                    X, flag f = gimp -- "$@"

#-------------------------------------------
# Archives
#-------------------------------------------

# avoid password prompt by providing empty password
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
# This requires atool
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,     has atool = atool --list --each -- "$@" | "$PAGER"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,  has atool = atool --extract --each -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"

# Listing and extracting archives without atool:
ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
ext zip, has unzip = unzip -l "$1" | less
ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
ext ace, has unace = unace l "$1" | less
ext ace, has unace = for file in "$@"; do unace e "$file"; done
ext rar, has unrar = unrar l "$1" | less
ext rar, has unrar = for file in "$@"; do unrar x "$file"; done

#-------------------------------------------
# Fonts
#-------------------------------------------
mime ^font, has fontforge, X, flag f = fontforge "$@"

#-------------------------------------------
# Flag t fallback terminals
#-------------------------------------------
# Rarely installed terminal emulators get higher priority; It is assumed that
# if you install a rare terminal emulator, you probably use it.
# gnome-terminal/konsole/xterm on the other hand are often installed as part of
# a desktop environment or as fallback terminal emulators.
mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
mime ^ranger/x-terminal-emulator, has st = st -e "$@"
mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"

#-------------------------------------------
# Misc
#-------------------------------------------
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"

#-------------------------------------------
# Generic file openers
#-------------------------------------------
label open, has xdg-open = xdg-open -- "$@"
label open, has open     = open -- "$@"

# Define the editor for non-text files + pager as last action
              !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = ask
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = ${VISUAL:-$EDITOR} -- "$@"
label pager,  !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = "$PAGER" -- "$@"

######################################################################
# The actions below are left so low down in this file on purpose, so #
# they are never triggered accidentally.                             #
######################################################################

# Execute a file as program/script.
mime application/x-executable = "$1"

# Move the file to trash using trash-cli.
label trash, has trash-put = trash-put -- "$@"
label trash = mkdir -p -- ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash; mv -- "$@" ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash


code:
#Volume Control
XF86AudioLowerVolume
	amixer -D pulse set Master 5%-
XF86AudioRaiseVolume
	amixer -D pulse set Master 5%+
XF86AudioMute
        amixer -D pulse set Master toggle

# Change lanuage
alt + shift + Tab
	{setxkbmap ru, setxkbmap us}

@Print
	flameshot full -p ~/Screens

shift + @Print
	flameshot gui --clipboard

path: .config/sxhkd/sxhkdrc


code:
#!/bin/bash

nitrogen --restore
sxhkd &
~/Clone/dwm-bar/dwm_bar.sh &
dunst &
picom &


code:
# Arch Linux Rice

This repository contains my configuration files and settings for my Arch Linux system.

## Screenshots

![Desktop](./Screenshots/desktop.png)
![Terminal](./Screenshots/terminal.png)

## Features

- Customized desktop and window manager appearance
- Configurable dark color scheme
- Support for various applications and tools
- Automated package installation and setup

## Installation

1. Ensure that you have Arch Linux installed.

2. Clone this repository to your local machine:

```shell
git clone https://notabug.org/noescape/dot-dwm.git
git clone https://git.suckless.org/dwm
git clone https://github.com/joestandring/dwm-bar.git
```

### 1. Navigate to the repository directory:

```shell
cd dot-dwm
```

### 2. Install the required packages and dependencies:

| :warning: WARNING          |
|:---------------------------|
| Using the pacman package manager |

```shell
sudo pacman -S xorg xorg-xinint alsa-plugins alsa-utils code connman dmenu dunst fish flameshot font-manager fuse2 go kitty lua-language-server luarocks ly mons mpc mpv neovim networkmanager networkmanager-openvpn nitrogen nodejs npm openresolv pamixer pass picom playerctl pulseaudio python-pillow ranger sxhkd wget
xclip yarn

yay -S code-oss-marketplace nerd-fonts-sf-mono nvim-packer-git
```

### 3. Configure the relevant configuration files:

| :warning: WARNING          |
|:---------------------------|
| Edit your path in .script/autostart.sh |

```shell
cp -r .config/* ~/.config/
cp -r .script ~
cp -r fonts ~/.local/share/
cp -r dwm/* dwmClonePath/dwm/

fc-cache -fv

cd dwmClonePath/dwm
sudo make && sudo make clean Install
```

### 4. Reboot your system:

```shell
reboot
```

### 5. After the reboot, enjoy your customized Arch Linux system!

## Issues and Support

If you encounter any issues while using this repository or have any questions, please create an issue in the [Issues](https://notabug.org/noescape/dot-dwm/issues) section.

## License

This project is licensed under the [MIT License](https://notabug.org/noescape/dot-dwm/src/master/LICENSE).


code:
/* See LICENSE file for copyright and license details. */

/* appearance */
static const unsigned int borderpx  = 2;        /* border pixel of windows */
static const unsigned int snap      = 32;       /* snap pixel */
static const int showbar            = 1;        /* 0 means no bar */
static const int topbar             = 1;        /* 0 means bottom bar */
static const char *fonts[]          = {"Source Code Pro:size=11",
					                            "Material Icons Round:size=11"};
static const char dmenufont[]       = "Source Code Pro:size=11";
static const char col_gray1[]       = "#101010";
static const char col_gray2[]       = "#101010";
static const char col_gray3[]       = "#f2f2f2";
static const char col_gray4[]       = "#101010";
static const char col_cyan[]        = "#f2f2f2";
static const char *colors[][3]      = {
	/*               fg         bg         border   */
	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
};

/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };

static const Rule rules[] = {
	/* xprop(1):
	 *	WM_CLASS(STRING) = instance, class
	 *	WM_NAME(STRING) = title
	 */
	/* class      instance    title       tags mask     isfloating   monitor */
	{ "firefox",  NULL,       NULL,       1 << 1,       -1,           -1 },
	{ "Spotify",  NULL,       NULL,       1 << 2,       1,           -1 },
	{ "steam",    NULL,       NULL,       1 << 3,       1,           -1 },
	{ "obs",      NULL,       NULL,       1 << 4,       -1,           -1 },
};

/* layout(s) */
static const float mfact     = 0.55; /* factor of master area size [0.05..0.95] */
static const int nmaster     = 1;    /* number of clients in master area */
static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */

static const Layout layouts[] = {
	/* symbol     arrange function */
	{ "[]=",      tile },    /* first entry is default */
	{ "><>",      NULL },    /* no layout function means floating behavior */
	{ "[M]",      monocle },
};

/* key definitions */
#define MODKEY Mod1Mask
#define TAGKEYS(KEY,TAG) \
	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },

/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }

/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[]  = { "kitty", NULL };

static const Key keys[] = {
	/* modifier                     key        function        argument */
	{ MODKEY,                       XK_d,      spawn,          {.v = dmenucmd } },
	{ MODKEY,            		        XK_Return, spawn,          {.v = termcmd } },
	{ MODKEY,                       XK_b,      togglebar,      {0} },
	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
	//{ MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
	//{ MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
	{ MODKEY|ShiftMask,             XK_Return, zoom,           {0} },
	{ MODKEY,                       XK_Tab,    view,           {0} },
	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
	{ MODKEY,                       XK_space,  setlayout,      {0} },
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
	TAGKEYS(                        XK_1,                      0)
	TAGKEYS(                        XK_2,                      1)
	TAGKEYS(                        XK_3,                      2)
	TAGKEYS(                        XK_4,                      3)
	TAGKEYS(                        XK_5,                      4)
	TAGKEYS(                        XK_6,                      5)
	TAGKEYS(                        XK_7,                      6)
	TAGKEYS(                        XK_8,                      7)
	TAGKEYS(                        XK_9,                      8)
	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
};

/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static const Button buttons[] = {
	/* click                event mask      button          function        argument */
	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
	{ ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
	{ ClkTagBar,            0,              Button1,        view,           {0} },
	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};


code:
diff -up dwm/dwm.c dwmmod/dwm.c
--- dwm/dwm.c	2020-06-25 00:21:30.383692180 -0300
+++ dwmmod/dwm.c	2020-06-25 00:20:35.643692330 -0300
@@ -1057,6 +1057,8 @@ manage(Window w, XWindowAttributes *wa)
 	updatewindowtype(c);
 	updatesizehints(c);
 	updatewmhints(c);
+	c->x = c->mon->mx + (c->mon->mw - WIDTH(c)) / 2;
+	c->y = c->mon->my + (c->mon->mh - HEIGHT(c)) / 2;
 	XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
 	grabbuttons(c, 0);
 	if (!c->isfloating)


code:
commit 5918623c5bd7fda155bf9dc3d33890c4ae1722d0
Author: Simon Bremer <simon.bremer@tum.de>
Date:   Thu Dec 22 17:31:07 2016 +0100

    Applied and fixed autostart patch for previous version;

diff --git a/dwm.c b/dwm.c
index d27cb67..066ed71 100644
--- a/dwm.c
+++ b/dwm.c
@@ -194,6 +194,7 @@ static void resizeclient(Client *c, int x, int y, int w, int h);
 static void resizemouse(const Arg *arg);
 static void restack(Monitor *m);
 static void run(void);
+static void runAutostart(void);
 static void scan(void);
 static int sendevent(Client *c, Atom proto);
 static void sendmon(Client *c, Monitor *m);
@@ -1386,6 +1387,12 @@ run(void)
 }

 void
+runAutostart(void) {
+	system("cd ~/.dwm; ./autostart_blocking.sh");
+	system("cd ~/.dwm; ./autostart.sh &");
+}
+
+void
 scan(void)
 {
 	unsigned int i, num;
@@ -2145,6 +2152,7 @@ main(int argc, char *argv[])
 	checkotherwm();
 	setup();
 	scan();
+	runAutostart();
 	run();
 	cleanup();
 	XCloseDisplay(dpy);


code:
From 69f91089d9248fa9695eb925956e255a215171b8 Mon Sep 17 00:00:00 2001
From: bakkeby <bakkeby@gmail.com>
Date: Tue, 7 Apr 2020 12:29:08 +0200
Subject: [PATCH] Adding 6.2 center patch with multi-monitor fix and
 auto-centering of floating popup windows
---
 config.def.h |  6 +++---
 dwm.c        | 13 +++++++++++--
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/config.def.h b/config.def.h
index 1c0b587..44b46e5 100644
--- a/config.def.h
+++ b/config.def.h
@@ -26,9 +26,9 @@ static const Rule rules[] = {
 	 *	WM_CLASS(STRING) = instance, class
 	 *	WM_NAME(STRING) = title
 	 */
-	/* class      instance    title       tags mask     isfloating   monitor */
-	{ "Gimp",     NULL,       NULL,       0,            1,           -1 },
-	{ "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
+	/* class      instance    title       tags mask     iscentered   isfloating   monitor */
+	{ "Gimp",     NULL,       NULL,       0,            0,           1,           -1 },
+	{ "Firefox",  NULL,       NULL,       1 << 8,       0,           0,           -1 },
 };

 /* layout(s) */
diff --git a/dwm.c b/dwm.c
index 4465af1..ab33757 100644
--- a/dwm.c
+++ b/dwm.c
@@ -92,7 +92,7 @@ struct Client {
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int bw, oldbw;
 	unsigned int tags;
-	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
+	int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
 	Client *next;
 	Client *snext;
 	Monitor *mon;
@@ -137,6 +137,7 @@ typedef struct {
 	const char *instance;
 	const char *title;
 	unsigned int tags;
+	int iscentered;
 	int isfloating;
 	int monitor;
 } Rule;
@@ -285,6 +286,7 @@ applyrules(Client *c)
 	XClassHint ch = { NULL, NULL };

 	/* rule matching */
+	c->iscentered = 0;
 	c->isfloating = 0;
 	c->tags = 0;
 	XGetClassHint(dpy, c->win, &ch);
@@ -297,6 +299,7 @@ applyrules(Client *c)
 		&& (!r->class || strstr(class, r->class))
 		&& (!r->instance || strstr(instance, r->instance)))
 		{
+			c->iscentered = r->iscentered;
 			c->isfloating = r->isfloating;
 			c->tags |= r->tags;
 			for (m = mons; m && m->num != r->monitor; m = m->next);
@@ -1056,6 +1059,10 @@ manage(Window w, XWindowAttributes *wa)
 	updatewindowtype(c);
 	updatesizehints(c);
 	updatewmhints(c);
+	if (c->iscentered) {
+		c->x = c->mon->mx + (c->mon->mw - WIDTH(c)) / 2;
+		c->y = c->mon->my + (c->mon->mh - HEIGHT(c)) / 2;
+	}
 	XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
 	grabbuttons(c, 0);
 	if (!c->isfloating)
@@ -2009,8 +2016,10 @@ updatewindowtype(Client *c)

 	if (state == netatom[NetWMFullscreen])
 		setfullscreen(c, 1);
-	if (wtype == netatom[NetWMWindowTypeDialog])
+	if (wtype == netatom[NetWMWindowTypeDialog]) {
+		c->iscentered = 1;
 		c->isfloating = 1;
+	}
 }

 void
--
2.17.1


code:
From bd6efd81eabab77c91a3e95b528b19db2d58525b Mon Sep 17 00:00:00 2001
From: Sacules <leociancalucas@gmail.com>
Date: Sun, 9 Sep 2018 17:12:58 -0300
Subject: [PATCH] Centers windows names on status bar.

---
 dwm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dwm.c b/dwm.c
index 4465af1..9d5ef7a 100644
--- a/dwm.c
+++ b/dwm.c
@@ -730,8 +730,9 @@ drawbar(Monitor *m)

 	if ((w = m->ww - sw - x) > bh) {
 		if (m->sel) {
+			int mid = (m->ww - TEXTW(m->sel->name)) / 2 - x;
 			drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
-			drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
+			drw_text(drw, x, 0, w, bh, mid, m->sel->name, 0);
 			if (m->sel->isfloating)
 				drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
 		} else {
--
2.18.0


code:
From 700b0bdea872f4c00182b2bd925b41fe03f8d222 Mon Sep 17 00:00:00 2001
From: Aidan Hall <aidan.hall@outlook.com>
Date: Tue, 2 Jun 2020 14:41:53 +0000
Subject: [PATCH] Prevents hiding the border if layout is floating.

---
 dwm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/dwm.c b/dwm.c
index 4465af1..2dd959d 100644
--- a/dwm.c
+++ b/dwm.c
@@ -1282,6 +1282,14 @@ resizeclient(Client *c, int x, int y, int w, int h)
 	c->oldw = c->w; c->w = wc.width = w;
 	c->oldh = c->h; c->h = wc.height = h;
 	wc.border_width = c->bw;
+	if (((nexttiled(c->mon->clients) == c && !nexttiled(c->next))
+	    || &monocle == c->mon->lt[c->mon->sellt]->arrange)
+	    && !c->isfullscreen && !c->isfloating
+	    && NULL != c->mon->lt[c->mon->sellt]->arrange) {
+		c->w = wc.width += c->bw * 2;
+		c->h = wc.height += c->bw * 2;
+		wc.border_width = 0;
+	}
 	XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
 	configure(c);
 	XSync(dpy, False);
--
2.26.2


code:
# Pleroma Comments

**Pleroma Comments** is a Pandoc filter that generates a comments section by fetching replies from the Fediverse (through Pleroma servers).

Example: [https://antares.neocities.org/blog/pandoc-filter-pleroma-comments](https://antares.neocities.org/blog/pandoc-filter-pleroma-comments)

## Variables

The filter uses the variable `pleroma-urls` for input which can be defined in the manuscript's YAML header.

* `pleroma-urls`: a list of strings that should contain the URLs of the posts to source replies from.

The following two are optional.  If both are defined, then the script will download avatars and will not use hotlinks.

1. (lua) `pleroma_avatar_path` = (yaml) `pleroma-avatar-path`: a string ending in `/`, the folder containing avatars as referenced by the web page (e.g `<img src="(pleroma-avatar-path)/avatar.png"/>`).
2. (lua) `pleroma_avatar_save_path` = (yaml) `pleroma-avatar-save-path`: a string ending in `/`, the folder in which avatars are downloaded to.

If multiple pages will be storing avatars in the same folder, create `config.lua` and assign the variables there. If a specific page will have its own directory for images, assign the variables in the manuscript's YAML header.

The filter exports variables that can be used in a Pandoc template.

* `pleroma-comments`: string, the full comments section rendered by the script.
* `pleroma-comments-count`: integer, the number of comments received by the script.
* `pleroma-has-comments`: boolean, whether or not there are comments available
* `pleroma`: table of strings, post IDs and their full URLs.

## Usage

In a Pandoc template, include the following to generate the entire comments section.

    $if(pleroma-urls)$

Comments ($pleroma-comments-count$)

Reply to any of the bulleted links to leave a comment.

        $for(pleroma)$

$pleroma.id$

        $endfor$

    $pleroma-comments$
    $endif$

Add a link to jump to the comments section if there are any comments.

    $if(pleroma-has-comments)$
    View $pleroma-comments-count$ comment(s).
    $endif$

repo_name: scuti/pleroma


code:
/* colors  */

/*.pleroma-comment blockquote {
    border-left: 3px solid red;
}*/

/*.pleroma-comment  .bar {
    background-color: green;
}*/

/*.pleroma-comment .card-link {
    background-color: blue;
    color: white;
}*/

/*.pleroma-comment .card-link:hover {
    background-color: orange;
}*/

.pleroma-comment blockquote {
    padding-left:1%;
}

.pleroma-comment h3 > a {
    text-decoration:none;
}

.pleroma-comment > figure {
    display:flex;
    align-items:center;
}
.pleroma-comment > figure img {
    height:5em;
    margin-right: 1em;
}

/* meta information about post */
.pleroma-comment p, .pleroma-comment .chart {
    margin-left: 5%;
}

/* usernames can either be figcaption or the first paragraph in the element */

.pleroma-comment + p, .pleroma-comment figcaption {
    font-weight:bold;
}
.pleroma-comment p > a, .pleroma-comment figcaption > a {
    font-weight:normal;
    text-decoration:none;
}

.pleroma-comment .card {
    border: 1px solid #ccc;
    border-radius: 8px;
    overflow: hidden;
    margin: 1%;
    margin-left:10%;
/*     adjust this */
    width: 300px;
}
.pleroma-comment .card-title {
    font-size: 1.5em;
    margin: 3%;
}
.pleroma-comment .card-description {
    font-size: 1em;
    margin:5%;
}
.pleroma-comment .card-image {
    width: 100%;
    height: auto;
}
.pleroma-comment .card-link {
    display: block;
    text-align: center;
    padding: 10px;
    text-decoration: none;
    border-radius: 5px;
    margin: 10px;
}

.pleroma-comment  .chart {
/*     border:1px solid red; */
    display: flex;
    flex-direction: column;
}

@media only screen and (min-width:768px){
    .pleroma-comment  .chart {
        width: 45%;
    }
}

.pleroma-comment .bar-container {
    align-items: center;
    margin: 1% 0;
}

.pleroma-comment .bar {
    padding-top: 0.5em;
    padding-bottom:0.5em;
}

.pleroma-comment .bar-text {
    ;
}