Skip to content

Repository files navigation

FrameFit

FrameFit — תוכנה ל-Windows שמתאימה את שולחן העבודה לשטח המסך שגלוי בפועל, כאשר מסגרת (דקורטיבית, עץ, מתקן תצוגה) מכסה חלק מהשוליים — גם בצורה לא-סימטרית.

התוכנה מאפשרת להגדיר לכל צד בנפרד כמה פיקסלים מוסתרים, ולראות בזמן אמת כיצד השוליים מסתדרים, כך שמסך-מלא, מקסם, סרגל המשימות וסמן העכבר יישארו בתוך האזור הגלוי בלבד.

הורדה

FrameFit v0.1.4 — שני קבצים לבחירה, לשניהם אין צורך להתקין .NET ואין צורך בהרשאות מנהל.

קובץ למי זה מתאים
FrameFit-v0.1.4-x64.msi מומלץ. מתקין רגיל: לחיצה כפולה, האשף מתקין, נוצר קיצור דרך בתפריט התחל, והתוכנה מופיעה ב"הוספה או הסרה של תוכניות".
FrameFit-v0.1.4-win-x64-portable.exe גרסה ניידת — קובץ הרצה אחד בודד, בלי התקנה ובלי תיקייה.
  1. מורידים את הקובץ המתאים.
  2. מריצים אותו (במתקין — מעקב אחרי האשף).
  3. אם מופיעה אזהרת SmartScreen — היא נובעת מכך שהקובץ אינו חתום דיגיטלית: "מידע נוסף" → "הפעל בכל זאת". אפשר לאמת את תקינות ההורדה מול קובץ ה-.sha256 המצורף.

המתקין מותקן עבור המשתמש הנוכחי בלבד אל %LOCALAPPDATA%\FrameFit, ולכן אינו דורש הרשאות מנהל. הסרה מסירה את התוכנה ואת קיצור הדרך, אך משאירה את ההגדרות ב-%APPDATA%\FrameFit.

לפני התקנה בעמדה פעילה: שומר מסך-המלא טרם נבדק מול תוכן אמיתי (דפדפן, מצגות, נגני מדיה). ראו "מגבלות מוצהרות" למטה ואת docs/TASKS.md.

סטטוס

🟢 עובד ומפורסם. 70 בדיקות יחידה ו-16 בדיקות עצמיות עוברות. המתקין עבר בדיקת קבלה מלאה — התקנה, קיצור דרך, הרצת הקובץ המותקן (10/10), והסרה נקייה — והקובץ הניידי שפורסם אומת אף הוא בהרצה. פרטים מלאים ב-docs/TASKS.md.

מה חדש ב-0.1.4: תיקון הרצועה המתה באזור הגלוי (קיזוז ההקצאה של סרגל המשימות), ומגבלה שנמדדה ותועדה — אי אפשר להזיז את סרגל המשימות ב-Windows 11: ה-Shell מחזיר אותו לקצה המסך מיד, וקריאת ההזזה מדווחת על הצלחה בכל זאת (ראו DECISIONS.md). לכן התוכנה אינה מנסה להזיז אותו, וקיזוז ההקצאה שלו מבטיח שהתוכן ממלא את כל האזור הגלוי. הבדיקה העצמית מודדת מעתה את המציאות מהמערכת ולא את התוכנית — כך תקלה כמו "דיווח עיגון שלא קרה" לא תעבור שוב בשקט.

מסמך תוכן
docs/SPEC.md האפיון — מטרות, דרישות, ממשק, מגבלות, קריטריוני הצלחה
docs/ARCHITECTURE.md הארכיטקטורה הטכנית ורכיבי המערכת
docs/DECISIONS.md החלטות תכנוניות משמעותיות והנימוקים
docs/TASKS.md תוכנית העבודה ומצב המימוש בפועל
docs/AGENT_LOG.md יומן העבודה
docs/CHANGELOG.md היסטוריית גרסאות

איך זה עובד

במסך מחשב רגיל אין דרך לגרום למנוע התצוגה של Windows לחתוך את שולחן העבודה באופן לא-סימטרי. לכן FrameFit אוכף את האזור הגלוי בארבע שכבות בלתי-תלויות:

שכבה מה היא עושה מה היא מכסה
שטח עבודה (AppBar) מצמצם את rcWork של Windows בהתאם לשוליים, בדיוק עד גבול האזור הגלוי מקסם, Snap, חלונות אחרים
סרגל המשימות אינו נוגע בסרגל כברירת מחדל (אפשר לבחור הסתרה בממשק). מגבלה נמדדת: Windows 11 אינו מתיר להזיז את הסרגל שהשוליים המוסתרים יהיו שחורים, ושלא ייגזלו פיקסלים גלויים
שומר מסך-מלא מזהה חלון שמכסה את כל המסך ומתאים אותו לאזור הגלוי דפדפן ב-F11, מצגות, שקופיות, נגני מדיה
שכבת כיסוי ארבע רצועות שחורות תמיד-למעלה, עיוורות לקלט שהשוליים ייראו שחורים וכבויים
חסימת עכבר ClipCursor לאזור הגלוי שהסמן לא ייכנס לאזור המוסתר

בנייה והרצה

# דרוש .NET SDK 10
dotnet build FrameFit.slnx

# הרצת אפליקציית הניהול
dotnet run --project src/FrameFit.App

# בדיקות יחידה
dotnet test tests/FrameFit.Core.Tests

# בדיקה עצמית מלאה של האינטראפ עם Windows
dotnet run --project src/FrameFit.App -- --self-test

