Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Poslední příspěvky

Stran: 1 2 3 [4] 5 6 ... 10
31
Software / Re:Skript měnící obnovovací frekvenci monitoru podle (ne)připojení zdroje
« Poslední příspěvek od ramael kdy 14 Dubna 2024, 22:23:55 »
Trvalo mi to trochu déle, protože s časem jsem mezi půlkama. A protože myšlenka triviální systemd jednotky se změnila v testovací horor. Vypadá to, že jsem narazil na bug v systemd. Normálně se soubory hlídají pomocí jednotky path. Avšak zrovna na toto to nefunguje. Jak je vidět v manuálu ty soubory se hlídají pomocí inotify generované jádrem. Jednoduchý test nám ukáže, že jádro posílá události dál:
Kód: [Vybrat]
udevadm monitor -u -p
a odpojíme nebo připojíme napájení. A jak je vidět, jádro to pěkně hlásí kam má. Tak se koukneme na inotify. Buď si něco napíšeme v céčku podle man inotify, nebo si nainstalujeme inotify-tools a použijem z toho jeden příkaz:
Kód: [Vybrat]
inotifywait -m /sys/class/power_supply/AC/online
Yes, inotify pracuje jak má, avšak systemd to ignoruje.
V tomto případě máme dvě čisté možnosti jak dál a nespočet prasáren které by to také zvládli, jen by žrali ze systémových prostředků nějaké to procento procesoru. Takže první možnost je napsat si udev pravidlo, k němu systemd službu a samozřejmě ještě skript. Druhá možnost je o dost jednodušší. Poupravíme Tvou systemd službu a přepíšeme skript. Napíšu rovnou výsledné soubory. Ještě než to nakopíruješ je třeba zastavit a vypnout původní službu:
Kód: [Vybrat]
sudo systemctl stop display_refresh_rate_changer.service
sudo systemctl disable display_refresh_rate_changer.service
sudo systemctl daemon-reload
Pak přepíšeš display_refresh_rate_changer.service :
Kód: [Vybrat]
[Unit]
Description=Change Display Refresh Rate based on AC online

[Service]
# ta pomlčka na začátku cesty ke skriptu je správně!
ExecStart=-/home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh

[Install]
WantedBy=graphical.target

A skript /home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh :
Kód: [Vybrat]
#! /usr/bin/env bash

#Vytvoří nekonečnou smyčku. Dvojtečka v bash vždy produkuje výstup true.
#Protože je to built-in, tak je to lepší než použít externí program (třeba true)
while :
do
        #Všechny výstupy musí být zahozeny. Skripty v systemd nesmí nic produkovat na standardní výstup.
        #Ani nepotřebujeme znát výsledek výstupu. Skript stojí a čeká na event close na souboru.
        #Jakmile event nastane skript pokračuje dál.
        inotifywait -q -e 'close' /sys/class/power_supply/AC/online &> /dev/null

        #Přečte obsah souboru a matematicky ho porovná s jedničkou
        # $(<soubor) je built-in konstrukce bash. Není třeba externí program cat
if [ $(</sys/class/power_supply/AC/online) -eq 1 ]
then
                #Větev pokud je napájení připojeno
                #Následující řádek na ostrý provoz zakomentovat
echo "Jsem online $(date)" >> /var/log/display_refresh_rate_changer
                xrandr --rate 144.00
else
                #Větev kde je napájení vypnuto
                #Následující řádek na ostrý provoz zakomentovat
echo "Nejsem online $(date)" >> /var/log/display_refresh_rate_changer
                xrandr --rate 60.00
fi
done
Nejdřív si ten skript spusť jen tak
Kód: [Vybrat]
cd /home/user/.scripts/display_refresh_rate_changer/
sudo ./display_refresh_rate_changer.sh
A zkoušej jestli to dělá co má. Pokud ne, napiš podrobnosti. Skript ukončíš klávesovou zkratkou ctrl+c
Pokud funguje otestujem systemd službu jestli je to syntakticky dobře napsané:
Kód: [Vybrat]
systemd-analyze verify display_refresh_rate_changer.service
Když to nic nevypíše tak službu zapneme na test:
Kód: [Vybrat]
sudo systemctl start display_refresh_rate_changer.service
Odpoj a připoj napájení. Mělo by to fungovat. A tak si službu aktivuj aby se spouštěla pokaždé po startu:
Kód: [Vybrat]
sudo systemctl enable display_refresh_rate_changer.service

