diff --git a/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml index 85d9c1bac..5b00b4590 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml @@ -100,5 +100,16 @@ StyledPopup { value: Weather.data.sunset } } + + // Footer: last refresh + StyledText { + Layout.alignment: Qt.AlignHCenter + text: Translation.tr("Last refresh: %1").arg(Weather.data.lastRefresh) + font { + weight: Font.Medium + pixelSize: Appearance.font.pixelSize.smaller + } + color: Appearance.colors.colOnSurfaceVariant + } } } diff --git a/dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml b/dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml index 6a5de6a7e..56a7f0574 100644 --- a/dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml +++ b/dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml @@ -1,15 +1,12 @@ +pragma ComponentBehavior: Bound +import QtQuick +import QtQuick.Layouts +import Quickshell import qs import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import Qt5Compat.GraphicalEffects -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import Quickshell -import Quickshell.Io -import Quickshell.Hyprland RowLayout { id: root @@ -92,6 +89,16 @@ RowLayout { } } } + + Keys.onPressed: event => { + if (event.key === Qt.Key_Tab) { + if (LauncherSearch.results.length === 0) return; + const tabbedText = LauncherSearch.results[0].name; + LauncherSearch.query = tabbedText; + searchInput.text = tabbedText; + event.accepted = true; + } + } } IconToolbarButton { diff --git a/dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml b/dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml index 6450ccef0..c99b930c1 100644 --- a/dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml @@ -1,15 +1,16 @@ +pragma ComponentBehavior: Bound + +import Qt.labs.synchronizer +import Qt5Compat.GraphicalEffects +import QtQuick +import QtQuick.Layouts +import Quickshell + import qs import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import Qt.labs.synchronizer -import Qt5Compat.GraphicalEffects -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import Quickshell -import Quickshell.Io Item { // Wrapper id: root @@ -205,12 +206,25 @@ Item { // Wrapper } delegate: SearchItem { + id: searchItem // The selectable item for each search result required property var modelData anchors.left: parent?.left anchors.right: parent?.right entry: modelData query: StringUtils.cleanOnePrefix(root.searchingText, [Config.options.search.prefix.action, Config.options.search.prefix.app, Config.options.search.prefix.clipboard, Config.options.search.prefix.emojis, Config.options.search.prefix.math, Config.options.search.prefix.shellCommand, Config.options.search.prefix.webSearch]) + + Keys.onPressed: event => { + if (event.key === Qt.Key_Tab) { + if (LauncherSearch.results.length === 0) + return; + const tabbedText = searchItem.modelData.name; + LauncherSearch.query = tabbedText; + searchBar.searchInput.text = tabbedText; + event.accepted = true; + root.focusSearchInput(); + } + } } } } diff --git a/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml b/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml index 23f7915ef..a2720605d 100644 --- a/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml +++ b/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml @@ -73,7 +73,7 @@ MouseArea { target: Wallpapers function onThumbnailGenerated(directory) { if (thumbnailImage.status !== Image.Error) return; - if (FileUtils.parentDirectory(thumbnailImage.sourcePath) !== directory) return; + if (FileUtils.parentDirectory(thumbnailImage.sourcePath) !== FileUtils.trimFileProtocol(directory)) return; thumbnailImage.source = ""; thumbnailImage.source = thumbnailImage.thumbnailPath; } diff --git a/dots/.config/quickshell/ii/modules/settings/QuickConfig.qml b/dots/.config/quickshell/ii/modules/settings/QuickConfig.qml index 8a31d7728..5964f4dff 100644 --- a/dots/.config/quickshell/ii/modules/settings/QuickConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/QuickConfig.qml @@ -141,7 +141,7 @@ ContentPage { key: "Ctrl" } KeyboardKey { - key: "󰖳" + key: Config.options.cheatsheet.superKey ?? "󰖳" } StyledText { Layout.alignment: Qt.AlignVCenter diff --git a/dots/.config/quickshell/ii/scripts/thumbnails/thumbgen-venv.sh b/dots/.config/quickshell/ii/scripts/thumbnails/thumbgen-venv.sh index 5b24f16f9..9b0d92385 100755 --- a/dots/.config/quickshell/ii/scripts/thumbnails/thumbgen-venv.sh +++ b/dots/.config/quickshell/ii/scripts/thumbnails/thumbgen-venv.sh @@ -3,5 +3,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate GIO_USE_VFS=local "$SCRIPT_DIR/thumbgen.py" "$@" +THUMBGEN_EXIT_CODE=$? deactivate +exit $THUMBGEN_EXIT_CODE diff --git a/dots/.config/quickshell/ii/services/Network.qml b/dots/.config/quickshell/ii/services/Network.qml index 69bd5337d..8c3e5a9d1 100644 --- a/dots/.config/quickshell/ii/services/Network.qml +++ b/dots/.config/quickshell/ii/services/Network.qml @@ -89,9 +89,10 @@ Singleton { network.askingPassword = false; changePasswordProc.exec({ "environment": { - "PASSWORD": password + "PASSWORD": password, + "SSID": network.ssid }, - "command": ["bash", "-c", `nmcli connection modify ${network.ssid} wifi-sec.psk "$PASSWORD"`] + "command": ["bash", "-c", 'nmcli connection modify "$SSID" wifi-sec.psk "$PASSWORD"'] }) } diff --git a/dots/.config/quickshell/ii/services/Weather.qml b/dots/.config/quickshell/ii/services/Weather.qml index a7bb8d5ce..c42c7cb8e 100644 --- a/dots/.config/quickshell/ii/services/Weather.qml +++ b/dots/.config/quickshell/ii/services/Weather.qml @@ -42,7 +42,8 @@ Singleton { visib: 0, press: 0, temp: 0, - tempFeelsLike: 0 + tempFeelsLike: 0, + lastRefresh: 0, }) function refineData(data) { @@ -75,6 +76,7 @@ Singleton { temp.temp += "°C"; temp.tempFeelsLike += "°C"; } + temp.lastRefresh = DateTime.time + " • " + DateTime.date; root.data = temp; }