feat: Implemented AppImage building
This commit is contained in:
parent
d8f471dadc
commit
6a288f765e
38 changed files with 1036 additions and 147 deletions
BIN
src/mainview/assets/256x256.png
(Stored with Git LFS)
Normal file
BIN
src/mainview/assets/256x256.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
src/mainview/assets/favicon.ico
(Stored with Git LFS)
BIN
src/mainview/assets/favicon.ico
(Stored with Git LFS)
Binary file not shown.
BIN
src/mainview/assets/icon.svg
(Stored with Git LFS)
Normal file
BIN
src/mainview/assets/icon.svg
(Stored with Git LFS)
Normal file
Binary file not shown.
|
|
@ -71,7 +71,8 @@ export function AnimatedBackground (data: {
|
|||
backgroundSize: '100%',
|
||||
backgroundPositionY: 'bottom',
|
||||
backgroundPositionX: 'center',
|
||||
backgroundColor: "var(--color-base-300)",
|
||||
backgroundBlendMode: 'soft-light',
|
||||
backgroundColor: "var(--color-base-100)",
|
||||
} : {}}
|
||||
>
|
||||
{!data.scrolling && <div className='absolute top-0 left-0 overflow-hidden w-full h-full'>
|
||||
|
|
@ -88,6 +89,6 @@ export function AnimatedBackground (data: {
|
|||
</div>}
|
||||
{data.children}
|
||||
</div>
|
||||
</AnimatedBackgroundContext>
|
||||
</AnimatedBackgroundContext >
|
||||
);
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ export default function GameCard (data: GameCardParams)
|
|||
onEnterPress: () => data.onAction?.(),
|
||||
onBlur: () => data.onBlur?.(data.id)
|
||||
});
|
||||
const { isPointer } = useActiveControl();
|
||||
const { isMouse, isPointer } = useActiveControl();
|
||||
|
||||
return (
|
||||
<li
|
||||
|
|
@ -69,7 +69,7 @@ export default function GameCard (data: GameCardParams)
|
|||
"overflow-hidden transition-all duration-200 drop-shadow-lg cursor-pointer",
|
||||
classNames({
|
||||
"focused animate-wiggle ring-7 bg-base-content text-base-300 drop-shadow-xl drop-shadow-black/30 scale-102 z-10": focused && !isPointer,
|
||||
"group hover:focused hover:animate-wiggle sm:hover:ring-4 md:hover:ring-7 hover:bg-base-content hover:text-base-300 hover:drop-shadow-xl hover:drop-shadow-black/30 hover:scale-102 hover:z-10": isPointer,
|
||||
"group hover:focused hover:animate-wiggle sm:hover:ring-4 md:hover:ring-7 hover:bg-base-content hover:text-base-300 hover:drop-shadow-xl hover:drop-shadow-black/30 hover:scale-102 hover:z-10": isMouse,
|
||||
"h-(--game-card-height)": typeof data.preview === "string"
|
||||
}),
|
||||
data.className
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ export function GameList (data: GameListParams)
|
|||
const previewUrl = localStorage.getItem('background-blur') !== "false" ? coverUrl : screenshotUrl;
|
||||
previewUrl.searchParams.delete('ts');
|
||||
data.setBackground?.(previewUrl.href);
|
||||
queryClient.prefetchQuery(gameQuery(source ?? id.source, sourceId ?? id.id));
|
||||
//queryClient.prefetchQuery(gameQuery(source ?? id.source, sourceId ?? id.id));
|
||||
} catch
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ export default function ConsoleHomeUI ()
|
|||
headerButtons.push({ id: "search", icon: <Search /> }, { id: "power-button", icon: <Power />, external: true, action: () => closeMutation.mutate() });
|
||||
|
||||
return (
|
||||
<AnimatedBackground animated ref={ref} backgroundKey="home-background" className="grid grid-cols-3 sm:landscape:grid-rows-[3rem_minmax(var(--game-card-height-safe),1fr)_4rem] md:landscape:grid-rows-[5rem_4rem_minmax(var(--game-card-height-safe),1fr)_6rem_6rem] gap-1 portrait:grid-rows-[3rem_4rem_minmax(var(--game-card-height-safe),1fr)] max-h-screen overflow-hidden">
|
||||
<AnimatedBackground animated ref={ref} backgroundKey="home-background" className="grid grid-cols-3 sm:landscape:grid-rows-[3rem_minmax(var(--game-card-height-safe),1fr)_4rem] md:landscape:grid-rows-[5rem_4rem_minmax(var(--game-card-height-safe),1fr)_6rem_6rem] gap-1 portrait:grid-rows-[3rem_4rem_minmax(var(--game-card-height-safe),1fr)] max-h-screen overflow-clip">
|
||||
<FocusContext.Provider value={focusKey}>
|
||||
<div className="sm:landscape:hidden md:landscape:inline sm:portrait:col-start-1 md:inline flex col-span-1 md:pl-2 md:pt-2">
|
||||
<HeaderAccounts />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { rommApi, systemApi } from '@/mainview/scripts/clientApi';
|
||||
import { systemApi } from '@/mainview/scripts/clientApi';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { createFileRoute } from '@tanstack/react-router';
|
||||
import prettyBytes from 'pretty-bytes';
|
||||
|
||||
export const Route = createFileRoute('/settings/about')({
|
||||
component: RouteComponent,
|
||||
|
|
@ -51,6 +50,10 @@ function RouteComponent ()
|
|||
<th>Machine</th>
|
||||
<td>{systemInfo?.data?.machine}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Source</th>
|
||||
<td>{systemInfo?.data?.source}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Steam Deck</th>
|
||||
<td>{systemInfo?.data?.steamDeck ?? 'false'}</td>
|
||||
|
|
|
|||
|
|
@ -62,12 +62,12 @@ window.addEventListener('touchcancel', handleTouchEnd);
|
|||
window.addEventListener("gamepadconnected", handleLoop);
|
||||
window.addEventListener('mousemove', handleMouseMove);
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
import.meta.hot.dispose(() => window.removeEventListener('gamepaddisconnected', handleLoop));
|
||||
import.meta.hot.dispose(() => window.removeEventListener('mousemove', handleMouseMove));
|
||||
import.meta.hot.dispose(() => window.removeEventListener('keydown', handleKeyDown));
|
||||
import.meta.hot.dispose(() => window.removeEventListener('touchstart', handleTouchStart));
|
||||
import.meta.hot.dispose(() => window.removeEventListener('touchend', handleTouchEnd));
|
||||
import.meta.hot.dispose(() => window.removeEventListener('touchcancel', handleTouchEnd));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('gamepaddisconnected', handleLoop));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('mousemove', handleMouseMove));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('keydown', handleKeyDown));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('touchstart', handleTouchStart));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('touchend', handleTouchEnd));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('touchcancel', handleTouchEnd));
|
||||
|
||||
export default function useActiveControl ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ const shortcutChangeDispatcher = setInterval(() =>
|
|||
window.dispatchEvent(new Event('shortcutsChanged'));
|
||||
isDirty = false;
|
||||
}, 100);
|
||||
import.meta.hot.dispose(() => clearInterval(shortcutChangeDispatcher));
|
||||
import.meta.hot?.dispose(() => clearInterval(shortcutChangeDispatcher));
|
||||
|
||||
function markDirtyThrottled ()
|
||||
{
|
||||
|
|
@ -50,7 +50,7 @@ function markDirtyThrottled ()
|
|||
}
|
||||
|
||||
window.addEventListener('focuschanged', markDirtyThrottled);
|
||||
import.meta.hot.dispose(() => window.removeEventListener('focuschanged', markDirtyThrottled));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('focuschanged', markDirtyThrottled));
|
||||
|
||||
export function useShortcutContext ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ const handleResize = () =>
|
|||
settingsApi.api.settings({ id: 'windowSize' }).post({ value: { width: window.innerWidth, height: window.innerHeight } });
|
||||
};
|
||||
window.addEventListener("resize", handleResize);
|
||||
import.meta.hot.dispose(() => window.removeEventListener('resize', handleResize));
|
||||
import.meta.hot?.dispose(() => window.removeEventListener('resize', handleResize));
|
||||
|
||||
let lastWindowPosX: number = window.screenX;
|
||||
let lastWindowPosY: number = window.screenY;
|
||||
|
|
@ -19,4 +19,4 @@ var screenPositionInternal: NodeJS.Timeout = setInterval(() =>
|
|||
lastWindowPosX = window.screenX;
|
||||
lastWindowPosY = window.screenY;
|
||||
}, 1000);
|
||||
import.meta.hot.dispose(() => clearInterval(screenPositionInternal));
|
||||
import.meta.hot?.dispose(() => clearInterval(screenPositionInternal));
|
||||
Loading…
Add table
Add a link
Reference in a new issue