Něco k tomu skriptu. Zapisuje ti do logu /var/log/display_refresh_rate_changer událost. Jak je napsáno, pokud bude vše ok, je lepší dle instrukcí to deaktivovat zakomentováním dvou řádků. Při příštím spuštění systému už to zapisovat nebude. Usoudil jsem, dle prvotního dotazu, že bude jednodušší a hlavně účinnější testovat jestli je připojen zdroj než v jakém statusu je momentálně baterie.

No a já ještě projedu systemd.path u vývojářů a pokud na to ještě nenarazili nahlásím chybu.
32
Software / Re:Odinstalování app z balíčku .deb
« Poslední příspěvek od ikx kdy 12 Dubna 2024, 17:36:46 »
...alebo este raz kliknes na stiahnuti .deb balik,a mas moznost odinstalovat...napise rovnaky balik je uz nainstalovani,pod odinstalovat... ;D ;D ;D
33
Software / Re:Odinstalování app z balíčku .deb
« Poslední příspěvek od Pepa74 kdy 12 Dubna 2024, 13:16:59 »
@Ventero děkuji za odpověď

Máš pravdu, standartní příkaz
Kód: [Vybrat]
sudo apt purge balik.deb funguje. Nevím co jsem před tím dělal špatně, ale jak říkáš, když to nainstaluju jedním způsobem, stejným to jde smazat.
34
Software / Re:Odinstalování app z balíčku .deb
« Poslední příspěvek od Ventero kdy 12 Dubna 2024, 09:54:19 »
Vitej v komunite.
Co to je "nic nenajde"? Vypisy by to chtelo prilozit. Do kodu vlozit prosime (# v editacni nabidce), kdyz nasledujici vyklad nepomuze.

Pokud kamkoliv stahnes a nainstalujes balik .deb (mimochodem, jak jsi presne instaloval nevime), tak ho normalne odinstalujes, jak pises, pomoci
Kód: [Vybrat]
sudo apt purge balik.debpokud jsi ho takto instaloval a pak ten balik normalne smazes nebo si ho nechas v zaloze.
Pokud jsi instaloval pomoci dpkg, tak nejspise odinstalujes take pomoci dpkg. Nevim, zda je to kombinovatelne - jeste me to nenapadlo zkouset pouzit dve ruzne metody na jeden balik, ale tusim, ze apt ma svoje zaznamy o balicich a pokud instalujes pomoci dpkg, tak o tom proste apt nevi a je treba pouzit opet dpkg s prislusnym parametrem - ten najdes pomoci
Kód: [Vybrat]
man dpkg
35
Software / Odinstalování app z balíčku .deb
« Poslední příspěvek od Pepa74 kdy 12 Dubna 2024, 07:19:59 »
Ahoj,

měl bych otázku jak smazat aplikace, které instaluju v rámci balíčku .deb?

Jsem linuxový začáteční, tak mě prosím opravte, kdybych se vyjádřil nepřesně.

Používám verzi Ubuntu 23.10

Aplikaci mám staženou ve složce stahuj. Přes příkaz v konzoli ji nainstaluju.

"Na ploše" ji vidím. Ale když jdu do App Centra, nikde ji nemužu najít. Navíc app z repozitáře mají v app centru možnost odinstalování.

Pokud použiju terminál a příkaz:
Kód: [Vybrat]
sudo apt-get purge nazev_aplikace nic mi to nenajde, pokud napíšu
Kód: [Vybrat]
sudo apt-get purge a cestu ke stažené aplikaci ve složce stahuj. Najde mi ji. Ale co když po nainstalování instalační balíček .deb smažu? Jak potom odinstaluju app?

Díky za vysvětlení




36
Software / Re:Snap Store
« Poslední příspěvek od Anakunda kdy 11 Dubna 2024, 19:15:16 »
Už se to vyřešilo, bylo potřeba udělat refresh snap přes příkazový řádek.
37
Software / Re:Snap Store
« Poslední příspěvek od Michal "Tylnesh" Kohútek kdy 11 Dubna 2024, 14:11:32 »
To sa mi akosi nezda - ta verzia s ikonkou Snapu ( zelenomodra s origami vtacikom) bude IMHO len graficke rozhranie nad Snapom, Ubuntu Software zase je Gnome Software s pridanou integraciou na Snapcraft.io. Podla mna si si nejakym sposobom doinstaloval Snap Store rucne (paradoxne sa to da doinstalovat cez Snap :) ). Chudobnejsia ponuka je tam z toho dovodu, ze Ubuntu Software obsahuje .deb aj .snap, Snap Store len .snap.

Cele sa to este trochu komplikuje tym, ze existuje aj tretia alternativa - Ubuntu App Centre, co je nova aplikacia napisana vo Flutteri a ktora je defaultnym GUI frontendom nad aptom i snapom od 23.10.

