https://github.com/leehblue/texpander
#Texpander is a simple text expander for #Linux. It is sort of like #Autokey, except it works off of text files that you put in your ~/.texpander directory. Texpander is a #bash script that uses #xclip, #xdotool, and #zenity to let you type an abbreviation for something and it expands to whatever you have in the matching text file.
GitHub - leehblue/texpander: Text expander for linux

Text expander for linux. Contribute to leehblue/texpander development by creating an account on GitHub.

GitHub

Vieną ramų kažkurios dienos rytą, gurkšnodamas kavą ir be tikslo naršydamas Mastodon tinkle, užtikau diskusiją. Žmonės dalinosi savo produktyvumo patarimais, ir viena tema patraukė mano dėmesį: dažnai naudojamų teksto fragmentų valdymas. Daug kas skundėsi, kad nuolat rašo tuos pačius sakinius ar frazes – ar tai būtų mandagūs el. laiškų užbaigimo žodžiai, ar dažnai naudojamos kodo eilutės.

Staiga supratau, kad ir pats susidūriu su šia problema. Kiek kartų per dieną rašau “Pagarbiai“ arba “Su geriausiais linkėjimais“ el. laiškuose? O kiek kartų įvedu savo kontaktinius duomenis ar tam tikras SQL užklausas? Per daug, kad skaičiuočiau.

Būdamas Linux entuziastas ir mėgėjas automatizuoti viską, kas juda, nusprendžiau: reikia tai išspręsti. Ir taip gimė mano mažas, bet galingas įrankis – pasirinktinio teksto įterpimo scenarijus.

Problemos esmė

