Files
deb-lite-xl/debian/patches/0001-first-run-config-vscode-dark.patch
T
vhaudiquet a693cb645c Ship out-of-the-box VSCode-style config and sharp rendering defaults
- quilt patch: first-run user init.lua template now writes a tuned
  default config (Dark Modern theme, JetBrains Mono with grayscale AA,
  line-height/indent guides, compact treeview with hover highlight)
- new theme module usr/share/lite-xl/colors/vscode_dark.lua
- default config in /etc/skel/.config/lite-xl/ for new users
- desktop: launch via SDL software renderer with LITE_SCALE=1.5 so text
  renders 1:1 on fractional-scaled Wayland outputs and avoids panfrost
  GPU artifacts
- depend on fonts-jetbrains-mono for the default code font
2026-09-16 21:52:46 +02:00

151 lines
6.0 KiB
Diff

--- a/data/core/init.lua
+++ b/data/core/init.lua
@@ -475,79 +475,79 @@
local init_file = io.open(init_filename, "w")
if not init_file then error("cannot create file: \"" .. init_filename .. "\"") end
init_file:write([[
--- put user settings here
--- this module will be loaded after everything else when the application starts
--- it will be automatically reloaded when saved
+-- Default configuration shipped with the Lite XL package (VSCode-style dark
+-- theme). This file is written to USERDIR/init.lua on first run only; the
+-- system copy lives in /etc/skel/.config/lite-xl/init.lua.
+-- Lite XL default configuration (shipped via /etc/skel or the first-run
+-- template). This file is yours to edit; it is reloaded automatically on save.
+-- It gives the editor a VSCode-style dark look out of the box.
local core = require "core"
-local keymap = require "core.keymap"
+local common = require "core.common"
local config = require "core.config"
local style = require "core.style"
------------------------------- Themes ----------------------------------------
-
--- light theme:
--- core.reload_module("colors.summer")
-
---------------------------- Key bindings -------------------------------------
-
--- key binding:
--- keymap.add { ["ctrl+escape"] = "core:quit" }
-
--- pass 'true' for second parameter to overwrite an existing binding
--- keymap.add({ ["ctrl+pageup"] = "root:switch-to-previous-tab" }, true)
--- keymap.add({ ["ctrl+pagedown"] = "root:switch-to-next-tab" }, true)
-
-------------------------------- Fonts ----------------------------------------
-
--- customize fonts:
--- style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 14 * SCALE)
--- style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 14 * SCALE)
---
--- DATADIR is the location of the installed Lite XL Lua code, default color
--- schemes and fonts.
--- USERDIR is the location of the Lite XL configuration directory.
---
--- font names used by lite:
--- style.font : user interface
--- style.big_font : big text in welcome screen
--- style.icon_font : icons
--- style.icon_big_font : toolbar icons
--- style.code_font : code
---
--- the function to load the font accept a 3rd optional argument like:
---
--- {antialiasing="grayscale", hinting="full", bold=true, italic=true, underline=true, smoothing=true, strikethrough=true}
---
--- possible values are:
--- antialiasing: grayscale, subpixel
--- hinting: none, slight, full
--- bold: true, false
--- italic: true, false
--- underline: true, false
--- smoothing: true, false
--- strikethrough: true, false
-
------------------------------- Plugins ----------------------------------------
-
--- disable plugin loading setting config entries:
-
--- disable plugin detectindent, otherwise it is enabled by default:
--- config.plugins.detectindent = false
-
----------------------------- Miscellaneous -------------------------------------
-
--- modify list of files to ignore when indexing the project:
--- config.ignore_files = {
--- -- folders
--- "^%.svn/", "^%.git/", "^%.hg/", "^CVS/", "^%.Trash/", "^%.Trash%-.*/",
--- "^node_modules/", "^%.cache/", "^__pycache__/",
--- -- files
--- "%.pyc$", "%.pyo$", "%.exe$", "%.dll$", "%.obj$", "%.o$",
--- "%.a$", "%.lib$", "%.so$", "%.dylib$", "%.ncb$", "%.sdf$",
--- "%.suo$", "%.pdb$", "%.idb$", "%.class$", "%.psd$", "%.db$",
--- "^desktop%.ini$", "^%.DS_Store$", "^%.directory$",
--- }
+------------------------------ Appearance -------------------------------------
+-- VSCode "Dark Modern" theme (shipped in /usr/share/lite-xl/colors).
+core.reload_module("colors.vscode_dark")
+
+-- Sharp text: grayscale antialiasing with light autohinting renders crisper
+-- than the defaults on high-DPI panels.
+local font_opts = { antialiasing = "grayscale", hinting = "slight", smoothing = true }
+
+-- Bump these for a bigger/smaller UI; ctrl+wheel also zooms live.
+local UI_FONT_SIZE = 15
+local CODE_FONT_SIZE = 16
+
+style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf",
+ UI_FONT_SIZE * SCALE, font_opts)
+style.big_font = style.font:copy(46 * SCALE)
+style.code_font = renderer.font.load(
+ "/usr/share/fonts/truetype/jetbrains-mono/JetBrainsMono-Regular.ttf",
+ CODE_FONT_SIZE * SCALE, font_opts)
+
+------------------------------ Behavior ---------------------------------------
+
+config.line_height = 1.3 -- airy lines, like VSCode's default
+config.indent_size = 4
+config.plugins.lineguide = true -- indent guides, like VSCode
+
+------------------------------ Treeview sidebar -------------------------------
+-- Tighter rows and VSCode-style hover/selection highlight. Method overrides so
+-- the shared style.padding used by the editor margins is untouched.
+
+local TreeView = require "plugins.treeview"
+
+local tv_row_pad = common.round(3 * SCALE)
+function TreeView:get_item_height()
+ return style.font:get_height() + tv_row_pad
+end
+
+local tv_base_indent = common.round(8 * SCALE)
+local tv_level_indent = common.round(10 * SCALE)
+function TreeView:draw_item(item, active, hovered, x, y, w, h)
+ self:draw_item_background(item, active, hovered, x, y, w, h)
+ x = x + tv_base_indent + item.depth * tv_level_indent
+ x = x + self:draw_item_chevron(item, active, hovered, x, y, w, h)
+ self:draw_item_body(item, active, hovered, x, y, w, h)
+end
+
+function TreeView:get_item_text(item, active, hovered)
+ local color = (active or hovered)
+ and (style.treeview_text_active or style.accent)
+ or (style.treeview_text or style.text)
+ return item.name, style.font, color
+end
+
+function TreeView:draw_item_background(item, active, hovered, x, y, w, h)
+ if hovered then
+ local c = { table.unpack(style.treeview_hover_bg or style.line_highlight) }
+ c[4] = 160
+ renderer.draw_rect(x, y, w, h, c)
+ elseif active then
+ renderer.draw_rect(x, y, w, h, style.treeview_active_bg or style.line_highlight)
+ end
+end
]])
init_file:close()