Teraz mi napadla jedna moznost. Ta starsia instalacia bola cista, alebo si upgradoval zo starsej verzie?
38
Software / Re:Snap Store
« Poslední příspěvek od Michal "Tylnesh" Kohútek kdy 11 Dubna 2024, 14:03:28 »
...to už bude 24.05...šak... :o :o :o

Sorry, myslel som ze je este Marec... ten cas obcas tak leti, ze mam problem uvedomit si, ktory mesiac je :D Verzia bude samozrejme 24.04 a vychadza 25.4.
39
Software / Re:Skript měnící obnovovací frekvenci monitoru podle (ne)připojení zdroje
« Poslední příspěvek od 0n1ck kdy 11 Dubna 2024, 08:42:24 »
Pokud je ten script zde kompletně představen, tak v něm chybí shebang
Kód: [Vybrat]
#! /usr/bin/env bash
status=$(cat /sys/class/power_supply/BAT0/status)
if [ "$status" = "Discharging" ]; then
     xrandr --rate 60.00
else
    xrandr --rate 144.00
fi
Dále se mi moc nezdá řádek v service souboru:
Kód: [Vybrat]
ExecStart=/home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh
Zde si myslím bude také chyba v adrese. Doopravdy ti příkaz echo $USER nebo id -un vypíše user? Doopravdy máš ten script takto zanořený? Má ten script x právo? Copak vypíše toto?:
Kód: [Vybrat]
ls -l /home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh
Ještě bych chtěl podotknout, že ten script se ve funkčním případě spustí jen jednou při startu systému. To znamená, že to nebude hlídat stav baterie...


shebang ve skriptu mám, asi jsem jej nějakým nedopatřením neoznačil při kopírování do fóra, konkrétně takto
Kód: [Vybrat]
#!/bin/bash

Ano skutečně
Kód: [Vybrat]
echo $USER vypíše user, jsem tak pojmenovaný

Kód: [Vybrat]
user@debian:~$ ls -l /home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh
-rwxr-xr-x 1 root root 1078 10. dub 10.41 /home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh

Právo x by mělo mít jestli je x execute

To, že skript bude fungovat jen při startu jsem netušil? Lze to nějak poupravit aby to hlídal stále?
40
Software / Re:Skript měnící obnovovací frekvenci monitoru podle (ne)připojení zdroje
« Poslední příspěvek od ramael kdy 10 Dubna 2024, 21:39:09 »
Ano je to tak. Shebang je velice důležitý nejen v bash. Vždy musí být udána absolutní cesta k obslužnému programu. Díky programu env je to jednodušší. Protože si root může instalovat co chce, kam chce atd., nebo si vytvořit svůj systém. Program env za nás řeší kde to nalézt. Název obslužného programu je pak argument programu env.
Tohle:
Kód: [Vybrat]
#! /bin/bash
bude většinou fungovat jako toto:
Kód: [Vybrat]
#! /usr/bin/bash
stejně jako "čistě" napsané:
Kód: [Vybrat]
#! /usr/bin/env bash
Může se stát, že budou různé verze interpreta a díky tomu shebangu si to tvůrce ošéfuje.
Proto není v linuxu důležité jakou příponu má soubor. Klidně můžeš napsat bash script a pojmenovat ho třeba vypis.muj A bude stejně fungovat jako by se jmenoval vypis.sh nebo jen vypis. A to díky shebangu.
Příklad:
Vytvoříme si soubor s názvem vypis:
Kód: [Vybrat]
>vypis
Vložíme do něho toto:
Kód: [Vybrat]
#! /usr/bin/env bash
echo "******** jdu vypsat složku $( pwd) **********"
ls -l
Dáme mu právo spouštění:
Kód: [Vybrat]
chmod +x vypis
a vytvoříme dvě kopie:
Kód: [Vybrat]
cp vypis vypis.sh
cp vypis vypis.muj
a teď si je postupně spustíme:
Kód: [Vybrat]
./vypis
./vypis.sh
./vypis.muj
Výstup bude pokaždé stejný. Klidně tomu dej pythoní příponu vypis.py ale díky shebangu se to spustí tak jak má, a výstup bude opět stejný.
Samozřejmě to platí nejen pro bash. Pokud vytvoříš script v jiném scriptovacím jazyce (python, perl, lua, ..) zadáš to tam a hotovo. Můžeš i odlišit například mezi verzemi pythonu:
Kód: [Vybrat]
#! /usr/bin/env python2
nebo
Kód: [Vybrat]
#! /usr/bin/env python3
a opět nebude záležet na příponě.
Stran: 1 2 3 [4] 5 6 ... 10
Provoz zaštiťuje spolek OpenAlt.