this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Package fluxer refactor

roufpup fd065e8e 62464610

+46 -50
+2
hosts/work/hjem-rum/niri.nix
··· 1 1 { pkgs, ... }: 2 2 { 3 + # mode "2560x1440@144.002" 4 + 3 5 niri = { 4 6 enable = true; 5 7 spawn-at-startup = [
+12 -12
packages/fluxer/default.nix
··· 46 46 fetchFromGitHub { 47 47 owner = "fluxerapp"; 48 48 repo = "fluxer"; 49 - rev = "canary"; 50 - sha256 = "sha256-7en5pENPCP9g4Bm+WXEKcIVb1kf28H1KlPmeHkX9LNM="; 49 + rev = "refactor"; 50 + sha256 = "sha256-scjvBAZ2c3dBOD/GRjcWpEjScD/XpNEeIjs1Rdmy9yE="; 51 51 } 52 - }/fluxer_app"; 52 + }/fluxer_desktop"; 53 53 54 - # 55 - # Disclaimer, the screencast patch file is generated by me, but the actual code logic has been made assisted by Gemini LLM 56 - # 57 - patches = [ ../../patches/screencast.patch ]; 54 + patches = [ ../../patches/fluxer.patch ]; 58 55 59 56 nativeBuildInputs = [ 60 57 autoPatchelfHook ··· 69 66 pnpmDeps = fetchPnpmDeps { 70 67 inherit pname version src; 71 68 fetcherVersion = 3; 72 - hash = "sha256-zJTjNfNWMhQtEwY1lik2H9xMf4lJ6GLg6PShva7IDjs="; 69 + hash = "sha256-Rh84JplYrd9k4fslofQli4fRNKmFhosftUfYXKBKU4g="; 73 70 }; 74 71 75 72 pnpmInstallFlags = [ ··· 103 100 ]; 104 101 105 102 installPhase = '' 106 - export BUILD_CHANNEL="canary" 107 - pnpm run electron:compile 103 + pnpm run set-channel stable 104 + pnpm build 108 105 109 106 pnpm exec electron-builder --config electron-builder.config.cjs --linux \ 110 107 --dir \ 111 108 -c.electronDist=${electron_40}/libexec/electron \ 112 109 -c.electronVersion=${electron_40.version} \ 113 - -c.npmRebuild=false 110 + -c.npmRebuild=false \ 114 111 115 112 mkdir -p $out/share/fluxer 116 113 mkdir -p $out/bin 117 114 118 115 cp -r ./dist-electron/linux-unpacked/resources/* $out/share/fluxer 116 + 117 + ls -la ./dist-electron/linux-unpacked/fluxer_desktop 118 + ls -la ./dist-electron/linux-unpacked/resources 119 119 120 120 makeWrapper ${electron_40}/bin/electron $out/bin/fluxer \ 121 121 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \ ··· 135 135 ''} $out/share/applications/fluxer.desktop --subst-var out 136 136 137 137 mkdir -p $out/share/icons/hicolor/512x512/ 138 - cp $out/share/fluxer/512x512.png $out/share/icons/hicolor/512x512/fluxer.png 138 + cp build_resources/icons-stable/512x512.png $out/share/icons/hicolor/512x512/fluxer.png 139 139 ''; 140 140 }
+32
patches/fluxer.patch
··· 1 + diff --git a/electron-builder.config.cjs b/electron-builder.config.cjs 2 + index f8f8328..d15787b 100644 3 + --- a/electron-builder.config.cjs 4 + +++ b/electron-builder.config.cjs 5 + @@ -145,12 +145,7 @@ module.exports = { 6 + arch: ['x64', 'arm64'], 7 + }, 8 + ], 9 + - desktop: { 10 + - Name: productName, 11 + - Comment: 'Instant messaging and VoIP application', 12 + - Categories: 'Network;InstantMessaging;', 13 + - StartupWMClass: isCanary ? 'fluxer-canary' : 'fluxer', 14 + - }, 15 + + desktop: null, 16 + }, 17 + 18 + deb: { 19 + diff --git a/scripts/build.mjs b/scripts/build.mjs 20 + index 4ee9ac8..1c959e4 100644 21 + --- a/scripts/build.mjs 22 + +++ b/scripts/build.mjs 23 + @@ -82,9 +82,6 @@ async function buildMain() { 24 + define: { 25 + 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), 26 + }, 27 + - banner: { 28 + - js: `import { createRequire } from 'module'; const require = createRequire(import.meta.url);`, 29 + - }, 30 + }); 31 + 32 + console.log('Main process build complete.');
-38
patches/screencast.patch
··· 1 - diff --git a/src-electron/main/window.ts b/src-electron/main/window.ts 2 - index 284db57..9b0bc5f 100644 3 - --- a/src-electron/main/window.ts 4 - +++ b/src-electron/main/window.ts 5 - @@ -102,6 +102,28 @@ let displayMediaRequestCounter = 0; 6 - 7 - function setupDisplayMediaHandler(session: Electron.Session, webContents: Electron.WebContents): void { 8 - session.setDisplayMediaRequestHandler((request, callback) => { 9 - + const isWayland = process.platform === 'linux' && 10 - + (process.env.WAYLAND_DISPLAY || process.env.XDG_SESSION_TYPE === 'wayland'); 11 - + 12 - + if (isWayland) { 13 - + try { 14 - + desktopCapturer.getSources({ types: ['screen', 'window'] }).then((sources) => { 15 - + const selected_source = sources[0]; 16 - + if (selected_source) { 17 - + log.info('[DisplayMedia] Wayland native portal source selected'); 18 - + callback({ video: selected_source } as unknown as Electron.Streams); 19 - + } else { 20 - + log.info('[DisplayMedia] Wayland native portal cancelled by user'); 21 - + callback(null as unknown as Electron.Streams); 22 - + } 23 - + }) 24 - + } catch (e){ 25 - + log.error('[DisplayMedia] Wayland source capture failed:', e); 26 - + callback(null as unknown as Electron.Streams); 27 - + } 28 - + return; 29 - + } 30 - + 31 - const requestId = `display-media-${++displayMediaRequestCounter}`; 32 - const requestCallback = (streams: Electron.Streams | null) => callback(streams as Electron.Streams); 33 - pendingDisplayMediaRequests.set(requestId, {callback: requestCallback}); 34 - @@ -608,3 +630,4 @@ export function hideWindow(): void { 35 - export function setQuitting(quitting: boolean): void { 36 - isQuitting = quitting; 37 - } 38 - +