nqrduck / nqrduck

MIT License
1 stars 1 forks source link

"Mobile Mode" #54

Open jupfi opened 3 weeks ago

jupfi commented 3 weeks ago

For a portable version that runs on a raspberry the UI needs to be optimized.

The logos/icons need to be scaled, the font size adapted. The ui needs to be started with certain arguments. It would also make sense to open up a virtual keyboard when an input field is opened when the UI is in mobile mode. The target resolution would probably be something like 640x480, because this is often used for Raspberry Screens (but it should work for most 'low-res' modes.

kumitterer commented 3 weeks ago

For reference, this is the "best-looking" screenshot I got on a RPi 4 with an 800x480px screen.

output

This is somewhat usable, but especially the input fields in the spectrometer settings are problematic.

Launch command:

QT_AUTO_SCREEN_SET_FACTOR=1 nqrduck

(Sometimes it renders correctly without the environment variable, but if it does, I still can't interact.)

This is the .config/NQRduck/NQRduck.ini I used:

[General]
font=DejaVu Sans Mono
font_size=6
module_order=nqrduck-measurement, nqrduck-spectrometer
style_factory=Fusion

On top of that, I hid the task bar in .config/wf-panel-pi.ini by adding the following lines to the [panel] section:

[panel]
autohide=true
autohide_duration=500

And I removed the title bar in .config/wayfire.ini:

[decoration]
ignore_views = title contains "NQRduck"

[window-rules]
nqrduck = on created if title contains "NQRduck" then maximize
jupfi commented 3 weeks ago

Thank you very much! The large icons are definitely a problem, and because screen space is quite precious on such a small screen it's probably best to disable e.g. the question marks in"mobile mode".

jupfi commented 3 weeks ago

There should probably be an install script for raspberries that does the config stuff in wf-paniel.ini and wayfire.ini.

kumitterer commented 2 weeks ago

Something like this?

#!/bin/bash

# Function to display help message
show_help() {
    echo "Usage: $0 [venv_path]"
    echo "  venv_path: The path where the virtual environment will be created"
    echo "Example: $0 my_venv"
}

# Check for help option or no arguments
if [[ "$1" == "-h" ]] || [[ $# -eq 0 ]]; then
    show_help
    exit 0
fi

# Check for the correct number of arguments
if [[ $# -ne 1 ]]; then
    echo "Error: Invalid number of arguments."
    show_help
    exit 1
fi

VENV_DIR="$1"

# Use apt to install dependencies
echo "Installing required system packages. You may be asked to provide your password."
sudo apt update
sudo apt install python3-pyqt6

# Check if the virtual environment directory already exists
if [ ! -d "$VENV_DIR" ]; then
    # Create a virtual environment
    python3 -m venv --system-site-packages "$VENV_DIR"
else
    echo "Virtual environment '$VENV_DIR' already exists. Upgrading."
    python3 -m venv --upgrade --system-site-packages "$VENV_DIR"
fi

echo "Virtual environment '$VENV_DIR' created."

# Install the package into the virtual environment
source "$VENV_DIR/bin/activate"
pip install "nqrduck[base] @ git+https://github.com/nqrduck/nqrduck"
echo "nqrduck installed in virtual environment '$VENV_DIR'."
deactivate

# Set up NQRduck config file
mkdir -p ~/.config/NQRduck

{
echo "[General]"
echo "font=DejaVu Sans Mono"
echo "font_size=6"
echo "module_order=nqrduck-measurement, nqrduck-spectrometer"
echo "style_factory=Fusion"
} > ~/.config/NQRduck/NQRduck.conf

echo "NQRduck configuration written."

# Set up Wayfire config

{
echo "autohide=true"
echo "autohide_duration=500"
} >> ~/.config/wf-panel-pi.ini

{
echo ""
echo "[decoration]"
echo "ignore_views = title contains "NQRduck""
echo ""
echo "[window-rules]"
echo 'nqrduck = on created if title contains "NQRduck" then maximize'
} >> ~/.config/wayfire.ini

echo "Wayfire configuration modified."

echo "Setup complete."
jupfi commented 2 weeks ago

I thank you for your motivation my duck. Mobile mode seems to be close to your heart :D

kumitterer commented 2 weeks ago

Quack. :duck:

kumitterer commented 1 week ago

Just FYI, this:

output

(And connecting the LimeSDR to the RPi causes serious power supply issues.)