Prieš nerdamas į techninę dalį, apibrėžkime problemą:

  • Dažnai naudojame tuos pačius teksto fragmentus.
  • Šių fragmentų perrašinėjimas atima laiką ir kelia įtampą riešo sąnariui.
  • Kartais apsirenkame ar pamirštame, ką tiksliai rašėme anksčiau.
  • Mums reikia įrankio, kuris leistų:

    • Saugoti dažnai naudojamus tekstus.
    • Greitai pasiekti ir įterpti šiuos tekstus vienu klavišų paspaudimu.
    • Lanksčiai pasirinkti iš kelių variantų pagal situaciją.

    Sprendimas: Bash magija

    Čia į pagalbą ateina mano sukurtas Bash scenarijus. Jo idėja paprasta:

  • Sukuriame katalogą su įvairiais tekstiniais failais.
  • Kai mums reikia teksto, paspaudžiame klavišų kombinaciją.
  • Pasirodo langas, kuriame galime pasirinkti norimą tekstą.
  • Pasirinktas tekstas automatiškai nukopijuojamas į iškarpinę.
  • Įklijuojame tekstą ten, kur reikia, naudodami Ctrl+V.
  • Įsivaizduokite: jokio daugiau kartojimo, jokių klaidų ieškant senų laiškų. Tiesiog pasirenkate ir įklijuojate.

    Kaip pradėti?

    Dar aptarkime, kokių papildomų paketų reikia (beveik visi ir taip jau yra įdiegti), kad viskas veiktų sklandžiai, ir kaip juos įdiegti įvairiose Linux distribucijose.

  • xclip – Įrankis darbui su X11 iškarpine
    • Paskirtis: Leidžia manipuliuoti X Window sistemos iškarpine iš komandinės eilutės. Mūsų atveju naudojamas tekstui įdėti į iškarpinę, kad vėliau galėtumėte jį įklijuoti bet kurioje programoje.
    • Funkcijos:
      • -selection clipboard: Nurodo naudoti pagrindinę iškarpinę (tą, kurią naudoja Ctrl+C ir Ctrl+V).
      • Gali ir nuskaityti tekstą iš iškarpinės, ir įrašyti į ją.
  • zenity – GTK dialogo įrankis
    • Paskirtis: Leidžia rodyti grafinius dialogo langus ir pranešimus iš komandinės eilutės ar scenarijų. Tai daro jūsų scenarijus interaktyvesniu ir vartotojui draugiškesniu.
    • Funkcijos:
      • --list: Rodo sąrašo pasirinkimo dialogo langą.
      • --info, --error: Rodo informacinius ar klaidos pranešimus.
      • --text-info: Leidžia peržiūrėti ir redaguoti tekstą grafiniame lange.
      • Daug kitų funkcijų: kalendoriai, spalvų pasirinkimai, progreso juostos ir t.t.
  • find – Failų paieškos įrankis
    • Paskirtis: Naudojamas failams ir katalogams ieškoti pagal įvairius kriterijus. Mūsų scenarijuje jis naudojamas surasti visus .txt failus nurodytame kataloge.
    • Funkcijos:
      • -maxdepth 1: Ieško tik nurodytame kataloge, neikia gilyn į pakatalogius.
      • -type f: Ieško tik failų (ne katalogų).
      • -name "*.txt": Ieško failų, kurių pavadinimai baigiasi .txt.
  • cat – Failo turinio rodymo įrankis
    • Paskirtis: Skaito failo turinį ir išveda jį į standartinę išvestį. Mūsų atveju naudojamas nuskaityti tekstui iš pasirinkto failo.
    • Funkcijos: Paprastas įrankis, kuris tiesiog parodo failo turinį.
  • basename – Failo pavadinimo ištraukimo įrankis
    • Paskirtis: Grąžina failo pavadinimą be kelio. Mūsų scenarijuje naudojamas išgauti failo pavadinimą be .txt plėtinio, kad būtų gražiau rodoma pasirinkimo sąraše.
    • Funkcijos:
      • basename "$file" .txt: Grąžina failo pavadinimą be kelio ir be .txt plėtinio.
  • Dabar pažiūrėkime, kaip įdiegti šiuos paketus įvairiose Linux distribucijose:

    Debian/Ubuntu (apt paketų tvarkytuvas)

    sudo apt updatesudo apt install xclip zenity findutils coreutils
    • Pastaba: findutils ir coreutils paprastai jau būna įdiegti, bet įtraukiau juos dėl pilnumo.

    Arch Linux (pacman paketų tvarkytuvas)

    sudo pacman -Sysudo pacman -S xclip zenity findutils coreutils
    • Arch paprastai turi naujausias paketų versijas.

    Fedora (dnf paketų tvarkytuvas)

    sudo dnf updatesudo dnf install xclip zenity findutils coreutils
    • Fedora orientuota į naujausias technologijas ir griežtą laikymąsi atvirojo kodo principų.

    openSUSE (zypper paketų tvarkytuvas)

    sudo zypper refreshsudo zypper install xclip zenity findutils coreutils
    • openSUSE žinomas dėl savo stabilumo ir YaST konfigūravimo įrankio.

    Papildomos pastabos:

  • KDE priklausomybės:
    • Jei naudojate KDE Plasma darbalaukio aplinką (kaip aš), dauguma reikalingų bibliotekų jau bus įdiegtos, nes zenity naudoja GTK, o KDE naudoja Qt. Tačiau zenity vis tiek veiks puikiai.
  • xclip alternatyvos:
    • xsel: Kitas populiarus įrankis darbui su X11 iškarpine. Kai kurie jį mėgsta labiau.
      • Debian/Ubuntu: sudo apt install xsel
      • Arch: sudo pacman -S xsel
      • Fedora: sudo dnf install xsel
      • openSUSE: sudo zypper install xsel
  • zenity alternatyvos KDE aplinkoje:
    • kdialog: KDE analogas zenity, naudojantis Qt bibliotekas.
      • Debian/Ubuntu: sudo apt install kde-baseapps-bin arba kdialog
      • Arch: sudo pacman -S kde-baseapps
      • Fedora: sudo dnf install kde-baseapps
      • openSUSE: Turėtų būti jau įdiegta su KDE.
    • Norėdami naudoti kdialog, tiesiog pakeiskite zenity komandas į atitinkamas kdialog komandas scenarijuje.
  • Kiti naudingi paketai:
    • xdotool: Leidžia simuliuoti klaviatūros ir pelės įvestį. Galėtumėte jį naudoti, jei norėtumėte, kad scenarijus ne tik nukopijuotų tekstą, bet ir automatiškai įklijuotų jį.
    • yad: Dar viena zenity alternatyva su daugiau funkcijų.
  • Versijų skirtumai:
    • Dauguma šių įrankių yra labai stabili ir ilgai egzistuojanti programinė įranga, todėl net jei skirtingose distribucijose bus šiek tiek skirtingos versijos, jūsų scenarijus turėtų veikti vienodai gerai visur.
  • Jei trūksta paketų:
    • Retai, bet gali pasitaikyti, kad kai kuriose distribucijose (ypač minimalistinėse) šių paketų gali nebūti standartinėse saugyklose. Tokiu atveju galite:
      • Ieškoti alternatyvių saugyklų (pvz., Arch Linux atveju – AUR).
      • Kompiliuoti iš išeitinio kodo (paskutinė išeitis).
  • Įdiegę šiuos paketus bet kurioje iš šių populiarių Linux distribucijų, turėsite visus reikalingus įrankius, kad jūsų pasirinktinio teksto įterpimo sprendimas veiktų sklandžiai ir efektyviai. Kiekvienas įrankis atlieka savo specifinę funkciją, ir kartu jie sukuria patogią ir interaktyvią vartotojo patirtį.

    Taigi, pradedam

    Sukurkite tekstų katalogą

    Pirmiausia, sukurkite katalogą savo dažnai naudojamiems tekstams:

    mkdir ~/git/custom_texts

    Tada sukurkite keletą .txt failų šiame kataloge. Pavyzdžiui:
    ~/git/custom_texts/sveikinimas.txt su tekstu "Labas, kaip sekasi?"
    ~/git/
    custom_texts/atsisveikinimas.txt su tekstu "Viso gero, gražios dienos!"
    ~/git/
    custom_texts/padeka.txt su tekstu "Ačiū už pagalbą!"

    Sukurkite Bash scenarijų, pavadinkime jį select_and_paste.sh:

    #!/bin/bash# Katalogas su tekstiniais failaisTEXT_DIR="$HOME/git/custom_texts"# Patikrinti, ar katalogas egzistuojaif [ ! -d "$TEXT_DIR" ]; then zenity --error --title="Klaida" --text="Katalogas $TEXT_DIR nerastas." exit 1fi# Gauti visų .txt failų sąrašą katalogetext_files=($(find "$TEXT_DIR" -maxdepth 1 -type f -name "*.txt"))# Patikrinti, ar yra .txt failųif [ ${#text_files[@]} -eq 0 ]; then zenity --error --title="Klaida" --text="Kataloge $TEXT_DIR nerasta .txt failų." exit 1fi# Sukurti masyvą su failų pavadinimais be kelio ir .txt plėtiniooptions=()for file in "${text_files[@]}"; do filename=$(basename "$file" .txt) options+=("$filename")done# Rodyti pasirinkimo dialogąselected=$(zenity --list --title="Pasirinkite tekstą" --column="Tekstai" "${options[@]}" --width=300 --height=450)# Jei vartotojas nieko nepasirinko arba uždarė langąif [ -z "$selected" ]; then exit 0fi# Pilnas kelias iki pasirinkto failoselected_file="$TEXT_DIR/$selected.txt"# Nuskaityti tekstą iš failotext=$(cat "$selected_file")# Įdėti tekstą į iškarpinęecho -n "$text" | xclip -selection clipboard# Rodyti patvirtinimo pranešimązenity --info --title="Sėkmė" --text="Tekstas iš failo '$selected' sėkmingai įdėtas į iškarpinę."

    Padarykite scenarijų vykdomu:

    chmod +x ~/scripts/select_and_paste.sh

    Nustatykite sparčiojo klavišo veiksmą

    Šis žingsnis priklausys nuo jūsų darbalaukio aplinkos. Aš naudoju KDE, bet procesas panašus GNOME, XFCE ar kitose aplinkose.

    KDE vartotojams:

  • Eikite į Nustatymai > Spartieji klavišai ir gestai > Pasirinktiniai spartieji klavišai.
  • Pasirinkite “Edit“ > “New“ > “Global Shortcut“ > “Command/URL“.
  • Nustatykite:
    • Pavadinimas: “Pasirinkti ir įterpti tekstą“
    • Trigger: Ctrl+Shift+Y (ar kita jūsų pasirinkta kombinacija)
    • Action: /home/JUSU_VARDAS/scripts/select_and_paste.sh (pas mane ~/git/select_and_paste.sh)
  • Spauskite “Apply“.
  • GNOME vartotojams: eikite į Nustatymai > Klaviatūra > Spartieji klavišai ir atlikite panašius veiksmus.

    Kaip tai veikia?

    Kai paspaudžiate Ctrl+Shift+Y (ar kitą pasirinktą kombinaciją), įvyksta tokia seka:

  • Paleidžiamas jūsų Bash scenarijus.
  • Scenarijus ieško .txt failų jūsų ~/git/custom_texts kataloge.
  • Suradęs failus, jis sukuria sąrašą su jų pavadinimais ir pirmosiomis eilutėmis.
  • Atsidaro gražus pasirinkimo langas, kuriame matote savo tekstų pavadinimus ir jų peržiūras.
  • Pasirenkate norimą tekstą ir spaudžiate OK.
  • Pasirinktas tekstas nuskaitomas iš failo ir įdedamas į iškarpinę.
  • Jūs matote patvirtinimo pranešimą, kad viskas pavyko.
  • Dabar einate į bet kurią programą – teksto redaktorių, el. paštą, pokalbių programą – ir spaudžiate Ctrl+V. Magiška! Jūsų pasirinktas tekstas įklijuotas.
  • Kodėl tai šaunu?

  • Taupomas laikas: Nebereikia iš naujo rašyti tų pačių frazių.
  • Mažiau klaidų: Tekstai visada tikslūs, nes jie iš failo.
  • Organizuotumas: Visi jūsų dažni tekstai vienoje vietoje.
  • Lankstumas: Galite turėti dešimtis ar net šimtus tekstų, lengvai pasirenkamų.
  • Pritaikomumas: Lengvai galite pridėti, redaguoti ar ištrinti tekstus.
  • Veikia bet kurioje programoje, bet kurioje Linux aplinkoje.
  • Galimos plėtotės

    Žinoma, kaip ir su bet kuriuo projektu, idėjų plėtotei netrūksta:

    • Automatinis teksto formatavimas pagal kontekstą.
    • Saugojimas debesyje sinchronizavimui tarp įrenginių.
    • GUI programa tekstams valdyti.

      Papildomi patarimai:
      Galite pridėti daugiau informacijos į pasirinkimo langą, pvz., rodyti teksto pradžią:

    options=()for file in "${text_files[@]}"; do filename=$(basename "$file" .txt) preview=$(head -n 1 "$file") options+=("$filename" "$preview")doneselected=$(zenity --list --title="Pasirinkite tekstą" --column="Pavadinimas" --column="Peržiūra" "${options[@]}" --width=500 --height=450)

    Galite pridėti galimybę redaguoti tekstą prieš įdėjimą:

    text=$(zenity --text-info --title="Redaguoti tekstą" --filename="$selected_file" --editable)

    Jei turite daug tekstų, galite juos organizuoti į pakatalogius pagal kategorijas (pvz., sveikinimas/, verslas/, asmeniniai/) ir modifikuoti scenarijų, kad jis ieškotų rekursyviai.
    Galite pridėti mygtuką “Pridėti naują tekstą“, kuris atvertų tekstinį redaktorių naujo failo sukūrimui.

    Išvada

    Tai, kas prasidėjo kaip atsitiktinis pastebėjimas Mastodon tinkle, virto praktiniu įrankiu, kuris dabar taupo man valandas kiekvieną savaitę. Linux grožis ir yra tas, kad su keliais eilučių Bash kodu galite išspręsti realias, kasdienes problemas.

    Nesvarbu, ar esate profesionalus programuotojas, ar tik mėgėjas – tokie maži automatizavimo projektai gali drastiškai pagerinti jūsų darbo eigą. Tikiuosi, kad šis įrankis įkvėps jus ne tik jį naudoti, bet ir kurti savo sprendimus. Juk Linux pasaulyje, jei galite tai įsivaizduoti, beveik visada galite tai ir padaryti.

    O dabar, jei man reikia baigti šį įrašą… Ctrl+Shift+Y, pasirinkti “blog_ending.txt“, Ctrl+V:

    Iki kito karto, kai vėl kalbėsime apie tai, kaip paversti Linux ne tik operacine sistema, bet ir asmeniniu asistentu!

    https://funkcijos.wordpress.com/2024/06/02/pasirinktinio-teksto-iterpimo-irankis-tik-vienas-shortcut/

    #bash #copy #paste #xclip #zenity

    Pasirinktinio teksto įterpimo įrankis. Tik vienas shortcut!

    Vieną ramų kažkurios dienos rytą, gurkšnodamas kavą ir be tikslo naršydamas Mastodon tinkle, užtikau diskusiją. Žmonės dalinosi savo produktyvumo patarimais, ir viena tema patraukė mano dėmesį: daž…

    bash_dienos

    Після оновлення до Plasma 6 я виявив що тепер основною є Wayland сесія тому я вирішив ще раз спробувати використовувати його. Раніше я не один раз намагався його використовувати, але більше ніж день не витримував. Час від часу запускав цю сесію перевіряючи чи нічого не змінилось. І ось сьогодні хочу розказати про проблеми які виникли і їхнє вирішення.

    • Додатки на базі Electron:

    У додатках які використовують Electron для графічного інтерфейсу курсор не змінював форму при наведенні на різні елементи такі як кнопки чи поля вводу. Для виправлення цієї несправності потрібно всього лиш додати два параметри --enable-features=UseOzonePlatform і --ozone-platform=wayland до команди виконання, але додавати їх до кожної програми не зручно, тому ми можемо створити конфігураційний файл з цими параметрами. Для кожної версії Electron потрібен свій файл, але можна зробити один загальний і для кожної версії зробити символьне посилання. Файл повинен знаходитись у каталозі ~/.config і мати назву electron<ver>-flags.conf. До прикладу створимо файл ~/.config/electron25-flags.conf з вмістом

    --enable-features=UseOzonePlatform --ozone-platform=wayland

    Для інших версій створимо посилання за допомоги команди ln -s electron25-flags.conf electron29-flags.conf.

    • Команда xkill:

    Команда xkill, як зрозуміло з назви, розрахована на роботу з X сервером тому в Wayland вона не працює. Заміни їй у вигляді іншої команди я не знайшов, але у KWin є схожий вбудований функціонал який успішно працює в Wayland. Мене це повністю влаштовує, бо й xkill я використовував у вигляді комбінації клавіш. Налаштувати сполучення клавіш можна у Системні налаштування > Клавіатура > Скорочення > KWin > Вбити вікно.

    Одного разу я випадково вбив таким способом стільницю. Все працювало, але зникли значки, віджети й фон.

    • Команда xclip

    Команда xclip призначення для роботи з буфером обміну, але знову ж таки тільки в середовищі xorg. Ця команда має деякі параметри без яких вона не працює, тому для зручності створив два псевдоніми xcopy і xpaste для зручності. Для цього ж функціоналу у Wayland сесії є пакунок wl-clipboard у якому є два бінарники wl-copy і wl-paste які служать заміною моїх скорочень.

    #wayland #session #electron #xkill #xclip #несправності #вирішення #рішення #x11 #xorg

    Social.Net.Ua

    How To Use Pbcopy And Pbpaste Commands On Linux - OSTechNix

    Discover how to replicate macOS pbcopy and pbpaste commands functionality in Linux using Xclip and Xsel programs.

    OSTechNix

    This little #zsh script gets abstract from #PubMed and copies to the clipboard. Useful if you need to update #BibTex entries, e.g. in #JabRef. Requires #curl and #xclip, supports PMID, PMC and DOI identifiers.

    https://codeberg.org/AdamWysokinski/scripts/src/branch/main/pubmed2abstract.sh

    scripts

    Various small scripts

    Codeberg.org

    Bild aus der Zwischenablage in Datei speichern

    Was ist zu tun, wenn man vergisst, ein Bild aus der Zwischenablage in eine Datei zu speichern?

    #Zwischenablage #Bild #Image #Terminal #xclip #wl_paste

    https://gnulinux.ch/bild-aus-der-zwischenablage-in-datei-speichern

    Bild aus der Zwischenablage in Datei speichern

    Was ist zu tun, wenn man vergisst, ein Bild aus der Zwischenablage in eine Datei zu speichern?

    GNU/Linux.ch
    Access Clipboard Contents Using Xclip and Xsel In Linux - OSTechNix

    In this guide, we are going to learn how to manipulate and access Clipboard contents using Xclip and Xsel programs in Linux.

    OSTechNix
    Access Clipboard Contents Using Xclip and Xsel In Linux - OSTechNix

    In this guide, we are going to learn how to manipulate and access Clipboard contents using Xclip and Xsel programs in Linux.

    OSTechNix
    Copy File Contents Into Clipboard Without Displaying Them - OSTechNix

    This guide explains how to copy file contents into clipboard in Linux using Xclip and Xsel, without displaying the contents of the files.