בניית המתקין

‏WiX נשמר ככלי ברמת הפרויקט (.config/dotnet-tools.json) ואינו מותקן על המחשב:

dotnet tool restore

dotnet publish src/FrameFit.App/FrameFit.App.csproj \
  -c Release -r win-x64 --self-contained \
  -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
  -p:EnableCompressionInSingleFile=true -p:DebugType=none -o publish/single

dotnet build installer/FrameFit.wixproj -c Release

# בדיקת קבלה: התקנה, אימות, הרצת הקובץ שהותקן, והסרה
powershell -File installer/test-install.ps1 -Msi installer/bin/x64/Release/FrameFit-v0.1.2-x64.msi

אפשרויות נוספות:

דגל משמעות
--self-test מריץ בדיקות אינטראפ ומחזיר קוד יציאה (0 = הכול תקין)
--self-test --no-flash בלי להציג את שכבת הכיסוי למשך כשנייה
--self-test --no-workarea-probe בלי לבדוק את צמצום אזור העבודה
--self-test --out=<קובץ> שמירת פלט הבדיקה לקובץ
--tray עלייה לסמל בסרגל המערכת בלי לפתוח חלון

בטיחות

התוכנה משתלטת על אזור העבודה, על סמן העכבר ועל שכבת התצוגה — ולכן כל שינוי הפיך:

  • מקש חירום גלובלי: Ctrl + Alt + Shift + F12 — מחזיר את Windows למצב נקי בכל רגע, גם כשהעכבר חסום לאזור הגלוי. זה גם המסלול שמחזיר את סרגל המשימות למקומו.
  • סרגל המשימות מוחזר תמיד — ביציאה מהתוכנה, ב"שחזר הכול", במקש המילוט, ואם התהליך נהרג — בעלייה הבאה של התוכנה (נכתב קובץ סימון, והוא מוחזר לפני כל פעולה אחרת).
  • "שחזר הכול" גם בסרגל המערכת וגם בחלון הניהול.
  • תצוגה מקדימה מתבטלת אוטומטית אחרי 20 שניות אם לא אושרה.
  • קובץ הגדרות פגום ⇒ לא מוחלת שום הגדרה, ומתחילים במצב כבוי.

מגבלות מוצהרות

  • מסך-מלא בלעדי של DirectX (משחקים) ומסך ההתחברות של Windows אינם מכוסים — מחוץ לתחום השימוש שהוגדר (ראו docs/SPEC.md סעיף 11).
  • תוכנית שמחזירה את עצמה בכוח למסך-מלא תזוהה, והאכיפה תפסיק להילחם בה לאחר שלושה ניסיונות — ותדווח על כך באבחון.
  • ClipCursor הוא ברמת הדסקטופ כל עוד התהליך פעיל; Windows משחרר אותו עם סיום התהליך.
  • אי אפשר להזיז את סרגל המשימות (נמדד ב-Windows 11): אם השוליים המוסתרים מכסים את מקומו הטבעי של הסרגל, אי אפשר להוציא אותו אל האזור הגלוי. נשקלה והוחלט שלא לבנות סרגל חלופי של FrameFit; הסרגל נשאר במקומו (וכן — סמל FrameFit שבו אינו שמיש במצב הזה).
  • כשהאפשרות "הסתרת סרגל המשימות" פעילה, סמל FrameFit בסרגל המערכת מוסתר אף הוא. לעצירה ולשחזור אפשר להשתמש בחלון הניהול או במקש המילוט.
  • שוליים קטנים מגובה סרגל המשימות (ברירת מחדל: 48 פיקסלים): Windows אינו מוותר על ההקצאה של הסרגל גם כשהוא מוסתר, ולכן אותם פיקסלים באזור הגלוי נשארים תפוסים. FrameFit מקזז מה שאפשר ומדווח על ההפרש כאזהרה. הפתרון: שוליים גדולים יותר באותו צד, או הסתרת הסרגל.

טכנולוגיה

C# / .NET 10, אפליקציית WPF (net10.0-windows). כל האינטראפ עם Win32 מרוכז בקובץ הצהרות אחד (Interop/Native.cs), וכל הלוגיקה הגיאומטרית נטולת תלות בפלטפורמה ונבדקת ביחידה.

בנייה ואריזה: dotnet publish -c Release -r win-x64 --self-contained לקובץ בודד, ו-MSI דרך WiX 5 (dotnet tool restore ואז בניית installer/FrameFit.wixproj).

רישיון

MIT — שימוש חופשי, כולל שינוי והפצה. הזכויות שמורות ל-© 2026 Lev-Good, והן מיוחסות גם בקובץ ההרצה עצמו (לשונית "פרטים" של FrameFit.exe).

התנאי היחיד הוא שימור הודעת הזכויות: מי שמקבל עותק צריך לקבל גם את הודעת ה-MIT.

התוצר כולל רכיבי צד-שלישי — ‎.NET 10 (MIT) ו-WiX 5 (MS-RL) — שהרישיונות שלהם כלולים ב-THIRD-PARTY-NOTICES.md.

זו אינה הגנה בלעדית: MIT מתירה לכל אדם להשתמש, לשנות ולהפיץ את FrameFit, לרבות במוצר מסחרי, כל עוד הודעת הזכויות נשמרת. הנימוקים להחלטה ב- docs/DECISIONS.md.

About

Fit the Windows desktop to the screen area that is actually visible — per-side margins (asymmetric supported), live preview, black dead margins, and fullscreen windows refitted. Hebrew UI, .NET 10 / WPF.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages