zMoooooritz / nachrichten

Stay informed without leaving your command line
MIT License
16 stars 0 forks source link

[feature request] Custom shortcuts #62

Closed R-a-l-f closed 9 months ago

R-a-l-f commented 9 months ago

Hi,

nachrichten ist ein schönes Programm. Heute habe ich es im AUR entdeckt.

Es wäre schön, wenn benutzerdefinierte shortcuts hinzugefügt werden können, mit denen man nachrichten beenden und ein anderes Programm automatisch starten könnte.

Im Moment behelfe ich mir mit einem Alias.

alias nachrichten='nachrichten; nextinspace'

Gruß Ralf

zMoooooritz commented 9 months ago

Hey, das freut mich sehr zu hören.

Bezüglich des features bin ich zwiegespalten. Sicher wäre das nett beliebige Anwendungen zu starten. Da hier aber kein Informationsfluss von dieser Anwendung zur aufzurufenden Anwendung stattfindet, wäre das dann im Prinzip nur ein launcher.

Ich denke genau so wie du das machst, ist es eine saubere Lösung.

Würde bzpw. noch eine dritte Nachrichten-Anwendung hinzukommen, würde sich erneut die Frage stellen, in welcher Anwendung das wie realisiert werden müsste.

Deshalb würde ich erstmal davon absehen diese Feature zu implementieren, lasse aber den Issue offen.

R-a-l-f commented 9 months ago

Hi,

das Thema hat sich erledigt, denn vermutlich ist man mit einem Script flexibler. Im Schnellverfahren habe ich etwas sehr simples ausprobiert, um zwischen verschiedenen Neuigkeiten hin und her springen zu können.

• rocketmouse@archlinux ~ 
$ .ls -l /usr/local/bin/neues
-rwxr-xr-x 1 root root 926 Sun Jan 14 15:33:51 2024 /usr/local/bin/neues
• rocketmouse@archlinux ~ 
$ cat /usr/local/bin/neues
#!/bin/bash

aktuelle_nachrichten()
{
  clear
  printf "Nachrichten "
  sleep 0.5
  nachrichten
}

nextinspace_news()
{
  clear
  case $1 in
    --verbose) echo "Next in space mit zusätzlichen Details";;
    *)         echo "Next in space";;
  esac
  echo
  nextinspace $1
  printf "\nDrücke eine Taste, um fortzufahren. "
  read -n1 key
}

arch_news()
{
  xdg-open https://archlinux.org/news/ &
}

quit()
{
echo
exit 0
}

if [ "$(id -u)" = "0" ]; then
  printf "\nNicht mit Root-Rechten ausführen!\n"
  exit 1
fi

while true
do 
  clear
  echo
  echo "neues - Neuigkeiten"
  echo
  echo "[1] Nachrichten"
  echo "[2] Next in space"
  echo "[3] Next in space mit zusätzlichen Details"
  echo "[4] Arch Linux News Archives"
  echo
  echo "[q]uit"
  echo

  read -n1 key

  case $key in
    1) aktuelle_nachrichten;;
    2) nextinspace_news;;
    3) nextinspace_news --verbose;;
    4) arch_news;;
    q) quit;;
  esac
done

Gruß Ralf

zMoooooritz commented 9 months ago

Ja, für die Auswahl gibt es von Bash nativ auch noch select, damit könnte man das evtl. noch etwas vereinfachen Aber genau, die Kombination macht auf dieser Ebene deutlich mehr Sinn, als das in die Anwendung zu integrieren.

R-a-l-f commented 9 months ago

Hi,

das Menü von select ist nicht nach meinem Geschmack.

• rocketmouse@archlinux ~ 
$ select key in foo bar hello world quit; do case $key in *) echo $key;; esac; done
1) foo
2) bar
3) hello
4) world
5) quit
#? 3
hello
#? 4
world
#? ^C

Vielleicht kann außer mir noch jemand etwas mit meinem überarbeiteten Nachrichten-Wrapper-Template anfangen. Ich weiß nicht ob man xdg-open überhaupt von command line aus nutzen will, dass Template überprüft nun aber zumindest noch mit xhost, ob eine GUI überhaupt genutzt werden kann.

• rocketmouse@archlinux ~ 
$ cat /usr/local/bin/neues
#!/bin/bash

path=/usr/local/bin/neues
version=2024-01-14.1-Ralf

aktuelle_nachrichten()
{
  clear
  printf "Nachrichten "
  sleep 0.5
  nachrichten
}

nextinspace_news()
{
  clear
  case $1 in
    --verbose) echo "Next in space mit zusätzlichen Details";;
    *)         echo "Next in space";;
  esac
  echo
  nextinspace $1
  printf "\nDrücke eine Taste, um fortzufahren. "
  read -n1 key
}

arch_news_w3m()
{
  w3m https://archlinux.org/news/
}

arch_news_xdg()
{
  xhost >/dev/null 2>&1
  status=$?
  case $status in
    0) xdg-open https://archlinux.org/news/ &;;
    *) w3m https://archlinux.org/news/;;
  esac
}

quit()
{
  printf "\n\n"
  exit 0
}

if [ "$(id -u)" = "0" ]; then
  printf "\nNicht mit Root-Rechten ausführen!\n\n"
  exit 1
fi

while true
do 
  clear
  echo
  echo "neues - Neuigkeiten"
  echo
  echo "[1] Nachrichten"
  echo "[2] Next in space"
  echo "[3] Next in space mit zusätzlichen Details"
  echo "[4] Arch Linux News Archives CLI"
  echo "[5] Arch Linux News Archives GUI"
  echo
  echo "[q]uit"
  echo

  read -n1 key

  case $key in
    1) aktuelle_nachrichten;;
    2) nextinspace_news;;
    3) nextinspace_news --verbose;;
    4) arch_news_w3m;;
    5) arch_news_xdg;;
    q) quit;;
  esac
done

Gruß Ralf